看到不少ecs系列文章,支持和反对大概五五开。
支持者:确实能解决一些问题(说法不同)
反对者:1.js不支持cup缓存不能带来性能上的飞跃。2.有违面向对象思想增加开发复杂度。有害无益。
希望各路神仙打一架,让我等凡夫俗子开开眼
啥是ECS啊。解释一下,让我也开开眼
< _ <大家用得开心就行了嘛,又没有侵犯谁的利益。多多学习,技多不压身。
各有看法吧,对数据重用依赖很大建议还是不要用
肯定是支持你的,毕竟我不生产代码只做代码的搬运工。建议你发布框架的时候,说明一下具体是解决了什么问题,比如提升开发效率,或者解决某些情境下的性能问题,最好能和同类有个对比,方便我们搬运(理不直气也壮)。
我的锅。
以我自己的理解来说,ecs是对面向对象开发的一种反思吧,网上大多文章都说因为继承方式会让子类继承很多用不到的数据和方法,而ecs是把数据(属性)和方法分离开来,有什么数据就有什么方法去处理这些数据。当然这只是理想情况,实际开发中完全脱离面向对象开发还是很困难的,也许是开始学编程的时候就是从面向对象开始学的吧。因为数据和方法分离开了,那么大批相同的数据可以分布在一块紧密的内存上,这样方便cpu缓存,提高运行效率。这块也是争议最大的,论坛里面大多数喷ecs的因为js不好支持cpu缓存。所以,论坛上大部分ecs框架都是对数据和方法的分离的一种架构模式。要做到底层cpu缓存,我的理解还是的官方自己来做。
一些大佬文章:
浅谈《守望先锋》中的 ECS 构架
程序丨暴雪Tim Ford:《守望先锋》架构设计与网络同步
《守望先锋》网络脚本化的武器和技能系统
理解 组件-实体-系统 (ECS \CES)游戏编程模型
ecs这个架构其实面向数据编程的时候才能发挥大用,但js基本无法做到这块,因为数据不是栈块,而是都是堆的。
但你还是可以好好学习ecs把数据,逻辑,实例分开这个编程思想,甚至你直接用ecs架构来编程也可以的。就当类似MVC这样的架构来用咯。
所以最后的结论就是,想用就用,不想用就别用。你的老板可不会管你用没用ecs,只会让你赶紧写完代码提包赚钱。