0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

作るのは3日、バグ取りに14日:AIで作ったゲームのバグ14個と、Google Play クローズドテストの使い方

0
Posted at

作るのは3日、バグ取りに14日 — スパームレース開発日誌 第2回

第1回では、プログラミング経験ゼロの私が、AIに言葉で説明するだけで3日でゲームを作りました。さっそく公開しようとしたら、Google Play に止められました。新しく作った個人のデベロッパーアカウントは、本番公開の前にテスター12人以上で14日間のクローズドテストが必要だというのです。

14日。ゲームを作った時間の4倍以上です。ただ待つのはもったいないので、毎日自分で遊んでみることにしました。そして分かりました。この14日がなかったら大変なことになっていた、と。

作るのは3日、バグ取りに14日。 今回は、制作中からクローズドテスト、リリース後までに直したバグ14個の話です。

Google Play のクローズドテスト14日とは?

2023年11月13日以降に作った個人の Google Play デベロッパーアカウントは、アプリを本番公開する前にクローズドテストを行う必要があります。

  • テスター: オプトインした人が12人以上
  • 期間: そのテスターが14日間参加し続ける
  • その後: Play Console のダッシュボードから本番環境へのアクセスを申請

組織アカウントにはこの要件はありません。私はほかの個人開発者とお互いのアプリをテストし合う相互テストで、テスターを20人ほど集めました。この14日を「ただ待つ時間」と考える人は多いですが、私にとってはリリース前にバグを潰せる最後のチャンスでした。

制作3日、クローズドテスト14日、リリース後に分けたスパームレースのリリースまでの流れ

数字で見るスパームレースのコード

パソコンに残っていたバージョンファイルで、コードの量を数えてみました(翻訳ファイルは除外)。

コード行数の推移: 最初の版3,112行、制作完了6,341行、Androidアプリ8,513行、最新版13,822行

  • 最初の2日間で修正版を16回受け取り、コードは2倍になりました。
  • Androidアプリにする間に約2,250行増え、コード内の「以前はバグだった」メモは8個から17個に増えました。
  • 最初の版と最新版を比べると、約1万900行が追加されています。ただしここには、バグ修正だけでなくサバイバルモードやフレンド対戦などの新機能も含まれます。

この1万行のうち、私が自分で書いた行は1行もありません。私がしたのは、遊んでみて、それを伝えることだけです。コードは8,000行を超えましたが、リリースまで Claude Pro プランで足りました。自分のコードが何トークンかは、Claude トークン計算機に貼り付ければすぐに分かります。

「バグを探して」は通じない

最初は「バグを探して直して」と頼んでいました。AIは自信満々に「修正しました!」と言うのですが、バグはそのまま、しかも普通に動いていた別の場所が壊れていました。どこが痛いか言わずに病院へ行って「適当に治してください」と頼むようなものでした。

通じたのは、どのモードで+何をしたら+どうなったを伝えることです。正直、私の伝え方も最初はあいまいでした。下のバグ見出しのカギカッコは私が実際に言った言葉(韓国語から翻訳)ですが、「ドラッグ操作が前よりやりにくい」のように、どこでどうなのかが抜けているものも多いです。

あいまいな言い方 具体的な言い方
「バグを探して直して」 「レースでスタートラインを越えた瞬間、ラップが1/3から2/3に変わる」
「ドラッグ操作が前よりやりにくい」(私が言った言葉) 「レースのカーブで指を横に大きく動かすと、急にブレーキがかかる」

幸い、AIは直すたびにコードに「以前こういう問題があった」とメモを残していたので、バグの記録がすべて残っていました。下の画面は、そのバージョンファイルを動かしたり、直した部分だけ元に戻したりして、実際のゲームで再現したものです。そのままリリースしていたらゲームが壊れたり審査に落ちたりしたものを主なバグ、それ以外を細かいバグに分けました。

主なバグ 7

1. スタートしたらもう1周 (制作中)
レースモードでスタートの合図が出て一歩動いたら、周回数が1増えました。スタートラインのすぐ後ろに並べた精子が、ゲームからは「ほぼ1周してゴール直前にいる選手」に見えていたのです。3周レースが実質2周レースでした。スタートラインの前に並べ直したら直りました。

再現画面: スタートライン上ではラップ1/3、一歩進むとラップ2/3に変わる

