xeo*_*abs 3 naming naming-conventions game-engine
我正在研究一个3D引擎API(渲染引擎,而不是游戏引擎),并试图让类名正确.
在我的系统中,我有一些组件,如"相机","变换","灯光","材料"等,包括我称之为"对象"的另一种组件类型.
每个"对象"都有一个链接到每个其他组件类型,即.链接到"相机",链接到"材料",等等.
很标准的东西.
我的问题是 - 应该被称为"对象"或"实体",还是其他什么?
任何人都可以指点我这些概念的规范文学吗?似乎是许多人的个人品味问题,但为了最大限度地理解文档,我希望将这一微妙之处固定下来.
我见过很少的webgl javascript引擎.术语每个都不同.
"实体"和"游戏对象"之间的区别?
通常,物体是您可以通过视觉和/或触觉感知的东西.虽然实体可能只被感知到第六感或者根本没有被感知(场景中的两个相机不能相互感知).每个对象都是实体,但不是每个实体都用对象表示.
在编程, 相机,灯光,模型,场景中,所有这些都需要位置,旋转和缩放.还有很多东西都依赖于此,所以这里有另一个重要的词:Node.
在OOP层次结构中,Node是第一个.它只有一个父节点,除了第一个节点没有,零个或多个子节点.实体扩展了Node.它有位置,旋转,比例+父母,孩子.每次转型都会影响所有孩子.对象扩展实体.对象可能具有其他各种属性,例如网格集,(每个对象由一个或多个网格组成,每个网格都有材质).
提示:
有时在OOP层次结构中有3个不同的对象是没用的.大多数引擎将它们合并到单个对象或两个,不同的组件可能会排除构造函数中的属性.例如,全局光不需要位置,旋转或缩放.定向光不需要位置和比例,但需要旋转.但仅仅因为两个组件而扩展整个OOP层次结构并不值得.
在playcanvas中,它的名字是Entity.在threejs中,它的名字是Object3D.名称可能也是GraphNode或Node,因为它位于cocos2d(这是2d引擎)中.
我没有任何文献,但我同意Thomas的观点:尽量避免像Object,Node这样的词,因为它令人困惑.我认为将它们合并在一起的最佳名称是实体,但它与或多或少的内容或单词本身的描述无关.最重要的是,你和其他人发现什么令人困惑.