实践中基于组件的游戏对象系统[关闭]


43

让我们看看成功的历史。哪些流行的游戏(和游戏引擎)是使用基于组件的游戏对象系统构建的?每个答案应包含:

  1. 游戏标题(每个答案一个)
  2. 作者/公司
  3. 开发时间(可选)
  4. 链接到验尸(可选)
  5. 链接到文档/源代码(可选)

7
-1,过去十年编写的每款游戏几乎都会在某个地方使用组件系统,而不是在其他可能的地方使用组件系统。

5
你错了。许多引擎仍然使用静态层次结构。收集和阅读真正使用组件系统的游戏和引擎的docs / postmortems /代码段非常有趣。
topright 2010年

4
我并不是说引擎不使用静态层次结构。我说过很难找到使用静态层次结构的引擎,就像您被迫使用组件查找引擎一样。

2
你错了。游戏实体(游戏逻辑的核心),视觉效果,游戏引擎和编辑器基础结构是否基于组件。
topright 2010年

2
@topright:不管Joe是对还是错,连续两次以平淡而个性化的“您错了”开始发表您的评论不是很委婉,您也这样认为吗?我敢打赌,如果没有这三个小词,您的评论将不会错过任何相关信息,但是忽略它们将为友好而礼貌的对话做出更多贡献。请考虑一下:)
Michael Klement

Answers:


19

地牢围攻Gas Powered Games公司

Scott Bilas发布了许多有关Dungeon Siege的信息,其中包括基于组件的系统。

《地牢围攻》于2002年发布。


哇,很棒的链接。他关于组件系统的演讲确实帮助我更好地了解了基于组件的系统的实现。整洁地谈论如何在DS中完成连续世界。我想知道类似的技术是否仍在其他大型世界游戏中使用。我认为大多数人倾向于使用更类似于区域或大块的东西(Minecraft,贝塞斯达的任何东西)。
CodexArcanum 2010年

19

Insomniac Games的抵抗1-2(可能是3)(2006-2008)

Terrance Cohen在GDC Canada 2010的“ 高性能游戏动态组件架构”演讲中列出了这些游戏。

不知道这是否适用于最近的Ratchet&Clank游戏。


您知道该演示文稿的音频是否在GDC Vault付费墙后面吗?仅幻灯片本身就很酷,但是我怀疑有几个问题可以在演示文稿中得到解答。

我不知道此演示文稿,非常感谢!
topright 2010年

13

默认情况下,Unity3D使用基于组件的系统。从文本文件和依赖项注入创建游戏实体非常好。

function createEnemy() {

   // extract AI type for enemy
   // definition is a custom structure holding parameters to create the enemy
   var aitypename = definition.ai;

   // AIType can be an interface or abstract class
   // you can create a component from a string or from a type
   var ai : AIType = this.gameObject.AddComponent(aitypename);
   ai.setup(definition.ai_settings);

   // set rule for enemy when it is destroyed
   this.gameObject.AddComponent(definition.when_destoryed); 


}

这些组件可能看起来像这样

class AI_Scout extends AIType
{
  // called per update-frame on the game-object with this script
  public function Update() {
    // run Scout AI here
   }
}


class Spawn_Ammo_On_Destroyed extends When_Destroyed
{
   // automatically called by the engine when the game object this script is attached to is
   // destroyed
   public function OnDestroyed() {
    // spawn ammo
    }
}


8

Tony Hawk Pro Skater 3
开发人员:Neversoft
年份:2001
时间:大约两年
发布Mortem:演进您的层次结构(可能是基于链接最多的基于组件的文章)


1

据我所知,我所见过的最好的项目是汉堡引擎。首先下载代码并检查其实现情况。整个过程都是由xml驱动的数据,他们使用了非常好的基于实体的体系结构。值得一看。

http://code.google.com/p/burger-engine/source/browse/


2
-1,该代码看起来真的很业余,从“抽象”的拼写错误到静态组件类型枚举,大量虚函数,每个组件上包含28个字节的位置数据...如果这是最好的看过,再看其他地方。

不幸的是您不喜欢它。整个代码是数据驱动的,我没有找到任何开源的实现方式可以轻松地完成此任务。如果您有任何指向好的代码的链接,请发布链接。拼写错误,虚拟功能-对于“基于组件的体系结构”新手来说,这是一个很好的资源。它的目的是对数据驱动设计在实践中的工作方式进行有价值的介绍。
Ayyappa

2
Dunno关于代码,但是指出拼写错误是一个无效的论点,考虑到还有许多来自非英语国家的程序员。
Rajavanya Subramaniyan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.