什么设计模式最适合AS3中的RTS游戏?

时间:2011-07-03 11:44:56

标签: flash actionscript-3 model-view-controller design-patterns

我希望获得一些关于设计模式的好书,并且我想知道你为实时战略游戏(如星际争霸),MVC推荐的特定模式?

我想在某些时候在Flash中制作基本的RTS,我想开始研究最好的模式。

干杯!

3 个答案:

答案 0 :(得分:4)

这类问题的问题在于答案完全取决于您的设计。 RTS游戏很复杂,甚至简单。他们有许多必须协同工作的系统,每个系统必须以不同的方式设计,并有共同的目标。

但是在这里谈一点。

rts中的AI系统通常有几个不同的级别。单元级AI可以像基于交换机的状态机一样简单直到满量程行为树(复合/装饰器)。 您通常还需要某种类型的战略级别AI的高级计划系统。 (指挥官等级和AI玩家) 在这些和资源管理器等一些方面之间通常有几个层次。 你也可以使用基于事件的系统,它与flash的基于事件的模型很好地配合。

对于主游戏引擎本身,可以轻松实现基本状态机(从基于开关到基于功能到基于类的任何事物)将所有内容组合在一起,并将菜单系统与其结合。

对于个人玩家而言,模型 - 视图 - 控制器是一种非常自然的模式,因为您希望AI玩家能够接触到玩家可以访问的所有内容。因此,唯一的变化是控制器(大脑),而不需要明显的视图。

正如我所说,这不是像普通的stackoverflow问题那样可以解决的问题,它完全取决于设计以及您决定如何实现它。 (像大多数事情一样)关于RTS游戏设计有很多资源,并且全力以赴是我能给予的唯一建议。即使是简单的RTS也是复杂的系统。

祝你好运,我希望这篇文章能让你了解如何思考它。 (记住平衡就是RTS中的一切)

答案 1 :(得分:0)

要支持大量单元,您可以使用FlyweightObject Pool。 Flyweight对象可以完全存储在一个大的ByteArray中的几个字节中。要获取可用对象,请读取相应的字节,获取空对象并使用这些字节中的数据填充它。对象池可以保存那些可用对象,以防止持续分配/垃圾回收。这样,您可以在ByteArray中容纳数千个单元,并通过十几个池化对象壳管理它们 应该注意的是,这更适合存储单位的图块属性,但是 - 图块或多或少是静态的,而单位是定期创建和销毁的。

答案 2 :(得分:0)

熟悉一些设计模式并在适当的时候将它们应用到游戏架构中会很好。

例如,您可以为整个应用程序使用MVC架构,创建敌人的工厂模式,商店项目的装饰器模式等。点,设计模式只是构建对象的方法。如何定义这些对象以及如何确定它们如何组合在一起是非规范性的。