2011-01-05 46 views
5

我最近学会了实体编程的基本概念(最粗略的定义),并想了解更多。我得到的概念几乎只是一个大规模的抽象。这是正确的吗?实体编程教程?

+0

TekPub ......... – 2011-01-05 23:36:55

+0

随意编辑回来,但我删除了C++,因为问题没有提及它(并且有5个标签限制),并添加了游戏开发,因为你在你的评论中提到了托尼霍克 – 2011-01-16 08:41:44

+0

这是可以接受的,谢谢你的考虑。至于托尼霍克方面,我更接近我新使用的实体。这实际上是我读过的一篇文章,其中一位领导开发人员让我如此好奇。 – AedonEtLIRA 2011-01-17 16:00:29

回答

2

Entity只是场景图形/“你的世界”上对象的基本抽象。而已。

每个游戏引擎以不同的方式定义和使用实体。一些游戏引擎可能会将世界坐标或公共属性附加到实体,其他游戏引擎则可能不会由于每场比赛都有所不同,所以关于它可以说不多。

如果您还没有阅读过这些内容,那么阅读关于编程抽象的更多内容可能会有所帮助。多态性,抽象基类,Liskov替换原则(LSP)或Code Complete书可能是很好的事情。或者,深入挖掘并了解更多关于特定游戏引擎的知识,并使用SDK为其开发某些内容(例如,UDK看起来非常酷)可能是一个好主意。

+0

非常感谢,我一直在寻找,我不得不看看这些书。那真的就是这样,只是一大堆抽象的“物理”物体?我的意思是指任何在世界上占据空间的东西。它真的只是抽象类的一种奇特方式吗?例如:class c扩展了实体。 c有你需要的所有东西,但是你用一个持有指向类c的id指针的实体来表示它? – AedonEtLIRA 2011-01-17 16:04:34

+1

@AedonEtLIRA:是的,只是一个抽象。有些游戏也有非物理实体。与任何抽象一样,基本抽象中的特征越多,游戏引擎的更多部分就能够使用它。但是,功能太多,并且可能会阻止某些部分使用它。例如,如果添加世界坐标,则不能有非物理实体(可能用于AI触发器,全局状态,事件脚本等)。但是也许非物理实体没有意义,或者游戏架构有更好的方式来处理它们。所有游戏特定的东西。 – 2011-01-17 21:57:54

+1

@AedonEtLIRA:我可以看看我是否可以为你找到一个教程,但它基本上只是一个大的列表(或用C++,也许是std :: vector ),你可以循环并调用虚拟方法,或者获取/设置成员。例如,可能会有一个'Update'方法,它可以让它执行物理或执行游戏逻辑。对于引擎的不同部分,这些实体可能有一堆其他附加类,或者存在多个列表中。 – 2011-01-17 22:00:34

3

从我可以告诉,它似乎并不是一个非常知名的方法。我能找到的唯一信息似乎支持了我的想法 - “实体”编程意味着有多个对象可以在数据结构(例如游戏场景图)中互换使用。另外,实体应该可以用数据来定义,这意味着一个实体可以从XML文件构建,或者同样重要的,写出到XML文件并从中重新加载。据我所知,Quake在当天使用术语“实体”来指代非静态对象(即除构成地形的BSP树以外的任何东西)。诸如灯,门等的东西