A闪的 BLOG 技术与人文
为了编写省事一些,后文中都使用
ecs
小写来进行描述。
经过几个项目的打磨,对ecs架构有一些初步的经验,这里做简单记录。
ecs 适合游戏中的核心玩法部分,如果你想将整个游戏全部都移到ecs系统中,是不理想的实现方式。而在游戏类型方面,诸如挂机类型的游戏,无法发挥ecs的特长。应该在立项时,针对核心玩法的特性做判断,是否采用ecs。
在ecs系统中,能够发挥最大的威力点在于多线程操作,因为数据的离散性,多个system运行于不同线程中。可以最大化的提高性能。
ecs使用时,应更加偏向于核心玩法逻辑层。你的逻辑应该采用组合方式实现,而非传统的继承。
在框架选择方面,unity 官方的ecs 框架在本文编写时仍然处于preview阶段,建议其稳定版发布后使用。开源框架中属Entitas
最为流行。因最后的正式版发布日期在2019年2月。建议多关注项目的更新,如果有修改需求,还是要fork一份自己的git仓。
关于组件的粒度
以系统功能和逻辑算法划分最为合理。此处需要注意的是,如果粒度过大,那么将失去ecs组合的灵活度,如果粒度过小,则会导致system数量爆炸,同时业务复杂度提升。