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

Java 开发具有复杂(且未定义)规则的游戏?,java,python,rules,Java,Python,Rules,你将如何开发一个游戏,最终可能会有复杂的规则,但你需要在规则上做很多工作(添加、调整、平衡)?我研究过基于规则的语言,但还没有找到足够有用的信息 UI等将在以后开发,首先我需要迭代开发规则和公式,并在迭代之间测试它们。所讨论的游戏将是一个战术双人游戏,玩家选择“部队”,游戏的很大一部分是选择正确的部队设置。所以规则可能是这样的 If attacker's skill A is greater than defenders skill B and defender does not have ex

你将如何开发一个游戏,最终可能会有复杂的规则,但你需要在规则上做很多工作(添加、调整、平衡)?我研究过基于规则的语言,但还没有找到足够有用的信息

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,可能我会)。

无论你做什么,在这种程序中,你最终都会实现一半。检查一下,和算法

最近发布了一个名为Prolog的纯Java版本。我不能评论它的质量


Python使使用生成器和
产生
语句实现回溯比Java容易得多。

这是一个有趣的问题,尽管有点宽泛和通用。我会根据我对你所问问题的解释来回答;)

您主要关心的似乎是能够以简明易读的方式表达规则,这将使您始终保持清晰的定义并快速更改它。既然你说规则可能会变得复杂,我相信你最好的办法就是为它们编写一个DSL

试着写一个足以描述你的规则的语法,然后看看如何将它插入你的游戏中。这可能非常有用,特别是因为它同时支持Java和Python。

试试看。在那里,FSM(有限状态机)与*寻路相结合。引擎没有在地形中找到路径,而是找到了一系列目标,以实现动态代理的“智能”行为生成。也许这里面有些东西对你很有启发性。

就像我建议你用它来制定规则一样。它只是半通用的最好的语言,用于做你想做的事情。但是,我会建议您,如果您想用Java编写游戏,那么它看起来是满足您需求的理想环境。TuProlog旨在作为一个可嵌入的Prolog环境(可以嵌入Java或.NET中),具有经过微调的库包含,因此当您仅使用Prolog的一小部分时,不必随身携带整个臃肿的Prolog世界

以下是网站上的简介:

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


啊。。。你比我先提出开场白。对于这样一个项目来说,它特别棒,因为默认情况下它会执行所有回溯和前向链接,而在任何其他语言中,您最终都必须从Scratch实现所有这些。我同意,乍一看,这听起来像是Prolog的工作,但在他的情况下,这可能是一个过火的工作。作为经验法则,游戏设计师不应该让规则变得太复杂。如果规则非常复杂,游戏设计者有两个令人不快的选择:以某种方式向玩家解释所有规则,并因其复杂性而有可能疏远他们;或者对他们保密,冒着疏远玩家的风险,因为在一些边境案例中,他们不明白刚刚发生了什么。@Vojislav:或者,找一个能够解释复杂规则的社区;-)看魔术聚会(尽管他们试图让规则的直观解释成为正确的)。@Joachim:总是有,但这有点小众化;)一个相当成功的利基,以防魔术聚会。对于这样的游戏,使规则复杂化实际上是他们的商业模式:嗯,我至少要看一看,因为至少学习新编程语言的原理总是很有趣的。同样感谢这些技术,它们听起来很有趣。我不认为这与这个问题有什么关系(除非你想实现一个利用这些规则为自己谋利的人工智能)。我必须补充一点,那篇论文很有趣,’不过;-)我将首先研究这一点,因为在快速查看所有建议之后,看起来这是最有希望的。谢谢我也需要在某个时候看看Antll。谢谢