什么是实体系统(Entity System)

翻译自 http://entity-systems.wikidot.com/
组件/实体系统(Component/Entiy System)是游戏开发中常用的结构型模式。 CES系统遵循“优先使用组合”原则,来提高构建复杂实体的灵活度。这样做可以消除长继承链等问题,代价是一点性能上的损失。

概念:

一个使用了CES系统的游戏或者程序至少包含如下:
1.实体——一个可以装载组件的容器,通常是层叠的(一个实体可以包含子实体)。
2.组件——包含了行为,外观,数据的物体,该物体可以加入实体。
在以继承为基础的设计中,一个敌人可能有复杂的继承链,例如,破坏者<-演员<-僵尸破坏者,在以CES为基础的设计中,你可能需要一个僵尸敌人实体,它包含生命值组件,一个移动地图组件,一个僵尸组件。

这极大消除了以继承为基础的设计。同时,组件可以任意组合:需要一个能被损坏的箱子?可以把箱子和生命值组件加入实体中。

在一个纯CES设计中,一个场景实体不仅仅包含坐标,位置可以由可选的变换组件提供,它们外观也同样是组件。

渲染和更新可以通过遍历实体树实现,不过比较慢,也可提前把实体注册到相应的服务上。

更多信息:
Unity就是一个用了CES系统的著名游戏引擎。它的游戏物体是内置了变换组件的实体,并且引擎使用者可以用Unity脚本编写自己的组件。

你可能感兴趣的:(设计模式)