ECS的性能提升主要是CPU高速缓存命中率?ts/js感觉体现不出来这点
解耦是重点
难道不是大量对象性能问题才是重点,重点不是解耦
并不是啊,js上的缓存命中没有了
最主要的还是放弃继承链,组合的方式实现
组合不是非得数据驱动啊 ,oop不是也能组合,少继承
继承和组合这个这里不讨论,每种都有自己的应用场景,也都有自己的优势
组件化开发一样解耦,解耦的模式太多了。
ECS 就是组件化开发,核心在于它还多了 S,这个 S 本质是功能切片。一个功能,通常对应一个 S。加功能就是加 S,多简单。
特性很多,大量对象性能是其中一个,但解耦也是一个重要的点。我现在就用老宫的 ECS 。主要关注点就是功能解耦。
目前在做一个小项目也是采用ecs架构 看贴主渲染也用的ecs 性能会比直接播放动画什么的好吗 本人新手不是很懂
渲染跟这个无关
这只是一种数据和逻辑组织的方式
组件 耦合度低,模块独立
ecs 耦合度极低,数据逻辑分离
继承的概念是 is-A
组合的概念是 has-A
ecs概念就是数据+系统处理
我搞的个C++游戏引擎也用了ECS,不过只在底层才严格遵守。
顶层还是用传统的组件化,构建节点树、管理节点/组件生命周期。
顶层严格遵守ECS规范,可不太好用,当然你们用ts/js不用考虑这些
好的 谢谢 我以为是重新写渲染方式 然后播放动画什么的
这东西看个人喜好
都有自己存在的理由,没有好坏之分
我也只是分享一下自己使用上的感受
跟楼主发的标题和文章理解的差不多, 用ecs并不是说为了他带来的一点性能 模块化 和 高复用高解耦才是重点, 特别是在多人开发一个人写一个组件一个实体 甚至也可以两个人写一个实体 都不会起太多的干扰, 新项目要有直接把一个实体copy过来或者某一个组件copy过来, 不会像传统那种牵扯太多 但是小项目还是没必要 这套架构目前我能感受他不是万金油, 虽然在某一点某一种游戏类型用这套架构比常规继承oop模式好 但是有一些游戏类型不适合 强行用还容易变成难维护 过于抽象的一种东西, 只会常规继承oop完全没问题 但是只会ecs就有问题了
借楼层同问,楼主你这个ecs是不是只是程序员写着爽,实际对性能没提升?
不像unity dots实现的ECS是层主说的CPU高速缓存命中?