しゅれでぃんがー 2020/05/24 13:16

デバッグのすゝめ

 最近、Ci-enで公開されている体験版で、これはと思う作品を勝手にデバッグしてはレポートを上げるという活動をしていたりする。一番最初にデバッグさせてもらったところで、すさまじいアセットを積み重ねさせていただけたので、これは活動としてやっていけるな、と判断してのことである。でもレポート送られる方にしてみれば、いきなりデバッグレポートをDMしてくる怪しい奴、でしかないので。その辺は勘違いしないよう、自分が怪しい存在であると自覚して活動を続けようと思う。

 閑話休題。せっかくアセットもあることだから、ブログに来てくださる人達にはそれを公開しようと思う。隠すようなものでもないし。ただし。一番最初にデバッグの心得を書いておくので、製作者さんで無い人がデバッグする時はそれを必ず守ってくれ。これは申し訳ないが絶対だ。破ったら私が許さないぞ。出来ない場合、ただのお節介になるから自発的にデバッグなんてしないほうがいいぞ。


デバッグの心得

1.作っているのは製作者さん。自分は部外者であることを自覚する。
 知り合いじゃないなら馴れ馴れしくしない、ゲームに過度な口出しをしない。提案が却下されても文句言わない。でも、提案すること自体は良い。その際、必ず「不採用であればスルーしてください」的なことを付け加えて、相手が重く受け止めないように釘を刺しておく。自分が作ってるわけじゃない、ということを忘れないように。

2.相手が怒ったら潔く退く
 デバッグしてたらどうしてもぶつかることがある。ただ、デバッグしたせいで揉めてゲームの制作が遅れたり、制作自体が中止されたら本末転倒である。相手が受け止め切れなさそうなら、諦めて退くのも大切である。もうレポート要らないです、って言われたら、ちゃんとデバッグ中止しようね。

3.あまり目立たないようにする
 製作者さんはたくさんのユーザーさんと関係性を作っているので、人目につくコメント欄とかでやり取りしてると、他の人とは別の関係性が見えてしまうことが出てくる。そうなると他の人との兼ね合いで不味いので、レポート送る時はDMやメールにしておいた方がいいだろう。他人の関係性を壊すようなこともしないように。ゲームが仕様通りにリリースされればそれで良し。邪な気持ちでデバッグしないように。


 上記を守れる人だけが、デバッグのスタートラインに立てる。次は、デバッグの知識を公開しよう。この部分は随時更新される。更新したら、更新履歴で周知するぞ。


報告の方法

 基本は文章のみで、発生した時の状況を出来るだけ細かく記す。できれば何回も同じ事をしたり、バグの原因っぽい行動をしてそのバグが起こるかを確認。そうやって原因を究明してから報告するのがベストである。

 バグが起こった時点でセーブデータを分けてセーブしておき、いつでもそのバグった状態が見られるようにしておくのも有効だ。スクショも取れたらなおいい。

 最終手段として、セーブデータを直接メールなどで送る。これをすればだいたい解決する。しかし、毎回セーブデータ送るのは手間なので、本当に意味の分からないバグの時にだけの方がいいだろう。


修正されたら動作確認しよう

 バグが修正されたら、修正バージョンのゲームが上がってくる。だいたいver0.01とかから順に番号が上がっていく。その際、修正一覧(を同時に上げてくれるサークルさんはとても良い人)を見て、その修正箇所が正常に動作しているかを確認する。バグ修正した結果、新しいバグが発生していることもあるからだ。もちろん修正しきれていない時もある。それらを確認したら、また報告する。根深いバグなんかは結構長生きするので、根気よく確認するのが大切だ。

 なお、誤字脱字については修正確認しない。言った時点で直してなかったらそれは相手の問題である。工数がかかりすぎるので、これについては報告するだけにしている。


選択肢でのキャンセルボタン

 ツクールだと選択肢フラグを使った場合、キャンセルボタン禁止の処理をしてなかったら、キャンセルボタンを押すと選択肢の一番下を参照してしまう、というケースをよく見た。これは「やっぱりやめる」などの、キャンセルコマンドを設定していないから、別の選択肢が発動してしまうからだ。

 だから選択肢がある場合、まずとりあえずキャンセルボタンを押して見るといい。そうすれば異常動作をするので、それを報告しよう。キャンセルコマンド実装するか、キャンセルボタン禁止処理を設定してくれるだろう。


