忍耐、ChatGPT、そして少しの幸運があれば、ほぼ動作するiPhoneゲームを手に入れることができる

忍耐、ChatGPT、そして少しの幸運があれば、ほぼ動作するiPhoneゲームを手に入れることができる

7月に、ChatGPTを使ったiPhone向けワードゲームの実験を始めました。それから2ヶ月が経ち、プロジェクトは成長を続け、同時に悩みも抱えています。

AppleInsiderの読者の皆様は、夏の半ばに私がChatGPTを使ってUnityでゲームを作り始めたことを覚えていらっしゃるかもしれません。当初は教育目的のプロジェクトとして、規模も内容も小規模なものにしていました。

わずか数ヶ月後、かつては小さなプロジェクトだったこのプロジェクトは、もはやAIサービスを使ったコーディングとUnityの使い方を学ぶための使い捨てのテストではなく、大きなものへと成長しました。その段階をはるかに超えています。

今では、開発を諦めて完了させないことが、実現させるよりも私にとってダメージとなる状況になっています。

釈放は避けられない。

シャッフルされた文字「IUJAFUQI」、44.18 秒のタイマー、「ju」の入力、ゲームオーバー メッセージ、および送信または新しいラウンドを開始するためのボタンが表示されている単語ゲーム インターフェイス。

ゲームの様子は前回の記事の最後で紹介しました。

今ではシリーズとなっている記事の最初の記事以来、作業は第 1 ラウンドよりも若干遅いペースで継続されています。

Apple専用サイトで働いているため、Appleイベントの準備期間とその後のiPhone関連記事に、普段よりも多くの時間とエネルギーを費やしています。ゲーム開発も同様にクリエイティブな作業なので、一日中脳をフル稼働させた後に、余興で思考力をさらに消耗させるのは気が進みませんでした。

進歩はまだ見られ、おもちゃというよりゲームに近いものになってきています。

ChatGPTの実現

ChatGPTはプロジェクト全体を通して現在も活用されています。前回の記事で述べたように、ChatGPTとXcodeの連携は、C#でのコード作成を支援するだけでなく、Unityでの制作方法を学ぶためにも役立っています。

これは、バイブコーディングに使える設定です。バイブコーディングとは、AIに指示を与えるだけで、ほとんど監視することなくAIが代わりにコードを書くというコンセプトです。通常、バイブコーディングではAIが作成したコードは何でも受け入れます。重要なのは、コードの品質や拡張機能を気にせず、意図したとおりに動作するアプリを迅速に作成することです。

ChatGPTを使ってコード生成を行っていますが、純粋なバイブコーディングの考え方とは大きく異なります。それは、出力結果を常に監視している点です。コードに加えた調整はすべて適用前に確認し、要素はより段階的に追加され、アップデートごとにチェックされます。バグや問題があれば、新しいものに移る前に対処します。

このプロセスを通してC#とUnityのコーディングを学ぼうとしていますが、自分が本当にプログラマーになっているとは思っていません。ソフトウェアエンジニアというよりは、プロジェクトマネージャーに近いです。

私は直接ゲームをプログラミングしているわけではないかもしれませんが、それでもゲームを作っています。

AppleInsider 向けの記事の執筆に関する会話のスクリーンショット。ChatGPT がゲーム開発の支援における役割について議論しています。

ChatGPT からの私たちの仕事に関するコメントと、会話制限の警告。

ChatGPT は多くのコード関連のタスクに引き続き役立ちますが、できることには限界があることがわかってきました。

すぐにバージョン 5 の使用制限に達してしまい、5 時間の遅延の後にトークンの許容量が補充されるまで、下位バージョンにダウングレードされました。

これはひどいダウングレードではありません。GPT-4o でも十分にコードを記述できますが、処理速度が遅くなり、「思慮深さ」がわずかに欠けたため、サブスクリプションの購入は避けられませんでした。

