开发具有复杂(和未定义)规则的游戏?

时间:2011-03-14 13:49:35

标签: java python rules

你如何开发一款最终可能会出现复杂规则的游戏,但你需要处理很多规则(添加,调整,平衡)?我查看了基于规则的语言,但我没有找到足够有用的信息。

UI等将在稍后开发,首先我需要迭代地开发规则和公式,并在迭代之间测试它们。有问题的游戏将是一个战术双人游戏,玩家选择“部队”,游戏的很大一部分是选择正确的部队设置。因此规则可能类似于

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为目标 - 可能我会这样做。)

4 个答案:

答案 0 :(得分:3)

无论你做什么,在这种程序中你最终都会实现Prolog的一半。查看forward-chainingbackward-chainingbacktracking算法。

最近发布了名为Jekejeke的纯Java版Prolog。我无法对其质量发表评论。

Python使用生成器和yield语句实现回溯比使用Java更容易。

答案 1 :(得分:2)

larsmans一样,我建议您使用Prolog进行规则制定。它只是半常用语言中最好的语言,可以完成您想要做的事情。但是,我会建议tuProlog看起来像是你想要用Java编写游戏的理想环境。 TuProlog旨在作为可嵌入的Prolog环境(可以嵌入Java或.NET中),包含非常精细的库包含,因此当您使用的只是小型时,您不必随身携带整个臃肿的Prolog世界它的一部分。

以下是网站上的简介:

  

tuProlog是一个轻量级的Prolog系统,适用于分布式应用程序和基础架构,专门围绕最小核心(仅包含Prolog引擎的最基本属性)设计,稍后通过(静态和动态)加载/卸载库进行配置谓词。 tuProlog本身也支持多范式编程,在Prolog和主流面向对象语言之间提供了一个干净,无缝的集成模型 - 即Java,用于tuProlog Java版本,以及任何基于.NET的语言(C#,F#..),用于tuProlog .NET版本。它也易于部署,只需要在单个独立的归档文件上存在Java / CLR虚拟机和调用。互联网标准模式和协调模型的两个主要方面进一步发展了互操作性。

答案 2 :(得分:1)

这是一个有趣的问题,虽然有点广泛和通用。我会根据我对你要求的解释来回答它;)

您主要担心的是能够以简洁,可读的方式表达规则,这样您就可以始终保持定义清晰并快速更改。既然你说规则可能会变得复杂,我相信你最好的选择就是为他们编写DSL。

尝试编写足以描述规则的语法,然后了解如何将其插入游戏中。 ANTLR在那里可能非常有用,特别是因为它同时支持Java和Python。

答案 3 :(得分:0)

尝试The A.I. of F.E.A.R.。有FSM(有限状态机)与A *寻路相结合。发动机不是在地形中找到路径,而是发现目标链,以实现代理的“智能”行为的生成。也许那里有一些鼓舞人心的东西。