4
RPG棋盘游戏规则的通用规则解析器-怎么做?
我想为笔和纸风格的RPG系统构建一个通用的规则解析器。规则通常可以包含1到N个实体,一个骰子的1个到N个角色,并基于一个实体的多个属性来计算值。 例如: 玩家拥有STR 18,他目前装备的武器使他获得+1 STR的加值,但获得了DEX -1的恶意。他攻击一个怪物实体,并且现在需要运行游戏逻辑来运行一组规则或动作: 玩家掷骰子,如果他获得例如8或更高(他需要传递的基本攻击值是其基本属性之一!),则攻击成功。然后,怪物掷骰子以计算攻击是否通过了它的装甲。如果是,则造成伤害,否则攻击将被阻止。 除了简单的数学规则外,还可能存在一些限制,例如仅适用于特定类别的用户(例如,战士还是向导)或任何其他属性。因此,这不仅限于数学运算。 如果您熟悉诸如Dungeon和Dragons之类的RPG系统,您会知道我在做什么。 我的问题是,现在我不知道如何以最佳方式准确地构建它。我希望人们能够设置任何种类的规则,之后再简单地执行一个操作,例如选择一个玩家和一个怪物,然后执行一个操作(一组规则,例如攻击)。 在数据库方面,我寻求的帮助较少,但更多地是关于如何提出结构和解析器的要求,以保持规则的灵活性。顺便说一下,为此选择的语言是php。 编辑我: 让我完善我的目标:我想创建一个用户友好的界面(不需要别人学习编程语言)来构建或多或少的复杂游戏规则。原因很简单:个人使用并不需要一直记住所有规则,我们只是没有那么频繁地玩,每次查看它们都是一个障碍。另外:做和学习东西看起来很有趣。:) 到目前为止,我已经尝试过:只考虑一个概念,而不是浪费时间构建错误的体系结构。到目前为止,我的想法是允许用户创建所需数量的属性,然后将所需数量的属性分配给任何类型的实体。实体可以是玩家,怪物,物品或其他任何东西。现在,当计算某些内容时,数据将可用于规则解析器,以便规则解析器应能够执行以下操作,例如Player.base_attack + dice(1x6)> Monster.armor_check然后Monster.health-1; 这里的问题是关于如何创建该解析器的。 编辑二: 这是一个非常基本的值的示例,但是要正确地计算它,需要考虑很多不同的事物和变量: 基本攻击加成(期限)您的基本攻击加成(通常由d20社区称为BAB)是从角色等级和等级获得的攻击掷骰加成。不同角色类别的基础攻击加成会以不同的速率增加。角色的基本攻击加值达到+6时,每回合会获得第二次攻击;基本攻击加成为+11或更高的角色获得三分之一;基本攻击加成为+16或更高的角色获得第四点。从不同类别获得的基础攻击加成,例如,针对多类别角色的叠加。角色的基本攻击加成在达到+16后不再给予任何更多攻击,不能小于+0,并且在角色等级达到20后不会由于职业等级而增加。某些专长需要最低基础攻击加成。 您可以在这里http://www.dandwiki.com/wiki/Base_Attack_Bonus_(Term)上阅读它,包括指向类和专长的链接,这些类和专长又具有自己的规则来计算基础攻击所需的值。 我开始认为,使其尽可能地通用将使完成良好的规则解析器变得相当困难。