4
RPGボードゲームルールの汎用ルールパーサー-実行方法
ペンとペーパースタイルのRPGシステム用の汎用ルールパーサーを構築したいと思います。ルールには通常、1〜Nエンティティの1〜Nのサイコロの役割と、エンティティの複数の属性に基づいた値の計算が含まれます。 例えば: プレイヤーはSTR 18を持っています。彼の現在装備している武器は、STR +1のボーナスを与えますが、DEX -1のマルスを与えます。彼はモンスターエンティティを攻撃し、一連のルールまたはアクションを実行するためにゲームロジックが必要になりました。 プレイヤーがサイコロを振る場合、たとえば8以上を取得した場合(渡す必要がある基本攻撃値は基本属性の1つです!)、攻撃は成功します。その後、モンスターはサイコロを振り、攻撃がその鎧を通過するかどうかを計算します。「はい」の場合、攻撃がブロックされていない場合、損害が発生します。 単純な数学ルールに加えて、特定のクラスのユーザー(たとえば、戦士vsウィザード)または他の属性にのみ適用するなどの制約もあります。したがって、これは数学的な操作だけに限定されません。 DungeonやDragonsのようなRPGシステムに精通しているなら、私が何をしているのかわかるでしょう。 私の問題は、これを最善の方法で正確に構築する方法がわからないということです。あらゆる種類のルールを設定し、後でプレイヤーとモンスターを選択するなどのアクションを実行し、アクション(攻撃などのルールセット)を実行できるようにしたいのです。 私は物事のデータベース側での助けを求めていませんが、ルールを柔軟に保つために構造とパーサーをどのように思い付くかについてもっと求めています。ちなみにこれに適した言語はphpです。 編集I: 目標を洗練させましょう:複雑なゲームルールを構築するために、ユーザーフレンドリーなインターフェイス(誰かがプログラミング言語を習得する必要がない)を作成したいと思います。単純な理由:個人的な使用は常にすべてのルールを覚える必要がないため、単純にそれほど頻繁にプレイしないので、毎回ルールを調べるのは止めになります。また、何かをして学ぶための楽しいタスクのように見えます。:) 私がこれまでに試したこと:間違ったアーキテクチャを構築する時間を無駄にするのではなく、コンセプトについて考えるだけです。これまでのところ、ユーザーが必要な数の属性を作成し、任意の種類のエンティティに必要な数の属性を割り当てることができるようにするという考えがあります。エンティティは、プレイヤー、モンスター、アイテム、あらゆるものです。ルールパーサーが何かを計算するとき、Player.base_attack + dice(1x6)> Monster.armor_check then Monster.health-1; ここでの質問は、そのパーサーの作成方法に関するものです。 編集II: 非常に基本的な値の例を次に示しますが、適切に計算するには、考慮すべきさまざまなものや変数がたくさんあります。 基本攻撃ボーナス(期間)基本攻撃ボーナス(通常、d20コミュニティではBABと呼ばれます)は、キャラクタークラスとレベルから派生した攻撃ロールボーナスです。基本攻撃ボーナスは、キャラクタークラスごとに異なるレートで増加します。キャラクターは、基本攻撃ボーナスが+6に達するとラウンドごとに2番目の攻撃を獲得し、3番目は基本攻撃ボーナスが+11以上、4番目は基本攻撃ボーナスが+16以上になります。マルチクラスキャラクターのスタックなど、さまざまなクラスから得られる基本攻撃ボーナス。キャラクターの基本攻撃ボーナスは、+ 16に達した後は攻撃を許可せず、+ 0より小さくすることはできず、キャラクターレベルが20に達した後のクラスレベルにより増加しません。特定の特技には、最低限の基本攻撃ボーナスが必要です。 ここでそれを読むことができます。http: //www.dandwiki.com/wiki/Base_Attack_Bonus_(Term)は、基本攻撃に必要な値を計算するための独自のルールを持つクラスと特技へのリンクを含みます。 できるだけ汎用的にすると、良いルールパーサーを完成させるのがかなり難しくなると思い始めました。