技術部の御供餅(おそなえ)です。前回までで、悪魔を読む道具、迷宮の地図、パスワード、合体表がそろいました。そのあいだ裏では、ゲームを最後まで自分で遊ぶ自動プレイを育てていました。いまは塔からアンフィニまで全6ダンジョンを通しで遊び、ルシファーを倒すところまで届いています。
本記事は LLM による自動執筆パイプラインで生成されました。現在は人間が補助していますが、pareido.jp では最終的に AI が自律的にコンテンツを制作できる仕組みの構築を目指しています。
今回はその自動プレイのうち、戦闘を書き出します。歩く・話す・買う・合体する、はシナリオごとに中身が違います。けれど戦闘だけは、どの話のどの戦闘でも同じ判断で戦っています。その判断を、コードが実際に見ている順に並べました。
1ターンは4つの画面でできている
女神転生の戦闘は、1ターンのあいだに4種類の画面が出ます。
- 全体の問い——「たたかう/にげる/AUTO」。パーティとしてどうするか
- 一人ずつの問い——「◯◯は どうしますか」。こうげき・まほう・COMP・まもる
- 確認——「はい/いいえ」
- メッセージ——ダメージや結果の文。A で送る
自動プレイは「いま何番目の画面か」を数えません。毎フレーム画面を読み、出ているメニューに答えます。「たたかう」が見えたら全体の判断、「こうげき」が見えたら一人ずつの判断、「だれに つかいますか」が見えたら相手を選ぶ。数えると、一度ずれたら最後までずれます。見て答えるなら、ずれても次の画面で戻ります。
判断に使うものは3つです。
- 画面の文字——欄の名前・HP・MP・状態、メッセージ窓の文
- RAM——敵の種類と頭数(
$0610〜/$060c〜)、人間2人の状態($04b3/$04c1)、COMP の名簿($04d2〜)、月の絵($0205) - ROM——敵の HP・攻撃力・使う技、仲魔が覚える呪文。第2回・第3回で読み出した表そのものです
誰が回復役か、誰が攻撃呪文を撃てるかも、名前では決めていません。ROM の仲魔表に回復の呪文があれば回復役です。仲魔が入れ替わっても、判断はそのまま使えます。
逃げるか、戦うか——12の規則
全体の問いでは、上から順に規則を見て、最初に当たったもので決めます。
| 順 | 条件 | 決める |
|---|---|---|
| 1 | 逃げない方針(ボス戦)で、名指しで避ける相手がいない | 戦う |
| 2 | 仲魔にしたい相手が満月で話せない(殺したくない) | 逃げる(6回まで) |
| 3 | この戦闘で逃げ損ねが2回以上 | 逃げ続ける |
| 4 | 30ターンを超えた | 逃げる |
| 5 | 名指しで避ける相手がいる | 逃げる |
| 6 | エナジードレインを使う敵がいて、テトラジャを唱えられる味方がいない | 逃げる |
| 7 | いつも逃げる方針 | 逃げる |
| 8 | 誰か倒れている | 逃げる |
| 9 | いちばん減っている人の HP が 35% 未満 | 逃げる |
| 10 | 倒しきるまでに受ける傷の見込みが、HP 合計の半分を超える | 逃げる |
| 11 | 敵の HP 合計が、こちらの HP 合計の3倍を超える | 逃げる |
| 12 | どれにも当たらない | 戦う |
敵の HP は画面に出ません。ROM の図鑑の値 × 頭数で見積もります。裏・女神転生では敵の HP が2倍になるので、見積もりも2倍にします。
10番の「受ける傷の見込み」は、こう出します。敵1体を倒すのに何ラウンドかかるかを、この戦闘で実際に与えたダメージから割り出す。そのあいだ残りの敵が殴ってくるので、一撃 ×(1 + 2 + … + n)。敵の一撃もこの戦闘で受けた実測の平均を使い、まだ殴られていなければ図鑑の攻撃力の1.5倍で置きます。
3番は、昔は逆でした。「逃げ損ねが続いたら、殴ったほうが早い」。これで一度、殴りに行って全滅しています。逃げると決めた相手は、逃げ損ねても逃げ続けます。
戦うなら、AUTO に任せる
戦うと決めたら、できるだけゲームの AUTO に任せます。速いからです。ただし AUTO 中も毎フレーム見張っていて、次のどれかが起きたら B を押してターンの切れ目で手を取り戻します。
- 誰かの HP が線を割った(ふだん 60%、MP を温存する道中は 30%、ボス戦は 80%)
- 誰かが状態異常になった
- 敵が1体になり、話しかけて仲魔にできる
- シナリオが「この条件でこの呪文」と頼んでいた条件が成り立った
一人ずつ——治す、譲る、殴る
手で戦うターンは、一人ずつ次の順で決めます。先に当たったものが、その人の手です。
- 回復役の状態異常を治す——誰も 30% を割っていなければ、回復役が動けないのを先に治す
- HP を回復する——線(60%、温存中は 30%)を割った人がいれば、回復の呪文
- 状態異常を治す——誰でも
- 頼まれていた呪文——ハイパー、テトラジャなど
- 交渉——仲魔にしたい相手が1体だけ残っていれば、主人公が COMP で話しかけ、ほかは守る
- 攻撃呪文——許されている話だけ
- こうげき
回復役の状態異常が HP の回復より先にあるのは、配信で実際に起きたことが理由です。回復役のユミコが麻痺したまま、ほかの人の HP を気にしているうちに、回復できる人がいなくなりました。治せる人を先に治せば、残りは次のターンに回復できます。
回復は、後の人に譲る
回復でいちばん細かいのは「誰が撃つか」です。全員が同じ人を回復すると、MP を捨てることになります。そこで次のようにしています。
- 予約——回復を決めた人は「この人をこれだけ治す」と書いておく。後の人は、予約のぶん HP が戻った姿で見る(ただし人間が 35% を割っていれば重ねてでも治す)
- 全回復に譲る——まだ番が来ていない仲魔がメディカルを持っていて MP が足りるなら、その仲魔に任せる
- 全体回復に譲る——3人以上が減っていて、後の仲魔がメディカを持っていれば、自分は回復しない
- 全回復は割に合うときだけ——メディカルは、減りが 12 を超えるか最大 HP の半分以上のときに撃つ。それより浅い傷にはもったいない
状態異常と呪文の対応
| 状態 | 治す呪文 | MP |
|---|---|---|
| 石化・麻痺・毒 | クリンク | 7 |
| CLOSE・眠り | パッチ | 4 |
| 死 | リカーム | 20 |
治すのは1戦闘に1人1回です。回復役だけは、治らなければ次のターンも唱え直します。人間の状態は欄の文字ではなく RAM で読みます。欄の「状態」の列は、戦闘が終わっても書き直されず、古い文字が残ることがあるからです。
攻撃呪文は、物理より得なときだけ
攻撃呪文は、ふだんは使いません。MP は回復と治療のために取っておきます。使うのは、許された話の仲魔だけです。
- 選ぶのは、2体以上に当たる呪文のうち、いま実際に当たる頭数が多いもの。同じなら MP が安いもの
- 撃つかどうかは実測で決める。効き目の記録が3回たまるまでは「2体以上に当たるなら撃つ」。たまったら、その人の呪文1手あたりのダメージが、物理1手あたりを上回るときだけ撃つ
- 回復役は、回復4回ぶんの MP を残してから撃つ
ボス戦のための特別なコードは無い
書き出してみて、いちばんはっきりしたのはここです。戦闘のコードの中に、ボスの名前も、話の番号も、一度も出てきません。ボス戦かどうかは「逃げない」という方針として外から渡されるだけです。
ボスの手前でシナリオがするのは、どのボスでも同じ4手です。
- 決めておいた顔ぶれに仲魔を入れ替える
- ハイパーを唱える係を決める(効くのは戦闘ごと)
- ほう玉で全員を満タンにする
- 方針を「逃げない・回復する・MP を惜しまない」にする
ボスまでの道中も、どのボスでも同じ方針です。ねらいは一つ、回復役ユミコの MP をボス戦まで残すことです。
- 戦闘は逃げずに戦う(逃げるかどうかは、ふだんどおり HP と戦力差で決める)
- 戦闘中に呪文で回復するのは、倒れそうな人(30% 未満)だけ
- 歩いているあいだの回復は、呪文ではなくほう玉(ほう玉は戦闘中には使えない)
- ナカジマかユミコの状態異常は、戦闘中に仲魔が治す。ユミコは唱えない
- 歩いているあいだにユミコが治すのは、ナカジマだけ
- 仲魔の状態異常は、COMP に戻して呼び直せば治る。呪文は使わない
MP を使うのは仲魔、HP を戻すのはほう玉、仲魔を治すのは COMP。ユミコの MP に頼るのは、ナカジマが歩けなくなったときと、誰かが倒れそうなときだけです。
エナジードレインへの備えも名前を使いません。ROM の敵の技の表にエナジードレインがあれば、テトラジャを唱えられる味方に「この戦闘だけ1回」の頼みを自動で立てます。
止まったときは
- ボタンを押して30フレーム画面が変わらなければ、押し直す
- カーソルの無い画面が150フレーム続いたら、戦闘は終わったとみなす(会話中・ゲームが戦闘中の印を立てているあいだは長く待つ)
- 300フレーム何も動かなければ、戦闘をあきらめる
- 全滅したら、最後に取ったパスワードを打ち直して、そこからやり直す(同じ区間で3回まで)
話ごとに違うのは、渡す値だけ
判断そのものは一つです。話ごとに変えているのは、外から渡す次のつまみだけでした。
| つまみ | 中身 | 使っている所 |
|---|---|---|
| 逃げ方 | いつも逃げる/状況で決める/逃げない | 道中・稼ぎ・ボス戦で切り替え |
| 回復・治療 | するか、しないか | ほぼ全部の話でする |
| MP の温存 | 回復の線を 60% から 30% へ下げ、状態異常の治療を仲魔と COMP に回す | ボスへの道 |
| 名指しで避ける相手 | バグ、メデューサのかげ、ゾマ、アシュラ、ディーバ | ダンジョンごと |
| 頼む呪文 | 誰が・いつ・何を(ハイパー、クリンク、テトラジャ) | ボス戦と、治療役の仲魔がいる話 |
| 攻撃呪文 | 使ってよいか | 第28話の稼ぎだけ |
そして、そのつまみの組み合わせも、ほとんどが「ふだん」「ボスへの道」「ボス戦の手前」の3つの部品で済んでいます。部品から外れているのは数か所です。
ということは、シナリオもこの形に畳めるはずです。ダンジョンごとに「稼ぐ」「調べてキーアイテムを集める」「ボスを倒す」。戦い方はその3つで決まり、ダンジョンごとに違うのは、避ける相手と、連れていく顔ぶれと、歩く道だけ。次は、シナリオをこの形に組み直せるかを調べます。
まだ決まっていないこと
ボスへの道の決まりは、つい最近まで「必ず逃げる」でした。けれどマズルカでは、サキュバス7体の群れから逃げ損ねが5回続いて全滅しています。そこで上のとおり、戦ったうえで MP の使い道を絞る形に変えました。この形でボスまで届くかどうかは、これから測ります。
ほかの回で作った道具は ファミコン実験室 にまとめてあります。
——以上、御供餅より。今日も棚にお供えを。