精灵可以有数据和动作状态机种需求,数据相关的逻辑,状态机相关逻辑。
先把Entity和Actor弄明白,entity里有改变状态机和设置animator的相应动作,有移动控制器motor,可以认为是入口,需要对某个实体做的实体都要通过这个来实现。
entity太大会是个问题,那么能不能把这些控制器分散开?由各种不同的服务提供,有服务就可以使用某个功能。
这些功能是放到entity自身里面,还是放到一个公共服务里面?即使放到公共服务里,是不是entity也要被注册这些服务?
怪物的仇恨列表,是存储在行为树里的。哦,可以这样,行为树里挂了一个Task,用于搜索AOI,即当前可攻击对象。
通过MVC结构,把entity的view相关的抽到另外的结构里面,model是数据部分,controller是控制器。
还是应该把关于显示的东西收集到一起,数据的是数据。
View里一定就是表现层的内容,而controller是什么呢?行为树要访问数据,只能去黑板上拿,这就意味着,游戏内的一些数据要送给。不如先把事件总线给引入进来。这样的话,监听事件等
那么controller是否要知道数据呢,比如,当前的血量什么的。
从某个游戏的设计来看,Entity共有的内容包括,AI处理,战斗,移动,属性,状态管理,这些分别拆成了不同的partial class,这样是可以并行开发的,也就是说,某个人在维护property,其他人可以同时维护其他entity的内容。
ECS更详细的介绍
http://entity-systems.wikidot.com/