ルールブックを楽しみながら読解するための道具のご紹介
これはWar-Gamers Advent Calendar 2017の記事です。https://adventar.org/calendars/2484
目次
はじめに
ウォーゲームのルールブックを読んでいて、このカウンターにはどんな状態があるんだろうか、こういうことが起こる条件って何だろう、といったことを洗い出したくなることはありませんか。
そんな時に自分がよく使用している道具を二つ紹介したいと思います。
まず最初に状態遷移図と呼ばれるモデルを紹介し、カウンターの振る舞いを状態遷移図としてスケッチしたものをお見せします。次に擬似コードと呼ばれるプログラミング言語の構文規則を拝借してまるでプログラムのソースコードのようなテキストを紹介し、ルールの一部を擬似コードで書き直してみたものをご説明します。
状態遷移図
まず、状態遷移図のもととなる有限状態機械を簡単にご説明します。
有限状態機械というのは、有限の状態と遷移と動作の組み合わせで出来上がった数学モデルです。計算機科学やITの世界だとポピュラーな存在です。状態遷移図はその有限状態機械を図示したものです。
構造はシンプルで、状態S1からS2に遷移する、遷移条件は Condition1 である時、S1 → Condtion1 → S2 のように書きます。
ではなぜ状態遷移図がウォーゲームのルール読解の役にたつかというと、ゲーム上のアクションを状態と状態遷移の条件のセットで覚えることで理解を促進するからです。
Advanced Squad Leader Starter Kit (MMP)
最初にご紹介するのはAdvanced Squad Leader Starter Kit (MMP) のカウンターの状態遷移です。Advanced Squad Leader Starter Kitは、第二次世界大戦の中規模の地上戦を扱った戦術級ゲームです。
当時、私は損害判定でモラルチェックをした時に損耗 (Casualty Reduction) でハーフスコードに取り替えるカウンターを探すのに苦労しました。ELR超過モラルチェック失敗で一段階低いカウンターを探すのも同様でした。ルールブックには一応説明があったのですが自分には十分ではありませんでした。
そこで作ったのが以下の状態遷移図です。
(効能)対象となるカウンターを見つけてELRかCRかで矢印をたどった先に交換先カウンターがあります。機械的になぞるだけで目的のもとに到達できるというのがミソです。またこうやって並べると国毎の特徴を比較できるというおまけもつきました。
米軍
露軍
英軍
伊軍
DownTown (GMT)
次にご紹介するのはDownTown (GMT) の航空機カウンターの状態遷移です。DownTownは航空作戦級空戦ゲームでベトナム戦争における米軍の航空作戦 (Air Raids) をテーマにしたものです。
航空機はフライト(4機編成)で1カウンターを構成するのですが、カウンターの状態として detected、undetected、generic flight counter、actual flight counter、not engaged、engaged等があります。またこれに加えてdummy、飛行高度、交戦なども入ってきます。もうこの数だけで頭があふれましてギブアップしました。
そこで以下のような状態遷移図のスケッチをしました。
例えば左上の四角で囲ったものは undetected から detected に遷移するのは detected phase で visual sight で detect された時、そこで dummy は取り除かれる、not engaged か engaged に遷移するのは engage roll 成功と五つの事前条件が成立すること、などが書かれているのをご覧になれると思います。
(効能)スケッチしたものをゲームプレイ中に都度確認するようにしましたが、なるべくチャートやルールブックの参照先に迷う時間を最小限にすることを狙い、ある程度成功しました。
擬似コード (pseudo-code)
さて、次にご紹介するのは擬似コード (pseudo-code) です。
これはプログラミング言語のソースコードのような形をしているものの動作させるのではなくプログラミング言語の構文規則を拝借してより意図を明快に伝えることを目的としたものです。
ではなぜ擬似コードがウォーゲームのルール読解の役にたつかというと、曖昧さを減らすことに構文規則に則って書くことが寄与するからです。
今回は二つのプログラミング言語の構文規則を拝借しています。最初の成吉思征西記 (CMJ)と吾妻鏡 (SLGamer)はPrologの構文規則を拝借しました。The Speed of Heat (CoA)はECMAScript (JavaScript)をお手本にしました。
Prologは、プログラムを Head :- Body と書き、Body が成立したら Head が成立する、Head が成立するのは Body が成立する時である、と読みます。Bodyがゼロの場合は常にHeadが成立する、という意味。BodyはA, B, Cのようにカンマで繋げられる場合があり、それぞれの要素が成立するなら、になります。
ECMAScriptは、従来のプログラミング言語と構文規則が共通する部分が多いので説明は省略します。
成吉思征西記 (CMJ)
まず、成吉思征西記 (CMJ) のルールを写経したメモの一部をご紹介します。成吉思征西記は、チンギス・カンのホラズム攻略戦をテーマにした作品です。
# 野戦の成立
野戦 :- 隣接, そのへクスへ移動する余力あり.
# 攻城戦の成立
攻城戦 :- 籠城体制敵へクス移動, 移動終了.
# 包囲の成立
包囲(完全) :- | モンゴル軍ユニット | ≧ | ホラズム軍ユニット |.
包囲(不完全) :- | モンゴル軍ユニット | < | ホラズム軍ユニット |.
# エンドフェーズ
降伏 :- 包囲(完全), 5 ≦ dr(1, 6) ≦ 6.
ムハンマドの死 :- ¬都市(ム), ¬他ユニット一緒(ム), dr(1, 6) ≦ ターン数
(効能)Bodyが数式と論理式がごっちゃになっているのは擬似コードゆえの適当さですが、Body を一つずつ吟味して一つでも成立しなければHeadは成立しないことが即座に分かるので、ルールブックを細則まで読みきらなくともよくすごく気持ちが軽くなりました。
吾妻鏡 (SLGamer)
次は、吾妻鏡 (SLGamer) のルールを写経したメモの一部です。吾妻鏡は、頼朝挙兵から関東平定までの期間を扱った戦略級ゲームです。
除去 :- dr(1, 6) → {1, 2}.
降伏 :- dr(1, 6) → {3, 4}, 中立.
落ち延び :- dr(1, 6) → {5, 6}, 中立.
落ち延び :- dr(1, 6) → {3, 4, 5, 6}, 旗本.
支配 :- ご当地.支配 :- dr(1, 6) ≦ | ★ |.
支配 :- dr(1, 6) ≦ | ★ | + 1, 追討軍.
ここで落ち延びと支配は一行ではなく複数行あることにお気づきと思います。これはBodyが成立する条件がそれぞれ異なっていて、例えば支配であれば三つの成立する条件がある、という意味になります。
(効能)吾妻鏡の場合はメモがとても簡潔になり理解が加速しました。
The Speed of Heat (CoA)
最後にご紹介するのは The Speed of Heat (CoA) Line Of Sight 判定ロジックです。TSOHは、朝鮮戦争、ベトナム戦争、冷戦の時代をテーマにした現代空戦ゲームです。
ルールブックにはLine Of Sightを規定する7つの条件(うち最初の三つはLOSが確立される条件、続く四つはLOSが遮断される条件)が書かれてあるのですが、これを読みながら適用するのは現実的にムリでした。
私はECMAScriptの構文規則を拝借して7つの条件を擬似コードとして書き下してみました。
ConditionA, B, C がLOSが確立する条件、ConditionW, X, Y, Z が遮断される条件でオリジナルの7つの・と対応しています。現在のバージョンは最初からこのように整理されたのではなく書き直しては、原典とコードを眺めてを何回も繰り返した結果です。
またConditionA, B, Cは擬似コードと言いつつもtarget, aircraft, obstacleに値を設定して動作する実コード相当だったので動作させてふるまいを観測しました。
(効能)前述の繰り返しを行いようやくルールのいわんとするところにかなり近い所までたどり着けたような気がします。また実際にAtGシナリオのプレイでLOS判定を行いましたが円滑に進みました。疑義も生ずることなく。
おわりに
以上、ウォーゲームのルール読解のために役立つ道具をご紹介しました。
さて、War-Gamers Advent Calendar 2017明日はHFUTAMIさんです。
予告によるとあの Dune (AH/ホビージャパン) の紹介記事だとか。 私も一度プレイする幸運に恵まれましたが楽しかった作品でした。