DEV LOG — CHAOS 02
画面を見ても気づけない
不具合にやられた
コードはほぼ全部 Claude Code に書いてもらっています。なので『カオスソードガーデン』でいちばん時間を取られたのは、仕様をプロンプトに書き出すところでした。
動いているように見えるのに間違っている。これがとにかく厄介なんですよね。
2026年9月17日 · カオスソードガーデン
Ⅰ動いていても正しいとは限らない
プログラムはほとんど Claude Code に書いてもらっています。こっちが仕様を決めて文章で渡し、返ってきたものを遊んで確かめる。1作目のフェイブル・オブ・アビスのときも同じやり方でしたが、2作目のほうが明らかに大変でした。
理由ははっきりしていて、弾幕シューティングは間違っていたら見て分かるんです。弾が変な方向へ飛べば分かるし、当たらないはずの弾に当たれば分かる。画面がそのまま答え合わせになってくれます。
ところが剣戟アクションは違いました。ガードや回避や発生の仕様は、画面を見ただけでは合っているか分からない。斬られた。ガードしたはずなのに。……いまのは自分の入力が遅かったのか、それともガードが効いていないのか。判別がつかないんですよ。
この「間違っていることに気づけない」という状態が、作っているあいだずっと続いていました。
Ⅱ実際に起きていたこと
自分で遊んでいて見つけて、直してもらったものをいくつか挙げてみます。
技を振っている最中でもガードできてしまう
ガードは何もしていないときだけ構えられる、という仕様にしていました。振る前に受けるか避けるかを決める、というのがこのゲームの読み合いの中心なので。ところが実装では、発生中や後隙中にもガードのコマンドが通ってしまっていました。
こうなると、とりあえず技を振っておいて危なくなったらガードすればいい、という戦い方が最適になります。発生と後隙でリスクを表現した意味がまるごと消えてしまいます。
回避の受付時間中にも他の行動が取れる
同じ種類の問題です。回避には受付時間があって、そのあいだは他の行動を取れないはずでした。ここも塞げていなかったので、あとから修正しています。
中断されたスキルの自己強化が残る
自分を強化するスキルが、ひるみで中断されたときに起きました。技そのものは不発になるのに、強化の効果だけ乗ったままになっていたんです。これ、画面上ではまったく分かりません。ダメージの数字が微妙に高いだけ。しばらく気づきませんでした。
3つとも、「ある状態のときに、ある操作を受け付けない」という条件がまるごと抜けていました。そして3つとも、Claude Code が間違えたわけじゃありません。自分が渡したプロンプトに、その条件を書いていなかっただけでした。
Ⅲ結局、指示を出した自分が悪い
このゲーム、コードはほぼ全部 Claude Code に書いてもらっています。なので自分の仕事は、仕様を決めて、それを文章にして渡すところまでです。前の節で挙げた3つは、どれもその文章のほうが抜けていました。
たとえばガード。「ガードは何もしていないときだけ構えられる」と書いて渡したんですが、「何もしていない」が何を指すのかを書いていなかったんですよね。移動中は? 技の発生中は? 後隙中は? ひるみ中は? 自分の頭のなかでは決まっていたんですが、頭のなかにあるものは当然ながら伝わりません。
で、ここが厄介なところなんですが、書いていない部分にも、ちゃんと筋の通った実装が返ってきます。「何もしていない」を素直に読めば「ガードのコマンドを押していない状態」とも取れるので、そう解釈されればああいう挙動になる。デタラメが返ってくるなら気づけるんですが、それらしく動くものが出てくるので、そのまま通ってしまいました。
人に頼んでいれば「発生中はどうします?」と聞き返してもらえたかもしれません。ただ、こっちが断定的に書いているぶんには、疑問を挟む余地もなかったと思います。雑な指示には雑なりの答えが返ってくるという、わりと当たり前の話でした。
じゃあどう渡せばよかったかというと、キャラクターが取りうる状態を、先にひとつずつ書き出しておけばよかったんです。移動中、発生中、後隙中、ひるみ中、回避の受付中。これを並べて、それぞれで何を受け付けて何を受け付けないかまで決めてから渡す。そこまでやれば、埋まっていない欄が自分でも見えます。散文で「〜のときだけできます」と書いているかぎり、抜けは抜けたまま通ってしまいました。
最近はこれを意識して、仕様を渡す前にいったん表の形に起こすようにしています。手間は増えますが、あとから「動いてはいるけど間違っている」を探しにいくより、はるかに安上がりでした。
じつは1作目でも同じことをやっています。シンデレラの盾が「自機の弾とレーザーは止めるのに、ボムだけ貫通する」状態になっていました。あれも攻撃の経路が3つあることを、自分が書き出していなかったのが原因です。ジャンルもコードも別なのに、指示の抜け方だけは同じでした。
Ⅳ立ち絵は生成 AI で作りました
登場する相手の立ち絵は、すべて生成 AI で作成しています。個人制作で13人ぶんの絵を用意するのは、ほかの手段だと現実的じゃなかったので。
公開後に一度、1戦目の相手の立ち絵を差し替えました。
Ⅴゼロから作るのはまだ難しい
作り終えての実感は、0ベースでゲームを作るのは難しいということでした。
1作目の弾幕シューティングには、ジャンルとしての型がありました。自機があって、弾があって、ボスがいる。何を作ればいいかは最初から決まっていて、あとは中身を書くだけ。判断に迷う場面がほとんどありません。
2作目にはそれがなかった。間合いを入れるかどうか、ひるみをどう扱うか、スキルをいつ組み替えさせるか。このへんは Claude Code に投げようがありません。書いてもらうには先にこっちが決めておく必要があるし、しかも決めたことが正しいかどうかは実際に動かしてみるまで分かりません。間合いを足す前の単調さなんて、まさにそれでした。
なので今後しばらくは、ジャンルとしてベースが固まっているものを作ったほうがいいなと感じています。次に予定しているのはターン制のコマンドバトル RPG です。これも型のあるジャンルですね。
カオスソードガーデンのほうは、細かいバランス調整を随時続けていきます。気になった点があればお問い合わせから教えてください。