冷たいスイカでもかじりながら(東京の夏が始まったばかりで、すっかりスイカに夢中なんです 🍉)、ちょっとしたお話に付き合っていただけませんか? 私たちのような小さなチームが、ある突拍子もないアイデアを、どうやって命の吹き込まれたウェブゲームへと育て上げたのか、その舞台裏をお届けします。
ここ数年のGoogle I/Oに参加された方なら、パンデミック期にGoogleの主要イベントを支えた仮想カンファレンス技術 Adventure を覚えているかもしれません。広大で、美しいイラストに彩られ、みんなでワイワイ集まれる素敵な空間でした。ただ、システムとして少し重く、一回限りのイベント向けで、運営には人間のモデレーター陣が文字通り「総力戦」で挑む必要がありました。
数ヶ月前、私とトム(Tom)はこんな問いを自分たちに投げかけ始めました。「もし、あのAdventureを全く新しい形で再定義したらどうなるだろう?」 単発のカンファレンスではなく、開発者がお堅いドキュメントを読む代わりに、「バイブス・コーディング(vibe coding)」 やゲームプレイを通じて生成AIの原則を学べるような、居心地の良いレトロな世界を作れないだろうか?

それが AIventure の始まりの火花でした。ここからは、私たちが実際にこれをどうやって形にしていったのか、その軌跡をお話しします。
ステップ 1:Gemini Canvasでの落書きとプロトタイピング
どんな素晴らしいゲームも、すべてはプロトタイプから始まります。AIventureの開発では、最初から複雑なエンジンコードをガリガリ書き始めたわけではありません。まずはGeminiの中で、コンセプトをあれこれいじくり回すところからスタートしました。
私たちが求めていたのは、画面を左右に分割したUIレイアウトでした。UIパネルや全体の配置を管理する高機能なフロントエンドフレームワーク(Angular)のなかに、実際のゲームエンジンとしてレトロなキャンバスを描き出す Phaser.JS を組み込むという構成です。これは、前回のI/Oのデモで作った「Living Canvas」と同じアプローチですね。
まずは様々なスタイルでシンプルな学習用パズルゲームを作ってみました。そして最終的に、見下ろし型(トップダウン)のレトロダンジョンというスタイルに落ち着きました。私たちが目指した世界の「バイブス(雰囲気)」に、これが一番しっくりきたからです。この時、トムが「昔のAdventureの精神とビジュアルを復活させたらどうだろう?」という素晴らしいアイデアを持ってきてくれたおかげで、世界観にパシッと一本、芯が通りました。
Gemini Canvas で作成した初期プロトタイプのスクリーンショット

ステップ 2:部屋のデザイン(バイブス・コーディングとエージェントロボット)
土台となるロジックが動くことを確認すると、トムと私はさらに踏み込んだパズルの仕掛けをブレストし始めました。AIを単なる「鍵と鍵穴」のような単純なギミックにはしたくありませんでした。現代のLLM(大規模言語モデル)が持つ、あの魔法のようなワクワク感をちゃんと見せたかったのです。
そうして生まれたのが、私たちお気に入りの2つの部屋です。
- バイブス・コーディングの部屋(The Vibe Coding Room): プレイヤーに「AI支援によるUIデザイン」という概念に触れてもらいたいと考えました。この部屋に入ると、ゲーム内でiFrameのタブが開きます。プレイヤーが 「食べるボタンと寝るボタンしかない、ニワトリのためのToDoアプリを作って」 とプロンプトを投げると、AIがその場でウェブページを爆速で構築。プレイヤーはゲーム環境のなかで、自分のコードと画面のアップデートを即座に確認できます。

- エージェント・パズル(The Agent Puzzle): 自然言語の指示を受け取り、Phaserのグリッド世界を実際にトコトコ動いて実行してくれる、小さなロボットのNPCキャラクターを登場させました。プレイヤーが 「行ってスイッチを切り替えてきて」 と言えば、モデルはツール呼び出し(Tool-calling)と推論を使って、その指示を具体的かつ段階的なゲーム内のアクションに分解して実行します。














