delete

这个你放心,没有实体的系统是不会进入update执行的。

问题如果实体数量不可控的话,那update耗时是不可控的。
我司已有一个项目动不动就搞update的,结果就是需求越做fps越低,目前已无法优化,因为逻辑交织在update里了,要优化基本就是重做了。
目前后续需求老老实实不碰update

update还是需要细心照顾下的,用好了可以稳定帧率,弄不好就会产生额外消耗
一般UI交互的话用个MVVM的库就可以了,战斗逻辑我喜欢用ECS做

不好改,那就是逻辑耦合太重了。

嗯,ecs只能做简单点的ui交互,比如更新下金钱数值之类的。
谈到额外消耗,对每个System的update做个执行时长统计,也是比较方便能定位哪里的代码有性能问题。

然而,
做游戏并不是一个人就做的了的。
一个前端团队起码好几个人,
我现在已经不再对所有人的水平都持乐观态度,总有人会反复搞些低端错误出来。
所以直接规范文档直接要求,不允许写update,如果要写,拿出来大家商量看是否有必要动update。
经历过一个项目,写update的地方不超过2个,其中一个还是用于辅助调试做Graphics的,另外一个是camera。
现在fps异常的稳定60fps。
项目纯代码总大小打包出来是6MB,包括裁剪后的引擎代码。
对了,那个搞update的项目类似规模,现在勉强30fps(因为低于30fps直接被玩家喷了,这是最低线了)

1赞

学习了:+1::+1:

我们也不用update。其实别说update了,我们连cccomponent都不用:grinning:

ecs适合大型高性能游戏项目,普通项目还是别用了吧有点复杂。 战斗,场景等模块用组件模式更适合,ui公认的oop最适合了。

不知道你所谓的复杂是指哪里复杂。

ec和ecs区别还是挺大的。

老哥 出篇详细点的教程呗

那你期望的什么样才算是详细点的。

兄弟,能留下QQ或微信么?我正在用你的框架,有些问题想请教。

私信你了。

:joy: 好吧 好像 我得先把ts 多深入学习下,很多语法 不熟悉 哎…

也给我个联系方式 让我学习下呗

私信了。。

ECS要求在内存中的数据是平坦结构且最好连续, 想知道JS这种动态语言能做到这点吗?
JS生成的物件没办法确保在内存中的位置, 并且JS物件本身属于Hash Table
常见实作中Table的空间都是系统配置的, 这更难保证内存的连续性…:sweat:

1赞

没考虑这些,只是在逻辑上实现ecs。