如何有效地设计和编写游戏?

时间:2010-11-27 11:08:32

标签: language-agnostic

我正在写一个非常简单的Java游戏。让我简要描述一下:

  • 地图中有4位玩家。
  • 地图是一个二维矩阵,其值为“height”
  • 2个节点之间的高度是该边缘的成本。
  • 使用Dijkstra算法帮助玩家从源导航到目的地。
  • 四名球员轮流采取行动。总移动数为8(左上,上,右上......)
  • 如果他们见面,争取黄金价值,否则就会转向他们的目标。
  • 当它们移动时,它们的强度会因两个节点之间的高度差而减小。
  • ...... etc

.... 我遇到的问题是源代码日复一日变得越来越复杂。而且我认为我在某种程度上使用了错误的方法,因为不断改变实施,我感到很累。这是我的方法:

  1. 写出所有要求。
  2. 使用所有getter和setter创建我需要的所有对象。
  3. 创建一个静态类来测试逻辑
  4. 将逻辑放在一起时创建单元测试
  5. 添加更多代码,然后更改为代码以适合测试
  6. 编写一个运行的大方法,然后将其分解为更小的方法,然后再次编写单元测试。
  7. 如果一切正常,请添加更多要求,添加更多代码
  8. 然后事情变得越来越复杂,因为我添加的代码越多,复杂性就越高。没有时间编写单元测试因为创建测试用例现在需要做太多工作
  9. 重新设计,然后更改实施,再次转到步骤1。
  10. 我来自C ++背景,我很乐意编写'静态'库,例如:堆栈,队列,链接列表,树...游戏对我来说真是一个很大的挑战,特别是我必须使用Java。我理解核心编程是一样的,所以拿起Java并不是那么糟糕。但是,查找Java API的时间并不少。此外,游戏逻辑真的很难写。当此对象移动时,其他对象受到影响...,因此为方法创建测试取决于许多其他方法...等。 我真的需要一个建议。谁能分享一些如何给我写游戏的经验?我只有两周的时间来完成这项任务。我现在有45个班级,我觉得很失落,因为我写得越多越复杂:(!

    祝你好运, Chan Nguyen

2 个答案:

答案 0 :(得分:1)

首先开始像java程序员一样思考。将游戏中的每件事视为一个对象,如棋盘,考虑它所具有的属性和方法,它的界面,它与其他对象的交互方式。 如果你需要帮助,这里有一个很好的教程,可以指导你一步一步地做一个简单的java游戏,这可能会让你在正确的思维框架下开始自己的编程。我强烈建议您按照教程.http://www.cokeandcode.com/asteroidstutorial使用他们用于开发interfaz的库。

答案 1 :(得分:0)

我尊重游戏代码架构师:游戏是在运行时具有紧急属性的复杂系统,异常强烈的交互要求(UI,控件)使得许多OOP理论值得怀疑。重用游戏代码可能很困难。而且,许多前期规划工作都浪费了时间。

我认识的大多数游戏程序员,无论是开始还是退伍军人,都是通过“正确执行”迭代过程获得成功的。例如

1)写一个最小的原型。使用您能想到的最简单,最明显的架构,让一个非常基本的系统工作。 (我的家伙可以在屏幕上跑来跑去)。最多5或10个物品

2)一遍又一遍地添加功能(点数,规则,陷阱,NPC行为等)和游戏测试。这种黑客入侵可能会导致代码结构不合理,但大多数编码人员都可以使其工作。

3)重写。程序员咬紧牙关他们在(2)中必须做的一些黑客攻击,并希望将其全部抛弃并重写。抵制这种冲动,直到游戏可测试(例如,plyaers有时可以享受它,或者一个新功能需要重写)。然后,从头开始重写几乎所有的东西。这比你期望的更快,并且产生结构良好,结构良好的代码。

游戏编码器会进行测试,但对所有代码的全面测试很少见。有两个原因:出现和文化。游戏在运行时具有紧急属性(“是的,但是当NPC在......时被杀死时,点数可能会变为负值”)。由于游戏通常用于娱乐目的,因此存在快速和宽松测试的文化。游戏并不像导弹控制代码那么重要。

我希望有更多编码经验的人能够回答这个问题。 (我写了一些代码,但我倾向于快速而肮脏的脚本类型编码风格 - 我知道很多编码器比我更好。)