什么是常见的3D游戏模式?

时间:2009-05-14 22:29:47

标签: design-patterns architecture

开发3D游戏时使用的一些比较常见的设计模式是什么?是否有常用的高级架构设计模式?那么架构中的一般软件模式呢?

4 个答案:

答案 0 :(得分:5)

  • 复合用于执行每个更新步骤(例如渲染)(并且在所有UI库中都很常见)。
  • Flyweight用于在屏幕上绘制许多相同的项目类型(树木/灌木丛/子弹)
  • 许多UI库的观察者(同样,不是游戏特定的)
  • 在游戏/菜单/控制台/暂停/等之间转换的状态。状态
  • 抽象工厂用于制作怪物/ NPC的游戏类型(一次有大量AI角色的游戏 - 即左4死)。
  • 在路径查找算法中交换启发式策略,如A *
  • 编辑>像MMO这样的游戏的命令,它有一个带可互换按钮的操作栏,你可以点击它来施放法术和诸如此类的东西。

这就是我现在能想到的一切。

答案 1 :(得分:1)

我认为没有特别针对游戏的软件设计模式。游戏使用与其他人相同的语言,库和平台,并且在软件级别面临几乎完全相同的问题。

某些方法或方法似乎很受欢迎,但在代码级别上并没有像经典设计模式那样正式化。一个例子是基于组件的参与者,通常甚至不在同一对象中聚合,而是通过共享ID,通过信号/插槽类型机制进行通信。另一种是为脚本目的嵌入第二种语言,例如Lua,Python或Javascript。

答案 2 :(得分:1)

我发现this PDF详细介绍了可能的游戏架构。虽然,对于那些更倾向于在面向对象设计方面进行思考的读者来说,这可能是“不合适的。”

答案 3 :(得分:0)

状态模式的变化对于建模游戏状态很有用。 Enginuity series of articles可以很好地概述游戏引擎设计的一些低级方面。它不完整,但很好。用于处理游戏状态的Guff框架的设计者outlined the use of state hierarchies。层次结构概念很好,尽管他们对游戏状态的看法是有限的(它包含整个游戏循环而不仅仅是状态)。他们还有paper on real-time game loops

在实现脚本时,使用支持某种协作式多线程的脚本语言是非常有用和强大的非常。 Stackless Python提供此功能。从Mono 2.6开始,你can do this in C# using continuations,但仅限于Mono平台(不是.NET),因为它需要对VM进行更改。

有2D和3D图形,动画,输入等常用解决方案。其中许多都是由DirectX,SDL或类似框架处理的。