これを最初の本格的な開発費として考えてみましょう。うまくいけば、税控除の対象になります。

また、ChatGPT に料金を支払ったとしても、いくつかの制限があることもわかりました。

ChatGPTを使ってXcode内のファイルへのアクセスを共有することは、行数が少ないうちは問題ありません。しかし、行数が長くなるとChatGPTの読み込みに時間がかかり、コードファイルが大きくなりすぎると問題が発生しました。

当然のことながら、私はChatGPTにこの件について相談し、解決策があるかどうか尋ねました。すると、ChatGPTは時間をかけて長いコ​​ードを小さなファイルに分割してくれました。これにより、コードを論理的な塊に分割し、私でも動作がわかるようにすることができました。

意外なことに、ある警告ボックスで警告されていたように、会話にも制限があります。どうやらChatGPTは、会話が長すぎる場合は丁寧に黙るように警告してくれるようです。

ありがたいことに、会話を続けるには新しいチャットを開始するだけでよいとボックスに説明されています。

ゲームをよりゲームらしくする

最初の作業で完成した単語ゲームは、一応は機能するものの、少々初歩的なものでした。単語を提出すると、単語リストと照合され、常に増え続けるラックから削除されるという仕組みでした。

これはシンプルでしたが、常に拡張できるものでした。まず、文字をランダムに抽出するモードと、母音と子音が交互に表示されるモードの2つを作りました。もう1つは、文字タイルが入った仮想の袋から文字を抽出し、その袋が徐々に空になるモードです。

この2番目のモードは、子音を大量に入力させられた後、土壇場で母音が出てもほとんど役に立たないため、プレイするのがはるかに難しかったです。同時に、交互バージョンにはプレイ上の制限があり、盤面が母音で溢れてしまう可能性がありました。

「BAGS」という単語、+46 のスコア、タイマー、文字タイル、および「送信」や「シャッフル」などのコントロール ボタンが表示されている単語ゲーム インターフェイス。

パワーアップ、タイルの色分け、よりモバイルフレンドリーなレイアウトにより、Character Limit が現在の外観になりました。

パワーアップの導入です。ChatGPTとアイデアをブレインストーミングした結果、賢いプレイヤーを助けつつ、より複雑な要素も加えた3つのパワーアップに落ち着きました。

単語にワイルドカードを追加するのは、送信された単語の追加の「文字」に対応するために単語リストのチェック機能を作り直す必要があったため、最も困難でした。

これに続き、様々なイベントに乗数付きのスコアシステムが実装されました。例えば、QやXを使ったり、ゲームオーバー画面が表示される直前の「セーブ」をしたりすることで、より多くのポイントを獲得できます。

そうすることで、実際のゲームにかなり近づき、将来的に競争的な要素が追加される可能性があることを想像するのは難しくありません。

愚かさとさらなる仕事

ゲームの現状は、長時間プレイするには見栄えは良くないものの、プレイには問題ないレベルです。メインメニューやプレイヤーの快適性に関わる要素など、改善が必要なビジュアル要素は数多くあります。

ありがたいことに、私にはパートナーという形で社内にアート部門があり、それを手伝ってくれます。

長い議論の末、ついに名前が決まりました。「Character Limit(文字数制限)」です。バーチャルレターラックには文字数制限があるので、この名前は理にかなっていますし、仮題の「LexBlitz」よりもずっと良いですね。

ベネット・フォディのやり方を踏襲してゲームのタイトルに自分の名前を入れるのは魅力的だが、「マルコム・オーウェンの文字数制限」は、長期的に対処するには少々深すぎるジョークだ。

Classic、PureRandom、TimedSurvival、Zen などのさまざまなゲーム モード (Classic が選択されている) を表示する文字ゲーム スクリプトの設定メニュー。

ゲーム用に作成されテストされたさまざまなモードの例。

オーディオは追加する必要があるもう 1 つの部分です。私は独自のオーケストラを持っておらず、Garageband の使い方もよく知らないため、他の方法で音楽を入手するという選択肢もありました。

