开源的基于组件的游戏还是引擎?


15

我已经阅读了一些有关基于组件的游戏设计的知识,但是仍然很难弄清楚如何实现它。是否有任何好的基于组件的游戏或游戏引擎示例可供阅读,以使您对此有所了解?

Answers:


7

我个人认为没有任何好的例子,主要是因为游戏的“基于组件的系统”的定义过于宽松,以至于几乎没有意义。

您可能会发现此答案中的某些讨论很有帮助:如何为网络游戏中的物品实施基于组件的系统

总体而言,该方法只是将任何类型的GameObject或Actor从处理所有行为的大型类更改为保存执行行为的对象的简单类。我认为,自己动手做并制作适合您游戏的不同组件通常是最好的方法。


我听到了。当试图在上面找到好的资源时,我发现几乎每个人都使用不同的术语来描述事物。当您花费一半时间翻译基本结构时,很难比较不同的实现。实体系统,组件系统,游戏对象,模板,组件,组件组装等
宽大处理

2

您可能会喜欢以下一些资源:
一个了不起的线程。它本身不是游戏引擎,但是设计和讨论很棒。
关于StackOverflow的一个非常相似的问题。

为了回答最初的问题,C#中的Elephant框架正是您想要的:它已经停产,但是在这里仍然存在以供实现参考。


1

该站点开始一个基本的实现。

以上大部分内容受T = Machine上这篇文章的启发

受上述两个链接的启发,我开始了一个基本的实现。我敢肯定,我与纯组件系统理论大相径庭,毫无疑问,这里有bug,但是如果您要寻找一些简单的示例,它可能会很有用。

刚毛(C#/ XNA)

现在,它只是加载一些基本实体,处理一些事件等。您要查找的主要位置是Engine.EntitySystem文件夹,可能还有PlayScreen实际创建实体。

创建一个简单的基于类型的组件存储并将其隐藏在通用的EntityManager后面相对简单。

我遇到的第一个挑战是单个系统可能需要多种组件类型(即物理组件和InputMoveable)。要使用关系数据库语言,我必须找到一种进行JOIN查询的方法。为此,我为根据匹配的组件类型查询构建的实体创建了另一个集合类型-每个实体集合都挂接到OnEntityCreate事件中,并检查它是否匹配。还有一些错误。

第二个挑战实际上是创建一个“游戏对象”-我称它们为模板。在这里,根据T = Machine的规格,我可能不是很单纯,但是它似乎有效。模板将组件实例化分组在一起,并允许更容易的实体组成(即,“球是可绘制的”和“物理的”)。

希望这会有所帮助-实体/组件系统可能是克服一些初始障碍的挑战。


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.