【问题标题】:What are some Common 3D Game Patterns?有哪些常见的 3D 游戏模式?
【发布时间】:2010-10-26 08:33:33
【问题描述】:

开发 3D 游戏时使用的一些更常见的设计模式有哪些?有没有常用的高级架构设计模式?架构中的一般软件模式呢?

【问题讨论】:

    标签: design-patterns architecture


    【解决方案1】:

    状态模式的变化对于建模游戏状态很有用。 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 或类似框架处理。

    【讨论】:

      【解决方案2】:
      • 在每个更新步骤中执行所有操作(例如渲染)的组合(在所有 UI 库中确实很常见)。
      • 享元用于在屏幕上绘制许多相同类型的物品(树木/灌木/子弹)
      • 大量 UI 库的观察者(同样,不是特定于游戏)
      • 在游戏/菜单/控制台/暂停/等之间转换的状态。州
      • 在一些用于创建怪物/NPC 的节拍类游戏中的抽象工厂(一次有大量 AI 角色的游戏 - 即 Left 4 Dead)。
      • A* 等寻路算法中的交换启发式策略
      • edit> 用于 MMO 等游戏的命令,这些游戏有一个带有可互换按钮的操作栏,您可以单击这些按钮来施放咒语等。

      我现在能想到的就这些了。

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

        • 我真的在寻找一些通用的架构模式——比如如何将游戏的所有不同组件组织成从高层次上可以理解和维护的东西。类似于 MVC 类型架构或分层架构的游戏开发。
        • 它们不存在,恐怕!此类问题在 GameDev.net 上一次又一次地出现,但实际上没有标准方法或类似方法。一切都有一个输入-更新-渲染/输出循环,并且通常有一个类似于 Matt Olenik 描述的游戏状态系统,但除此之外,它是各种小规模系统和模式的临时安排。我可以提供一些建议,但如果我声称我的建议是“常见的”,那我就是在撒谎。
        【解决方案4】:

        我发现this PDF 详细介绍了可能的游戏架构。虽然,它可能“让那些更倾向于从面向对象设计方面思考的读者不同意。”

        【讨论】:

          猜你喜欢
          • 2010-12-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-25
          • 2010-11-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多