开发一个规则复杂(且未定义)的游戏?
你想开发一个可能有复杂规则的游戏,但需要频繁调整这些规则(添加、修改、平衡),该怎么做呢?我查过一些基于规则的编程语言,但没找到特别有用的信息。
用户界面等内容会在后面开发,首先我需要反复开发规则和公式,并在每次迭代中进行测试。这个游戏是一个两人对战的策略游戏,玩家需要选择“部队”,游戏的一大部分就是选择合适的部队组合。所以规则可能会像这样:
If attacker's skill A is greater than defenders skill B and defender does not have extra skill Z then ...
这显然是一个非常简单的规则,我预计会有几十条,甚至上百条规则,可能会有很多分支(如果A成立,那么如果B成立……)。
为了测试,我会写一个测试框架,可以通过大量的迭代来运行这些规则,并记录日志,这样我就能看到最新的变化是如何影响平衡的。能够定义可接受的数值,并且方便查看变化也是很有用的。有没有什么工具可以做到这些?
我选择的编程语言是Python或Java(这取决于我是否想针对Android开发,可能会选择开发Android)。
4 个回答
这个问题挺有意思的,不过有点宽泛和笼统。我会根据我对你问题的理解来回答;)
你主要关心的似乎是如何用简洁、易读的方式来表达规则,这样你就能始终保持定义的清晰,并且快速进行修改。既然你提到这些规则可能会变得复杂,我认为最好的办法是为它们写一个领域特定语言(DSL)。
试着写一个语法规则,足以描述你的规则,然后看看如何把它应用到你的游戏中。ANTLR 在这方面可能会非常有帮助,特别是它同时支持Java和Python。
就像larsmans所说的,我建议你使用Prolog来开发你的规则。这是一个非常适合你想做的事情的编程语言。不过,我更推荐tuProlog,因为它看起来更符合你的需求,尤其是你想用Java来写游戏。TuProlog是一个可以嵌入的Prolog环境(可以嵌入到Java或.NET中),它的库包含得非常精简,这样你就不需要在使用小部分功能时,带上一个庞大的Prolog系统。
以下是网站上的介绍:
tuProlog是一个轻量级的Prolog系统,适用于分布式应用和基础设施,设计时围绕一个最小的核心(只包含Prolog引擎最基本的功能),之后可以通过加载或卸载谓词库来进行配置。tuProlog还原生支持多种编程范式,提供了Prolog与主流面向对象语言(比如Java和任何基于.NET的语言,如C#、F#等)之间的干净、无缝的集成模型。它也很容易部署,只需要有Java/CLR虚拟机,并调用一个自包含的压缩文件。它的互操作性进一步沿着互联网标准模式和协调模型两个主要方向发展。