云风 在 《ECS 中的消息发布订阅机制》中提到 了他在ECS架构下实现的一套消息订阅发布机制以及问题处理。
我简单谈谈我的想法。
消息机制是解决耦合的基本方法。也是面向对象的精髓。在Actor模型中,消息机制占据核心地位。
ECS是一种非常高效的系统框架,本身也是一种解耦的有效方法。
Actor和ECS分别从纵向和横向完成了对事物的解耦。Actor是不同Actor(及其内部消息处理)并行,ECS是不同System并行。
我不太理解云风文中提到的在和响应式业务timerECS如果没有消息机制,其实
ECS方法更适应效率的现实要求。也适合周期性状态迭代模式。
ECS当然需要消息处理,这是游戏处理事件的必然要求。但是否需要把“周期性的世界状态迭代模式和响应式业务处理模式”混合在一个ECS下,值得商榷。
我认为,ECS下的消息机制,就用ECS本身的机制实现。消息,就是一个消息管理对象(这是一个Entity,可以选择使用多个消息管理对象)的Component。关心特定消息的System,查找指定Component的Entity即可,没有就是没消息。
这个方案不需要额外建立消息系统,简单明了统一。