java中的大型游戏任务编辑器

java中的大型游戏任务编辑器,java,triggers,prolog,game-engine,Java,Triggers,Prolog,Game Engine,这是我遇到的一个非常具体的问题: 我正在开发一个基于文本的RPG,主要工作是实现一个编辑器,它可以添加NPC、项目并将它们放在地图上(…),而不需要任何编程知识 所有这些都可以在执行一些SQL查询时很好地工作,整个过程已经开始了。现在我正在做任务编辑。我的基本概念是,每次玩家输入命令时,都会查询特定字符串的数据库条目,该条目链接到一组具有唯一ID的条件和操作。这些在java代码中查询,其中特定条件(例如,玩家的钱等于100)有一部分代码返回结果。这意味着,每次输入命令时,必须传递数百(或更多)个

这是我遇到的一个非常具体的问题:

我正在开发一个基于文本的RPG,主要工作是实现一个编辑器,它可以添加NPC、项目并将它们放在地图上(…),而不需要任何编程知识

所有这些都可以在执行一些SQL查询时很好地工作,整个过程已经开始了。现在我正在做任务编辑。我的基本概念是,每次玩家输入命令时,都会查询特定字符串的数据库条目,该条目链接到一组具有唯一ID的条件和操作。这些在java代码中查询,其中特定条件(例如,玩家的钱等于100)有一部分代码返回结果。这意味着,每次输入命令时,必须传递数百(或更多)个IFs,与根据命令执行的操作相同。我甚至不确定这是不是正确的方式(如果有人对此有建议,请随时发布)

现在的重点是,任务基本上由任务阶段组成,这些阶段也有启用的条件和启用时执行的动作。这意味着,同样对于每个输入的命令,所有这些查询都必须发生。我考虑过使用某种触发器,但我不知道如何实现它,因为我真的不想用这个编辑器编辑java代码。我还考虑过使用prolog,但在这种情况下,我想我必须在java代码中添加触发器

我知道在这样的论坛上这有点难处理,但如果有人有建议,我真的很高兴

编辑:


正如在评论中所建议的,我想缩短整个过程:如果任何命令(从Houndre或数千个命令中)可以触发一个特定的任务/任务阶段(从数千个命令中),并且这些触发器应该由编辑器设置,实现这一点的正确方法是什么?

对大量事实进行推理,并在一组事实与特定条件相匹配时触发操作,这是一种很好的匹配方法

您可以将玩家所做的每一个动作/决定表示为事实,您可以将其插入drools知识会话

在该会话中,您可以将所有“触发器”存储为drools规则,当内存中的事实集合与条件匹配时,将触发该规则

drools支持规则的动态添加/删除/编辑,明确地针对非开发人员使用更简单的规则语言编写逻辑


drools的具体部分首先是核心-

我有兴趣帮助解决您的问题,但我很难将您的问题转化为一个可回答的问题。你能试着提出一个一句话的问题,当你回答这个问题时,它会实现你的目标吗?我了解您的系统中正在发生的情况,但我看不到您的实际问题。当满足特定条件时,有许多您想要触发的操作听起来非常适合drools()。这有点像一条学习曲线,但可以在记忆中保存数千个“事实”(玩家所做的每一个动作或决定都可以表示为一个“事实”)和许多“规则”,在满足特定事实组合时等待触发。@radai在我听来似乎与prolog非常相似,我在问题中提到,但是我不确定如果不从编辑器中编辑java代码是否可以实现这一点。谢谢,我来看看。drools提供了一种用于编写这些规则的语言,并允许您自定义该语言,以使非编程用户更容易访问它(这是它声明的目标之一——让非开发人员编写逻辑)。它还可以动态添加/删除/修改这些规则。因此,在不编写java代码的情况下实现一个典型任务背后的逻辑是完全有可能的。我读了三遍,不明白您的问题到底是什么。如果您的问题是解释命令,那么只需为其构建一个语法树,然后以某种方式访问/迭代/转换语法树以触发您的事件。甚至还有一个图形用户界面,用于创建和编辑名为Drools Guvnor的规则,这可能有助于解决需要编辑器的问题。是的,尽管它通常作为独立的服务器安装。可能有点太重了,我从来没有尝试过使用嵌入式(这可能是你想要的单机游戏)。还有一个eclipse插件,允许您可视化和调试规则。