2. 割り込みで1位 (制作中)
レースでは周回を終えるとコース中央へのゲートが開き、中の卵に最初に触れた精子が1位です。ところがゲートは、誰かが周回を終えた瞬間に全員に開いていました。だから私はスタートラインでじっと待ち、NPCが周回を終えてゲートが開いたら、スッと入って1位になれました。逆もありました。私が周回を終えて卵に向かっているのに、コースで迷っていたNPCが開いたゲートから入って1位を取っていったのです。

再現GIF: NPCが周回を終えてゲートが開き、まだラップ1/3の自分の精子がゲートから入って1位でゴールする

そこでルールを2つ作りました。「周回を終えていない精子は中に入れない」「卵に直接触れたときだけゴール」。どちらも遊びながらイライラして私が頼んだルールです。

3. 「ゲーム中に戻るボタンを押すとアプリが終了する」 (クローズドテスト)
レース中にうっかりスマホの戻るボタンを押したら、アプリがそのまま閉じました。1位で走っていたレースも消えました。そのままリリースしていたら、最初のレビューは「戻るボタンで落ちる、星1つ」だったはずです。ゲーム中はメインメニューに戻るように変えました。

4. 精子の賭博場 (クローズドテスト)
テスト期間中に Google Play のポリシーを読んで、冷や汗が出ました。ダービーモードに「オッズ」と倍率が表示されていたのです。走る精子にお金を賭けるゲーム。審査担当者から見れば、まさにギャンブルアプリです。倍率を星の評価(★★★☆☆)に変えました。

オッズと倍率が表示された以前のダービー画面と、星の評価に変えた画面

5. 押せばタダ (クローズドテスト)
開発中に入れた偽の購入ボタンが残っていました。押してもお金はかからず、すぐに「購入完了」。偽の広告は5秒待つだけで報酬がもらえました。プレイヤーには天国ですが、Google から見れば欺く機能です。すべて削除しました。

6. ゲーム全体がフリーズ (リリース後)
14日を乗り越えてリリースしました。終わったと思ったら、本当に怖いのはその後でした。別のプラットフォームにもゲームを出そうと審査に出したところ、却下されました。タイマーは00.0秒で止まり、レース画面は真っ黒。4つのモードすべてがそうでした。

犯人はゲームパッドでした。スパームレースはゲームパッドでも遊べるので、毎フレーム「ゲームパッドはつながっている?」と確認しています。ところがそのプラットフォームでは、ゲームパッドの確認自体が禁止されていました。確認するたびにエラー、エラーのたびにゲームが停止。自分のスマホでは何をしても起きないバグでした。あると便利な機能ひとつが、別の場所ではゲーム全体を止めていたのです。

ゲームパッドの確認がブロックされた環境で00.0秒のまま止まった黒い画面と、修正後に正常に進むレース画面

7. 外国の人に韓国語 (リリース後)
スパームレースは13言語に対応しています。ところが、その13言語以外の言語を使う人には、ゲームがすべて韓国語で表示されていました。開き直した8月20日のメモに犯人が書いてありました。「検出に失敗したら韓国語をデフォルトにする」。3日で作ったときに決めたデフォルト値が、1か月後にバグになって戻ってきたのです。今は分からない言語なら英語で表示されます。

ハンガリー語に設定したスマホで韓国語が表示されていた以前の画面と、英語で表示される修正後の画面

細かいバグ 7

ゲームが壊れるほどではないけれど、遊べばすぐ気づくものです。

  • 卵の前で無限回転: 最終周でNPCの精子が卵の前でぐるぐる回るだけで、中に入りませんでした。曲がるのが速すぎて弾き出され続けていたのです。急カーブでは速度を落とすようにしました。
  • 頭と尻尾がバラバラ: 障害物にぶつかると頭だけ後ろに弾かれ、尻尾はその場に残って、尻尾が頭の前に飛び出していました。
  • 「バックグラウンドでもゲームの音が鳴り続ける」: アプリを閉じても、画面を消しても、ゲームの音が鳴り続けていました。ポケットの中で精子が走り続けていたわけです。
  • 永遠に鳴らないBGM: 最初の再生がスマホにブロックされると、ゲームは「もう音楽を流している」と勘違いして、二度と流しませんでした。
  • 「ドラッグ操作が前よりやりにくい」: カーブで指が少し下に動いただけでブレーキと判断され、カーブのたびに急停止していました。
  • 「台風が反映されていないか見えない」: 新しい障害物がステージ29から出る設定になっていました。私はそこまで進んだことがありませんでした。ステージ12に前倒ししました。
  • AIにとって0は数字じゃない: ライバル「0人」の迷路にライバルが3人出てきました。コードが0を「値なし」と読み、デフォルトの3人を入れていたのです。原因は記号ひとつでした。

