2

到目前为止,我制作了两款游戏,一款是简单的 2D MMO,另一款是具有更多功能的 2D 门户克隆。

无论如何,我注意到我在这两款游戏中的职业设计有所不同:

在 MMO 中,我会创建一个名为“Enemy”的类,这个类会接受一些参数,例如imageand attack_power

在类似 Portal 的游戏中,我会专门为每种对象创建类,例如“Box”或“Wall”或“Doors”。然后,这些将仅position作为参数,在里面我将它们标记为movable, physicswith true/false,然后我将有一个更新函数来作用于这些对象。

解决此类问题的最佳方法是什么?我应该有多具体,我应该使用完全不同的东西吗?

我用 Python 和 Javascript 制作了这些游戏。

4

2 回答 2

4

这取决于每个课程的目的、您使用的语言、您想要实现的目标、您想要解决的具体问题以及无数其他因素——每个问题和每个程序都是不同的.

我建议围绕 OO 设计的 SOLID 原则进行一些研究,这些原则更像是指南而不是规则,但是理解它们并将它们应用于实际问题可能会帮助您实现“良好”的类设计 - http:/ /davesquared.net/2009/01/introduction-to-solid-principles-of-oo.html

没有“最佳”方法,因为解决问题没有普遍的正确或错误方法,当您考虑到在此过程中可能遇到的其他现实世界问题时,完美的解决方案并不总是可能或可取的。

您可能会考虑问自己的问题类型可能类似于

  • 我的程序实际上了什么?通常,当您开始考虑程序的工作方式时,最有用的类就会出现。例如,您的可移动 Box 类可能最终做的很少,以至于更容易将其表示为一个简单的结构,但您可能会发现 BoxMover 类的用途,它充满了“移动”逻辑,并且知道如何移动盒子。

  • 我的程序中的不同实体的行为如何?你没有提到很多关于你的类的细节,所以只有你会知道它们是否做不同的事情,但是如果你最终得到了几十个几乎相同的类(特别是差异仅限于数据的地方),那么你可能已经走了太远。

  • 我真正想对课程做什么?考虑接口很重要;OO 设计的重点更多是关于类的使用方式,而不是类存储的数据。(例如,与流行的看法相反,正方形可能与矩形完全没有共同之处)。类似地,一个只有单行 get-set 函数的类可能不会让你的生活变得更轻松,或者让你更接近找到一个好的解决方案。

于 2012-05-29T16:57:30.513 回答
3

解决此类问题的最佳方法是什么?

一些游戏开发人员会说 OOP 不是您将用于游戏的编程类型。他们将拥有一个全局数据存储,并使用程序代码来访问全局数据存储。

你是唯一能真正回答这个问题的人。你的课程是帮助还是阻碍了你的游戏编程?

我应该有多具体,我应该使用完全不同的东西吗?

尽可能具体地为游戏建模。在我看来,自从你完成了游戏,你就有了一个很好的模型。随着您获得更多开发经验,您将看到更多可以使用的模型。

于 2012-05-29T17:01:24.507 回答