ドラクエシリーズでお馴染みの呪文「インパス」
シリーズによって用途が様々で変則的な存在の呪文ですが、宝箱の中身を判定するというのが大きな役割の1つ。
判定するからには何らかの基準をもって結果を導くのだと考えられますが、どのようなロジックが用いられているのか考察します。
インパスの概要
まずインパスの効果をおさらい。宝箱の中身に応じた色の違いを発現します。
- 赤:トラップモンスター
- 青:アイテム
- 黄:ゴールド
ちなみに、ドラクエ3と11は上の法則と若干異なったルールが採用されているため、今回は最もオーソドックスな上のルールが当てはまるドラクエ4〜7のシリーズをテーマにして考えたいと思います。
3色の判定ロジックを考察
3色のうち最も重要度が高く、かつ判定が容易なのは赤色のケースではないでしょうか。
インパスを使う目的はミミックなどのトラップモンスターの脅威を回避することが第一なのは間違いありません。
よって、インパスの宝箱判定ロジックはまず赤色とそれ以外を切り分ける処理を行っていると考えます。
まず赤色のケースを切り分ける
では、どのように宝箱がトラップモンスターかどうかを判定するのか?
これは対象が生物であるかどうかを調べることで切り分けられそうです。
ひとくいばこやミミックがはたして生物なのか疑問はありますが、モンスターズシリーズでは配合によって子を成すことができますし(自己増殖が可能)
しもふりにくやほねつきにくを喜んで食べたり、「甘い息」の特技を得意としていることから食事や呼吸もしていると判断できます(代謝機能の存在)
また、外部刺激に反応することは言わずもがな。
つまり、生物の定義を満たしており、生物かどうかの判定にかければ赤色のパターンの要件に応えることができると言えるでしょう。
さて、生物かどうかの判定でYESとなれば宝箱を赤色に光らせて処理は終了。
一方NOとなった場合、続けてゴールドかアイテムかの判定に移行します。
続いて黄色のケースの判定を行う
このうち判定が難しいのはアイテム(青色)の方ではないでしょうか。
黄色はゴールドという1つのパターンしか存在しませんが、青色は「やくそう」だろうが「どうのつるぎ」だろうが「みずのはごろも」だろうがあらゆるジャンルのアイテムを青色のパターンとして認識させる必要があり、複雑です。
よって、ゴールドかどうかを判別し、YESなら黄色、NOなら青色(=赤でも黄でもなければその他はすべて青)とする処理が妥当だと考えます。
では、中身がゴールドであることを特定するにはどうすればいいでしょうか。
これはそもそもゴールドがどういう物質であるのか分からないため非常に難しいですが、例えば対象の素材を調べる・・・などが1つの候補でしょうか。
現実世界の日本円の硬貨も例えば銅や亜鉛、ニッケルなどを固有の割合で含む合金ですが、ゴールドもゴールドに特有な素材でできていると考えれば、その組成に合致するかどうかを判定すればゴールドであることを特定できるかもしれません。
ちなみに、ゴールドという字面からするに、金を含んでいそうなイメージですが、金にまつわるアイテムは
- きんのブレスレット
- きんのゆびわ
- きんのかみかざり
など様々に存在しており、当然これらは青く光らせる対象なのでゴールドと区別する必要があります。
こればかりは断定できませんが、同じ金製品でもゴールドは独自の組成を持っており、他の金製品含め、あらゆるアイテムと区別可能となっているのかもしれません。
例外の処理について考える
さて、これで一通り赤青黄の判定処理を見てきましたが、まだ終わりではありません。
例外についても考慮する必要があります。
宝箱が空の場合の処理
例えば宝箱が空っぽの場合。実は空の宝箱にインパスを使っても色の変化はありません。
これは最初の赤色判定処理に入る前に中身の有無をチェックする処理を入れておき、空の場合はそのまま処理を終了するロジックがあれば対応できそうです。
もしこのチェックがないと空の宝箱にインパスを使った場合、生物ではないため赤ではない→ゴールドではないため黄ではない→青色に発光という結果になってしまうため、見逃せないポイントです。
ゲーム上は存在しない例外処理について考える
ゲームの上では以上の判定ロジックがあればあらゆる宝箱に対応できそうですが、現実はもっと様々な例外が存在すると考えられます。
ぱっと思いつくだけでも
- 空の宝箱の隙間から蛇などが入り込んで宝箱の中に居着いている場合(中身がトラップモンスター以外の生物)
- ゴールドとアイテムが同じ宝箱に入っている
- ひとくいばこの死骸
などなど。特殊なケースを挙げだしたらキリがありません。
これらのケースにインパスは求められている要件通りの答えを返すことができるのか。そもそもインパスに求められている要件とはなんなのか。考えると意外と奥が深い呪文ではないでしょうか。
インパスが開発された背景に想いを馳せる
プログラムにバグはつきものですが、インパスの宝箱判定ロジックも紐解いていくと実は対応できないケースがあったり、バグを孕んでいる可能性もあるかもしれません。
しかし、万が一にも特殊なケースで判定を誤ってひとくいばこやミミックを識別できずに命を落とす冒険者を出すわけにはいきません。
人命がかかったバグが許されない呪文だと言っても過言ではないでしょう。
そう思うとインパスの開発者にかかった責任の重さや、あらゆるテストケースを洗い出す視野の広さなど、壮大な背景に想いを馳せたくなりますね。
まとめ
インパスの宝箱の中身判定ロジックについて考える。
1:宝箱が空なら何もせずに処理終了。空でないなら次の処理へ
2:生物かどうか判定。生物なら赤色に発光して処理終了。そうでないなら次の処理へ
3:ゴールドかどうか判定。ゴールドなら黄色に発光して処理終了。そうでないなら青色に発光して処理終了
以上の順番で宝箱を鑑定していると考えられる▼