代码之家  ›  专栏  ›  技术社区  ›  roxrook

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

  •  2
  • roxrook  · 技术社区  · 15 年前

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

    • 地图上有4个玩家。
    • 地图是一个二维矩阵,其值称为“高度”。
    • 两个节点之间的高度是该边缘的成本。
    • 使用dijkstra算法帮助玩家从源导航到目的地。
    • 四个队员轮流移动。总共移动8次(左上,上,右上…)
    • 如果他们相遇,为黄金价值而战,否则就转移到他们的目标上。
    • 当它们移动时,它们的强度会因两个节点之间的高度差而降低。
    • …等

    … 我遇到的问题是源代码越来越长,越来越复杂。我认为我使用了一种错误的方法,因为不断地改变实现,我感到很累。以下是我的方法:

    1. 写出所有要求。
    2. 用getter和setter创建我需要的所有对象。
    3. 创建静态类以测试逻辑
    4. 创建单元测试,同时将逻辑放在一起
    5. 添加更多代码,然后更改为代码以适合测试
    6. 编写一个运行的大方法,然后将其分解为较小的方法,然后再次编写单元测试。
    7. 如果一切正常,添加更多要求,添加更多代码
    8. 然后事情就变得复杂了,因为我添加的代码越多,复杂度就越高。不再有时间编写单元测试,因为创建一个测试用例现在需要做太多的工作
    9. 重新设计,然后更改实现,再次转到步骤1。

    我来自C++背景,我只喜欢写“静态”库,如:堆栈、队列、链表、树……游戏对我来说是一个很大的挑战,尤其是我必须使用Java。我知道核心编程是一样的,所以拿起Java并不是那么糟糕。然而,查找Java API的时间并不多。此外,游戏逻辑真的很难编写。当这个对象移动时,其他对象会受到影响……,所以为一个方法创建测试依赖于许多其他方法……等等。 我真的需要一个建议。有人能和我分享一下如何写游戏的经验吗?我只有两个星期的时间来完成这项任务。我现在有45个班,我觉得很迷茫,因为我写的越多,它就越复杂:(!

    顺祝商祺! 陈阮

    2 回复  |  直到 14 年前
        1
  •  1
  •   mariana soffer    15 年前

    首先要像Java程序员一样思考。把游戏中的每一件事都当作一个对象来思考,比如棋盘,想想它的属性和方法,它的接口,它如何与其他对象交互。 如果你需要帮助,开始这里是一个很好的教程,指导你一步一步地做一个简单的Java游戏,这可能会让你在正确的心态下开始编程自己。我强烈建议您遵循教程。http://www.cokeandcode.com/asterystutorial,并使用它们用于开发Interfaz的库。

        2
  •  0
  •   joshoff    14 年前

    我对游戏代码架构师的看法是:游戏是一个复杂的系统,在运行时具有紧急特性,异常强烈的交互需求(UI,控件),这使得许多OOP理论的价值受到质疑。很难重用游戏代码。而且,很多前期计划工作都是浪费时间。

    我认识的大多数游戏编码人员,无论是初学者还是老手,都通过一个“只做它”的迭代过程获得成功。例如

    1)写一个最小的原型。使用您能想到的最简单、最明显的体系结构,让一个非常基本的系统工作。(我的人可以绕着屏幕跑)。最多5或10个对象。

    2)添加功能(点、规则、陷阱、NPC行为等)和反复播放测试。这种黑客攻击可以导致代码结构不良,但大多数编码人员都可以使其正常工作。

    3)重写。程序员们对他们在(2)中必须做的一些黑客行为咬牙切齿,他们会想把所有的黑客行为都扔掉并重写。抵制这种冲动,直到游戏可以测试(如中所述,玩家有时可以享受它,某种程度上),否则新功能将需要重写。然后,重写几乎所有的内容。这比您预期的要快得多,并且会产生可靠的、结构良好的代码。

    游戏编码人员做测试,但全面测试所有代码是罕见的。两个原因:出现和文化。游戏在运行时有一些突发的属性(“是的,但是当NPC被杀时,分数可能会变为负数,因为…”)。由于游戏通常用于娱乐目的,因此存在一种快速而宽松的测试文化。游戏不如导弹控制代码那么重要。

    我希望有更多编码经验的人回答这个问题。(我已经写了一些代码,但我倾向于快速和肮脏的脚本类型编码风格——我认识很多比我好的编码人员。)

    推荐文章