【问题标题】:Design Patterns for Game Objects in Game Loop游戏循环中游戏对象的设计模式
【发布时间】:2011-03-02 23:26:43
【问题描述】:

我正在构建一个带有游戏循环的游戏应用程序。所以我将拥有带有更新/绘制操作的游戏对象。我想知道组合或继承是否是在这里应用的最佳方法或其他设计模式?另外我想知道我是否应该在游戏对象起作用的区域之外制作全尺寸的游戏对象?例如,如果我有一个像人或汽车这样的游戏对象,并且在里面说一个像院子这样的区域,那么院子本身是否也应该被建模为一个游戏对象?另一个例子是,如果我有一个拳击游戏,显然我会制作拳击手游戏对象,而戒指可能是画布,但戒指也应该是全尺寸对象吗?例如,感应战士击中绳索?如果是这样,更新/渲染界面会有什么不同。一个人将如何表达内部/外部区域/环?或者在一个区域之外制作一个游戏对象不是一个好主意?我希望能听到以前做过此类模型模型的人的来信。

【问题讨论】:

  • 我投票决定关闭它,因为有 100 种不同的方式可以让您“正确”设计游戏。您似乎还问如何处理碰撞检测和位置更新,这是与设计完全分开的问题。我的建议 - 开始编写游戏代码,当您遇到特定问题时,请回来,我们可以帮助您。在那之前:阅读和编码,阅读和编​​码......
  • 没有丹尼尔。我不想深入研究代码然后做出决定。我将提前寻找对游戏元素进行建模的最佳方式。所以我想知道的是,将某物制作为一流游戏对象与区域的标准是什么?
  • 丹尼尔你有 1 个代表,所以你不能关闭它。
  • 开发游戏应该很有趣,所以先让它运行,然后再重构它:)
  • 它运行丹尼斯,但你的答案也是!

标签: java


【解决方案1】:

这个问题可能更适合 GameDev.StackExchange.com。无论如何,组合似乎是更易于维护的选择。 Evolve your Hierarchy是这方面常用的参考文章。至于区域/区域,根据您的描述,这些只是用于碰撞检测的对象。

竞技场对象有一个渲染组件和一个碰撞检测组件。您本身不需要“区域”对象,您只需使用自己的自定义组件实例化一个对象。您的所有绳索撞击/环进入/环离开逻辑都基于已检测到碰撞的竞​​技场和战斗机的碰撞组件,该碰撞被分派给两个对象,并且两个对象响应该碰撞。

【讨论】:

    【解决方案2】:

    我的看法: 尝试定义简单的游戏对象,该对象将具有所有主要属性,如 draw()、update().. 例如,如果你想制作一个所有对象都是圆形的简单碰撞游戏,你应该添加 checkCollision(GameObject other) 等函数,和双 x, y, r。现在您可以轻松地从此类继承并制作球、人、怪物......并将它们称为游戏对象,而不是每个单独的对象。如果你想让一些更复杂的东西,比如不同的碰撞区域,那么它与 gameObject 类的想法相同,它将具有 Area 和 checkCollision(GameObject other) 并且你再次继承并定义它们自己的区域,但将所有这些都称为游戏对象。 有许多开源的 Java 游戏比赛,你可以在谷歌上搜索并检查他们是如何玩游戏的,并从中学习。 祝你好运。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-21
      • 1970-01-01
      • 2013-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-26
      相关资源
      最近更新 更多