2010-10-23 46 views
3

我想知道什么是游戏开发的最佳做法为动作3. 我目前正在创建一个基于图块的游戏的进展,但我已经有一些麻烦,使用单独的类。AS3面向对象游戏开发结构

这是目前的情况:

主类

  • 生成砖
  • 添加播放器类
  • 添加接口类

接口类包含所有界面元素。例如,有一个选项可以在游戏中产生一个对象。该对象可以放置在选定的图块上。

现在问题出现了:生成的对象被放置在接口类中,生成的对象应该如何与tile进行通信? 同样的问题出现在游戏中的其他几个部分。就像玩家应该如何与生成的对象进行交互?一切都在不同的阶级之间,使得所有这些事情之间的沟通如此困难。

有没有关于游戏开发的标准程序来处理这个问题?我正在考虑制作一个“世界”类,每个对象都应该放在哪里。但我很难用我对这种结构的一点知识来实现​​这一点。 这对我来说都是新鲜事物,所以如果解释尽可能不太可能,我将不胜感激。 在此先感谢!

回答

1

您可以使用事件派发为您的对象相互沟通,有几种方法可用,其中一种更简单的方法是创建一个控制器类,其唯一的责任是调度&监听事件,以便通知您的游戏中发生的事情的相关类别

更好的方法是使用Robotlegs等框架,学习曲线有点陡峭但值得额外付出。
http://www.robotlegs.org/

您应该很容易找到示例& Robotlegs的教程。

+0

根据游戏的大小(一次的对象数量),调度如此多的事件可能会显着降低性能。 – Marty 2011-12-07 06:34:09

1

尝试用稍微不同的方式想象你的游戏部分的组织。首先你提到的这个World类可以包含Map对象还包含生成的玩家或生物的Unit对象。 Map对象也包含Tile对象,每个对象都有自己的信息作为地形和属性。此外,Unit对象将包含与每个spawn相关的信息。对于与玩家的互动,您可以有一个包含World和玩家表示的Game对象,即Player对象,并且此对象会将玩家的指令传递给World以使事情发生。正如你所看到的每个对象都包含其他更精细细节的对象,World包含Map,其中包含Tile's,这种方式使得较高级的对象使用较低级的对象并使它们之间能够进行通信。

这可能是一种快速启动或在实验中学习的好方法。更复杂的情况需要其他方式来安排游戏的所有信息,例如模型 - 视图 - 控制器结构,但是在获得足够的知识以了解您需要更好的解决方案之前,您可能不应该太担心。

0

我会建议阅读一些关于设计模式。一个单独的Dispatcher类可以帮助你解决这个问题,你只需要将所有的东西都绑定到它,并将事件从一个实体发送到另一个实体。

不使用内置事件的原因是您需要将对象放在显示列表中。