最先进的游戏引擎架构
Posted
技术标签:
【中文标题】最先进的游戏引擎架构【英文标题】:Game engine architecture state-of-the-art 【发布时间】:2011-10-03 19:18:35 【问题描述】:我已经阅读了很多关于游戏引擎架构的文章,并且想了解以下内容:什么是(是?)目前被认为是游戏引擎的最佳架构?
如果我们能找到一些学术资源(例如论文或类似资源)而不是孤立开发人员的轶事经验,我将不胜感激。
谢谢
【问题讨论】:
作为一个忠告,真正的游戏开发者 cmets/blog 每个都价值一百万篇使用玩具语言解决模型问题的学术论文,并且不必在 PC/360/PS3 上以 30Hz+ 运行- 我听说数据驱动设计是前进的方向 - 例如,seven-degrees-of-freedom.blogspot.com 根据经验提倡这一点。 我不确定我是否同意。我是一名游戏开发人员,在威尼斯大学担任研究员。我觉得非常缺少的正是你如此容易丢弃的东西:在轶事的海洋中,有人试图整理一些秩序并对不同的方法进行分类。就目前的情况而言,有许多孤立的报告很短,有时不完整,而且经常相互矛盾。一些系统化是必需的,许多使用过时技术的游戏开发者可以从中找到迁移到更新、更好的软件工程方法的途径。 好点。我对学术界的建议应该持保留态度,如果你想制作印地游戏,“玩具”语言就可以了,而且我制作的每个标题都在某种程度上受到了应该保留在研究论文中的坏想法的污染 -他们仍然运送得很好。我认为,在这一领域进行任何真正有价值的工作的最大障碍只是大多数工作室核心的竞争性资本主义哲学,提高可用信息的质量并没有真正的兴趣,但有许多天真的论点为什么你不应该...... 【参考方案1】:“最佳”是相当主观的。作为一名专业的游戏开发者,我无法完全严格地回答您的问题,但我听说过基于组件的游戏引擎和(功能)反应式引擎。还可以选择使用实体层次结构,例如,"Evolve Your Hierarchy" 中所述,但据我所见,它正在被放弃,取而代之的是基于组件的引擎。
分层:使用继承来提供功能(“Evolve Your Hierarchy”显示了 Car
子类化 Vehicle
的示例,其中子类 Moveable
和子类 Entity
)。如上所述,问题在于决定功能应该放在哪里:如果放在继承树的更高位置,它会给子类带来可能不会使用的功能;把它放得太低,你最终会复制/重构代码以将功能放到需要的地方。
基于组件:每个游戏对象/实体都是“组件”的组合,这些“组件”提供可重用的特定功能,例如动画/移动、对物理的反应、被玩家激活等。"Component based game engine design",另一个 SO问题,详细描述它并提供论文链接等,这应该会有所帮助。
(函数式)反应式:通常在 Haskell 等函数式语言的上下文中进行研究。据我了解,中心概念是一流的时变值,根据这些值和其他构建块来描述行为,例如表示离散事件的事件。 "What is functional reactive programming" 提供了比我更好的描述。我相信 .NET 的 WPF 数据绑定就是这些概念的一个例子。据我所知,这仍在试验/研究中,但Wikipedia article for reactive programming(不是 FRP,请注意)链接到为 Lisp、Python、Java 和其他语言编写的库。
【讨论】:
顺便说一句,WPF 是 reactive 编程的示例,而不是 functional-reactive 编程。以上是关于最先进的游戏引擎架构的主要内容,如果未能解决你的问题,请参考以下文章