マップの端っこやオブジェクトの上を歩いてみよう

 町やダンジョンは、マップの端っこ。壁に沿って延々歩いてみる。その際、一マスずつ壁に向かって歩いてみるとなおいい。何故そうするかというと、通行禁止という属性(があるらしい)の指定漏れがあると、そこを突き抜けて画面外に歩き出せることがある。歩けてはいけない部分を調べるのだ。

 あと、町中だと花壇とか。石の柱とか、樽とか。机とか。そういうのが指定漏れで乗れたりするから。余裕があれば、そういうのも調べて見るといいだろう。その際、そこが乗れていい場所かどうか分からないのなら、「これは仕様ですか?」と、レポートに記載しておけばいい。仕様じゃないなら、次回の更新で修正してくれるはずだ。


ネームプレートとテキストボックス

 キャラクターが話す時、メッセージボックスの上に名前が表示されるタイプのゲームがある。あれは、メッセージボックスの上に名札のような画像素材を後から追加しているようだ。なので、時々ネームプレートが無い会話文があったりする。それもバグ。追加し忘れなので報告しよう。

 ちなみに、ネームプレートはプレートだけ挿入して名前はテキストボックスを追加して入力しているタイプと。ネームプレート自体に初めから名前を書きこんで置いて一括保存し、キャラごとにネームプレートを画像素材として保存しているタイプがある。後者はキャラの人数分ネームプレートが必要になるから単純に容量を圧迫するし、挿入ミスで別キャラに別の名前を入れたりしそうかも。

 テキストボックスで名前を入力するタイプは、その名前を中央揃えとか右揃えとかで調整してる場合はそれの指定し忘れで変な文字の寄り方をしている時もある。それもバグ。


参照関数

 キャラのセリフを読んでいると、時々唐突に数字だけ表示されていたりする。それは割り振られた番号のキャラや要素を、その数字で参照して表示するという関数が使われる部分かもしれない。そういう時もそのセリフを丸々写して、バグ報告として上げよう。逆に、本来状況によって変更されるべきセリフの部分がいつも同じ、という場合は関数で参照するべきところを直接入力で文字を入力してる、という場合もある。さらに、参照関数の後ろにさらに直接入力の文字で二重に入力しているなんてケースもある。誤字脱字だけでなく、セリフや文章にはたくさんのバグが隠れている。


マニュアルを読もう

 ゲーム内のtips、ゲームファイルにあるテキストのマニュアルなど。それらの文字データにも誤字があるかもしれない。修正を続けた結果、マニュアルに記載された要素と現状のVerの乖離があるかも。そういうのも確認して報告するといい。

 この辺はうっかり忘れがち。しかもなかなか気づかない。


立ち絵に被っている

 固定イベントで、マップ上にドット絵のキャラが配置されて画面手前には立ち絵キャラが配置される会話イベントがあるとする。しかし、マップの前に立ち絵が表示される関係上、ドットキャラが立ち絵キャラの後ろに隠れて見えないという現象が起こる。これもバグ。こうなるとキャラが見えないせいで、ドットキャラが感情表現で音符や……なんかのフキダシエフェクトが見えなかったりする。それもバグ。


店の買値売値

 店売りの商品は、売値と買値を目視で点検する。買値より売値のほうが高い場合もあるからだ。そうなると、無限にお金が稼げてしまう。あと、実際に購入して本当に書いてある通りのお金が減るのか、増えるのかを見るのもいい。内部的に別の金額を設定してしまっているケースもあるからだ。

 まあ、致命的なバグじゃないからデバッグの時間が余った時だけでいいと思う。フリーズさえなければひとまず修正で済ませられるので。優先してする必要はないよ。


所持金増減時の挙動

 例えばお金をスられたりとか、強○的に奪われたり。逆に、お金をもらったりするイベントがあったとする。その時は、実際に表示されたお金が増えたり減ったりしているかを調べなくてはいけない。何故なら、表示は出てるけどお金の増減のフラグを設定し忘れてる場合があるからだ。

 それと、これはアイテムでも同様のことが言える。たとえば依頼でなにかアイテムを求められて、それを持って行って「〇〇を渡した」とかシステムメッセージが出るとする。でも、この時にアイテムの増減数の設定をし忘れていたら減らないし、+と-を間違えていたら逆に増えたりする。こういうのも地味ながらよくある。

 あと、イベントマスを踏んだら発生するのであれば。そのマス目を何度も踏んで、そのイベントが複数回発動しないかも調べる。イベントフラグリセットの指定し忘れがあると、何度でも発動する。ということは、お金がもらえるイベントだったら、いくらでもお金がもらえてしまう。