ぶつかった直後に尻尾が頭の前に飛び出したバグ画面と、修正後の画面

解決策: クローズドテストの14日間はこう使う

今まさにクローズドテストの14日を待っているなら、私の経験からまとめた3つをそのまま使ってください。

1. AIへのバグ報告はこのテンプレートで

[モード/画面] レースモード、スタジアムコース
[やったこと] スタートの合図のあとアクセルを押してスタートラインを越えた
[期待した結果] ラップは1/3のまま
[実際の結果] すぐにラップ2/3に変わった
[毎回か] 毎回
[端末] Androidアプリ(スマホの機種)
直したあと、なぜ起きたのかをコードにコメントで残して。

最後の1行も必ず入れてください。私のAIは直すたびに「以前こういう問題があった」とメモを残していたので、あとから何をなぜ直したのかを見返せました。この記事もそのメモのおかげで書けました。

2. 14日間で必ず試すチェックリスト

どんなジャンルのモバイルゲームでも使えるようにまとめました。カッコ内は私が実際に引っかかったバグです。

スマホがすること

  • ゲーム中に戻るボタンを押してみる(アプリがそのまま終了)
  • ゲーム中にアプリを閉じる、画面を消す、また戻る。音は止まるか、ゲームは続くか(消しても音が鳴る)
  • アプリを初めて起動して何も触っていないときと、最初にタップしたときに音が正しく鳴るか(BGMが永遠に鳴らない)
  • ほかの機種、ほかの画面比率で起動してみる。テスターに頼めばOK

保存

  • 設定や進行状況を変えたあと、アプリを完全に終了して再起動しても残っているか

言語

  • スマホの言語をゲームが対応していない言語にして起動してみる(外国の人に韓国語)
  • 対応言語ごとに文字がボタンからはみ出していないか

最後まで、ズルして

  • 最終ステージまで進めてみる。時間がかかるなら、AIにテスト用のスキップ機能を作ってもらう(ステージ29の台風)
  • 勝利条件をズルで突破してみる。 じっとしている、逆走する、他人がしたことを横取りする(割り込みで1位)
  • 数値の設定に0や最大値を入れてみる。敵0人、時間0秒、最大レベル(ライバル0人なのに3人登場)

ストアのポリシー

  • 画面に**「オッズ」「賭ける」「ベット」**のようにギャンブルに見える言葉がないか探す(精子の賭博場)
  • 開発用に入れた偽の購入、偽の広告、テスト用ボタンを削除する(押せばタダ)

使えない機能

  • ゲームパッド、振動、通知のようになくてもいい機能がブロックされても、ゲームが止まらないかをAIに確認させる(ゲーム全体がフリーズ)

3. 自分には見えないバグのための仕組み2つ

リリースすると、知らない端末、知らない言語、知らないプラットフォームでバグが出ます。スパームレースにはこの2つを入れました。AIにはこう頼めばOKです。

  • バグ報告ボタン: 「設定画面にバグ報告ボタンを作って。報告するとき、ゲームのバージョン、端末情報、直前のエラーを一緒に送るようにして。」AIが残したメモをそのまま引用すると、「バージョンと端末と直前のエラーがそろっていれば、たいていその場で原因が絞り込める」。
  • 止まらない仕組み: 「画面の描画中にエラーが起きてもゲーム全体が止まらないようにして、そのエラーは記録に残して。ゲームパッドのようになくてもいい機能は、使えなければ静かにスキップして。」

最初は面倒なだけだった14日間のクローズドテスト、今では感謝しています。

スパームレースを遊んでみる

スパームレースは Google Play で無料で遊べます。もしバグを見つけたら、設定画面のバグ報告ボタンを押してください。その報告が、私にとって一番うれしいものです。

AIでゲームを作るとお金と期間がどれくらいかかるか気になるなら、AIゲーム制作費計算機にジャンルと規模を入れてみてください。スケジュールにはバグ取りの時間も必ず入れましょう。私の場合は、作る時間の4倍以上かかりました。

みなさんはクローズドテストの14日間、どう使いましたか? 自分のスマホでは出なかったバグがあれば、ぜひ教えてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?