Humble Bundleでロイヤリティフリーの音楽パックをいくつか入手できたのは幸運でした。山ほどある音楽の中から、自分にぴったりの曲を見つけるのは大変です。

他にも入手すべきインターフェース サウンドはありますが、そのようなものについては、オンライン上に無料 (かつ商用利用可能) のソースが多数あります。

しかし、まだ実装していない大きな機能が一つあります。これは深夜のちょっとした愚行が原因です。仮想バッグから選ばれる文字の確率の重み付けを作成しているときに、アルファベットを限定したカスタムバッグを作ろうと思いつきました。

タスクリストと図表が描かれたホワイトボードが2枚。1枚にはカラーペンが貼られています。リストには様々なタスクとメモが詳細に記されており、優先度に応じて色分けされています。

ホワイトボードの1枚には、ゲームのToDoリストが長々と書かれています。ホワイトボードは複数あります…。

そこで、ウェールズ語で使われる文字だけを集めた袋を作って、それを使って英語の単語を作れないかと考えました。それから、ウェールズ語の単語リストを無料で公開していて、それを単語リストとして使えるようにして、ウェールズ語でも遊べるようにできないかと考えました。

これがきっかけで、ウェールズ語の膨大な辞書を作成しているウェールズ大学にメールを送り、使えるウェールズ語の単語リストを無料で提供してもらえるか尋ねました。すると、思いがけず返信があり、承諾して、適切なクレジット表記をすればゲームで使えるスプレッドシートを送ってくれました。

単語ゲームとしては奇妙なほどニッチな取り組みですが、実はデザインに少しは貢献しています。ウェールズ語の弱点をすべて含めて、英語とウェールズ語でゲームを動作させることができれば、他の多くの言語にも対応できるほど堅牢になるでしょう。

これはゲームのローカリゼーション検討の始まりです。言語が全てであるゲームでは、ローカリゼーションを実践するのは予想以上に困難です。

技術的に機能的

現状、動作するゲームが完成しました。主要なゲームプレイ要素のほとんどが揃っており、どちらのモードでも英語版で基本的なラウンドをクリアすることは可能です。

この時点で、ゲームを実際に他の人に公開し、テストする必要があります。コンセプトがうまく機能することを確認し、将来的にプレイヤーにとってより良いものとなるよう、どのような調整が可能かを検討します。

青い背景に「文字数制限」と書かれた大きな白い文字と、テキスト オプション (「通常 エンドレス」、「バッグを空にする」、「終了」) がそれぞれユーモラスなメモとともに表示された 3 つの灰色のボックス。

ゲームに(シンプルな)メインメニューが追加されました。テストも間もなく開始されます。

初めてのゲームを皆さんに公開するとなると、多少の不安を感じます。批判的なフィードバックを期待しているからです。このゲームは私の宝物ですから、苦情や提案は受け入れる必要があるものの、守りたいという気持ちが強くなるでしょう。

デザインを少し調整してモバイルフレンドリーにしているので、iPhoneとiPadでのテストも検討する必要があります。Mac版のゲームのテストは、Unityが実行ファイルを出力するので比較的簡単ですが、iPhoneとiPadではAppleの開発ツールを使用する必要があります。

Testflight のようなものを利用するには、Apple の開発者プログラムの有料版に登録し、App Store Review プロセスの癖や欠点について学ぶ必要があります。

ゲームのマーケティング、販売後のサポート、Steam や Epic Game Store などの場所を検討する必要があるかどうかの判断など、他の多くの要素もまだ整備する必要があります。

既存の大手ゲーム開発会社にとって、これはパブリッシャーの支援と資金援助が不可欠となる分野です。Devolver、Team 17、あるいは私の国のWales Interactiveのような企業が、このようなタイトルの開発に携わるとは考えにくいので、すべては私にかかっています。

そしてChatGPTも。