我一直在研究游戏引擎设计(特别关注 2d 游戏引擎,但也适用于 3d 游戏),并且对如何进行它的一些信息感兴趣。我听说现在许多引擎正在转向基于组件的设计,而不是传统的深层对象层次结构。
您是否知道有关此类设计通常如何实施的信息的任何良好链接?我已经看到了你的层次结构的演变,但我真的找不到更多详细信息(他们中的大多数似乎只是说“使用组件而不是层次结构”,但我发现改变我的想法需要一些努力两个模型之间)。
任何好的链接或信息都将受到赞赏,甚至书籍,尽管此处的链接和详细答案将是首选。
2013-01-07 更新 : 如果您想看到基于组件的游戏引擎与(在我看来)卓越的反应式编程方法的完美结合,请查看 V-Play 引擎。它很好地集成了 QTs QML 属性绑定功能。
我们在大学里对游戏中的 CBSE 进行了一些研究,这些年来我收集了一些材料:
游戏文学中的 CBSE:
C# 中基于组件的游戏引擎的一个非常好的和干净的示例是Elephant 游戏框架。
如果您真的想知道阅读了哪些组件:基于组件的软件工程!他们将组件定义为:
软件组件 是符合组件模型的软件元素,可以独立部署和组合,无需根据组合标准进行修改。 组件模型 定义了特定的 交互 和组合标准。 组件模型实现 是支持执行符合模型的组件所需的专用可执行软件元素集。 软件组件基础设施 是一组交互的软件组件,旨在确保使用这些组件和接口构建的软件系统或子系统将满足明确定义的性能规范。
软件组件 是符合组件模型的软件元素,可以独立部署和组合,无需根据组合标准进行修改。
组件模型 定义了特定的 交互 和组合标准。 组件模型实现 是支持执行符合模型的组件所需的专用可执行软件元素集。
软件组件基础设施 是一组交互的软件组件,旨在确保使用这些组件和接口构建的软件系统或子系统将满足明确定义的性能规范。
经过 2 年的 CBSE 游戏经验后,我认为面向对象编程只是一条死胡同。记住我的警告,当你看到你的组件变得越来越小,更像是封装在组件中的函数,有很多无用的开销。改用函数响应式编程。还可以看看我的新博客文章(在写这篇文章时让我想到了这个问题:))关于 为什么我从基于组件的游戏引擎架构切换到 FRP 。