カレンダー

2023/04
      
      

広告

Twitter

記事検索

ランダムボタン

遊び心が見つけたバグ

by 唐草 [2023/04/25]



 ゲーム開発中は、確認したい状況をすぐに再現できるように極端な設定にしたり、デバッグ用アイテムを設置したりする。チートを使って没データを参照すると、その痕跡が見て取れる。ぼくが開発中のゲームにもそのような機能がある。
 その手の機能を使っていると通常では目にできない面白いことが起きたりする。今回の開発では、そういう面白映像をPRの一環として発信することにしている。
 今回は敵の速度がプレーヤーの16倍になった際の理不尽な様子を公開しようとした。ターン制ローグライクでは2倍速でも恐ろしい。その8倍だとどんな悲劇が待っているのか見てもらおうと考えた。
 だが、この目論見は新たなバグの発覚で大きく狂ってしまった。
 敵の速度がプレーヤーより極端に早いとゲームが止まる致命的なバグが発覚したからだ。バズりもしない自称おもしろ動画を作っている余裕なんてない。すぐに原因特定とプログラム改修をしなければならない。
 バグの改修には半日を要した。
 今回のゲームでは敵の行動で操作を受け付けなくなる時間を最小にしようと工夫している。複数の敵が、1匹ずつ動くのを待つのは気持ちよくないからだ。もっと言えば、敵もプレーヤーと同じタイミングで動いてほしい。これができれば、プレーヤーは連続して歩ける。
 一方で、複数の敵が同時に攻撃してくると何が起きているのか分からなくなる。なので、攻撃は1匹ずつ実行してほしい。
 操作の気持ちよさを実現するために、上記のようなワガママに対応したプログラムを組んでいる。プレーヤーが行動を指示するのと同時に次のターンまでの敵の行動をすべて予約して、移動は一気に表示、攻撃は個別に表示するようになっている。これをアクションスタック方式と名付けて悦に入っていた。
 今回のバグは、得意げに語ったアクションスタックが原因。同一敵キャラが連続して移動する場合、複数の行動予約を1つにまとめてスリム化する処理にミスがあった。
 これまでの普通のテストでは完全に見落としていた。だって、普通16倍速の敵とか実装しないし。そんな敵がいたら間違いなくクソゲーだもの。