|
发表于 2013-8-21 19:06:32
|
显示全部楼层
又仔细看了下文章和回复,我发现大部分的回复(包括我自己的)其实都没抓住猴子的要点,其实帖子的重点是游戏设计,cocos2d-x和unity 只是用来做例子引申的,结果因为举的例子牵涉到了cocos2d的支持者,所以貌似后面不少喷的其实没理解帖子的内容。实际上帖子说到的设计问题相当不错,不仅仅在游戏上面有用,在各种产品(包括游戏引擎)方面都是很有意义的。
哦,另外关于component系统,很多程序员不适应是因为component系统不仅仅牵涉到了领域模型建模(对象数据与行为设计,以及对象关系设计),还牵涉到对象内部的逻辑拆分,这部分工作不少人没经验。其实简单来说工作多了一步,就是对对象进行打标签,在设计好对象以后,给对象几个正交的标签来分解逻辑。例如一个游戏中间的角色,可以被打上:"有生命值的",“可攻击的”,“可释放技能的”,“可附加buff的”等等,然后对每个角色的标签进行汇总,得到的就是组件集合。(HPComponent,AttackerComponent,"SkillComponent","BuffCompnent"...),然后按标签组合就变成了一个具体的对象。这种component因为逻辑纵向拆分,所以内聚性比较强,很容易复用和组合。例如我有一个障碍物,如果需求变更说这个障碍物可破坏有血量,那直接可以加入一个HPComponent,这部分血量控制的逻辑就可以复用了。
说Component系统是被oop包含的原因是:1.compoent 本身最后还是要被entity组合成为具体的领域对象,有对象的存在就是oop的一个特征。2.component的实现其实是oop中的组合的运用。 |
|