分身

 ライフ系ゲームだと、一定のフラグを満たすとキャラクターと個別イベントが見られたりする場合が多い。その時、そのキャラを仲間にした状態だと、イベントフラグで配置されているキャラと、仲間にいるキャラのフラグが並列してしまい、ゲーム内にキャラが2人いる、という状態になりやすい。

 キャラ別イベントがあるゲームなら、そのキャラを仲間にした状態でその場所へ行くとどうなるか、という挙動を見るのが基本だろう。だいたい増えるから。


全滅フラグ

 あるイベントで、仲間キャラがイベント担当キャラ以外パーティーから外れるという処理があるとする。その時、イベント担当キャラが戦闘不能だった場合。ゲームオーバーフラグを満たし、ゲームオーバー画面に移行する場合がある。

 仲間が外れるイベントがある時は、戦闘不能時の挙動を見るのもいいだろう。なお、戦闘不能状態で戦闘終了した時、HP1で復活する仕様のゲームならこれは起こらない。


全部の選択肢を選んでみよう

 あるイベントで、複数の選択肢があるとする。その場合、明示された選択肢は全部選んでみよう。きちんと動作するかチェックするのだ。その時、フリーズが起こるかもしれないし。演出ミスで不自然な挙動をするかもしれない。会話時の表情変化の指定がおかしくて、立ち絵の不具合が出る場合もある。ただこれだけのことでも、バグがたくさん隠れていたりする。


イベントマスを全部踏む

 たとえば、横3マスの橋の上で、横一列に、踏むとイベントが発生する判定が置いてあるとする。階段でもいいけど。その時、右端だけイベントフラグが指定し忘れてて素通りできるかもしれない。イベントフラグが円状に配置されている場合なんかはこういうのが多い。なので、イベントマス形式でフラグが置かれてる時は、その直前でセーブして全部のマスを踏んでみる。ちょっと手間だが、これも大事なことだ。

 あと、イベントフラグのリセット処理を指定し忘れてたら、そのマスを踏むたびに同じイベントが何度も起こったりする。だから、通りすぎず何度もその上を通過するのも大切である。


服装変化

 例えば、服をプレゼントしたら着替えるとか。装備したらキャラのグラフィックが変わるという仕様の場合。立ち絵も変わるなら立ち絵がきちんと正常に変化しているか。戦闘中のグラフィックも変わるならきちんと変わってるか。イベントの時も着替えてるかちゃんとチェックする。特に、イベントの時は別フラグでキャラを配置していることが多いので、そのイベントの時だけ着替えてない、というケースが多い。


装備品が装備できるか

 これはグラフィック変化と複合して調べる部分。その装備品、実際は装備できないかもしれない。〇〇専用装備、って書いてる時は、もしかしたら別のキャラも装備できるかもしれない。そういうのも調べる。あと、アイテムが鍛冶屋で強化できる、とかあるなら、ちゃんとMAXまで強化できるかも実際に調べたほうがいい。できないことがある。


イベント中キャラが移動する場合のフリーズ

 イベント中、キャラが勝手に別の地点へ移動する演出もあると思う。その時、そのキャラの移動経路に主人公や、仲間のキャラが既に立っていた場合。移動すべき地点にキャラが移動できないからフリーズする、ということがよくある。これは仲間が複数いる状態で移動してた時、仲間キャラが主人公の後ろを列車状態でついてくるから起こる、というケースが一番多かった。地味だが、明確なフリーズ要素なのでこれはきっちり潰したいところである。とにかく、イベント中や、そのマップからまだ出られない、ということで強○的に一歩下がらされるタイプのイベントでは要注意である。


町に入る時のバグ

 町があったとして、普通に入る場合と空から入る場合(ドラゴンでも飛空艇でも何でもいい)と海から入る場合とテレポートで入る場合の4種類があったとする。その時、特定の方法で町に入ると、町のイベントリンクが間違っていたりする。本来入れる町ではなく、ずっと後で起こるイベントが発動した状態の町に入ったりするのだ。だから、移動手段が複数ある場所だと、全部のパターンで侵入してみるのも大事である。


イベントアイテムが複数個もらえる

 たとえば、家に郵便物が自動で届くイベントとか(ポストに自動で入ってる)。話しかけるとアイテムがもらえるイベントがあったとする。その時、一度発動したらリセットする、というフラグを設定し忘れていると、何個でもアイテムが届いたりもらえたりする。

 その日から毎日郵便受けを調べたり、毎日話しかけて見たり。連続で話しかけて見たり。リセットフラグ設定し忘れをチェックしよう。


全体効果アイテム、アイテム効果

 アイテムは使用すると効果を発揮するが、できたらこれも全アイテムを使用して、本当に仕様通り、アイテム説明に記載通りの動作をするかチェックしたほうが良かったりする。よくあるのは、全体効果アイテムの効果設定し忘れとか、単体しか効果が無いとかだ。アイテムの説明と実際のアイテム名が別になってたりする場合もある(合成や鍛冶なんかでアイテムを作成する時、完成後のアイテム名が合成選択肢のアイテムと違う、なんてのはよくある)。

 これも致命的バグにはなりにくいが、もしかしたらフリーズもあるかもしれない要素だ。だが、デバッグ優先順位としては低い。


イベントで貰えるアイテムとテキスト

 例えばクリスマスのイベントがあって、ゲーム内キャラクター全員のうちランダムで1人からアイテムが届くとする。そのキャラクターが30人いたとする。この時、貰える相手は選べないとする。そうすると、この30人がくれるアイテム、そして添えられたメッセージカードの文章の誤字脱字とゲーム内リアリティを逸脱してないかを調べる。要するに、全員分のプレゼントを実際に入手してみないといけない。しかし、これはとてつもなく時間がかかる。これを優先した結果、他のフリーズバグが残ったりしたら大変なことになる。

 時間があればもちろんやったほうがいいのだが。こういうのはフリーズに繋がりにくいので、割り切って諦めてしまうのも手である。フリーズ以外のバグはプレイに支障は出ないので、リリース後に修正しても充分間に合うだろう。


ゲームシステムにそぐわない描写文

 例えば、スキルツリーシステムで魔法なんかを覚える場合。あるイベントの会話文で、魔法を使うみたいな文章が書かれたとする(【エクスプロージョン】で岩を爆破するとか、毒を【浄化】で治してあげる、みたいなの)。しかし、もしその言葉を発するキャラが、そのスキルを覚えていなかった場合はどうするのか。きちんと差分を用意するのか(if文かな?)。差分を用意しないなら、その文章を表示した時点でその作品のリアリティは完全に破綻する。

 室内だと使えない魔法をイベントで使用していたりする、とか、描写文では〇〇を使った、とあるのにエフェクトが無いとか。そういうのを見つけた時は、たとえ細かくても指摘したほうがいい。これは大事なことである。


再現できないバグ

 たまたま遭遇したけれど、セーブや詳細をメモし忘れてしまった。どうやっても再現できない。そんなバグがある。それのために何時間も色々試してみるが、ダメ。再現できない。そういう時は潔く諦めよう。それのために何日も時間を消費し、そのせいで他のバグが素通りしてしまったら本末転倒である。それだけ試して再現できないなら、リリース後にユーザーさんが踏む確率もかなり低い。踏んだユーザーさんが優しかったらバグ報告してくれる。それに期待して、気持ちを切り替えて他のバグを探しにいこう。


 【ゲームを仕様に近づけていく】のがデバッグというものである。しかし、小規模で制作している場合、明確な仕様書を用意しているところは殆ど無い。そうなるとデバッグするのはキツいが、だからといって仕様書を出せ、なんて言ってはいけない。いたずらに工数を増やしてしまうからだ。無理を言うのはやめよう。

 だから、些細な事でも仕様確認。とにもかくにも仕様確認。返答が無くても別にいい。仕様確認して、そこを調整したりしなかったりするのは製作者の領分である。デバッカーが口出しすることではないのだから。

この記事が良かったらチップを贈って支援しましょう!

チップを贈るにはユーザー登録が必要です。チップについてはこちら

月別アーカイブ

記事を検索