今日も今日とてスイーツハント
ドーナツ、ケーキ、スイカ、パイナップル。 今日もスイーツが届いた。そうなると、スイーツハントの時間です!
みんな好きな種類のドーナツを食べたいし、大きくカットされたスイカを食べたいです。欲に塗れています。 じゃあ誰から選べるか、それを公正にゲームで決めています。

最近までは前にインターン生が作ってくれたくじアプリで決めていましたが、 今はAIの力を借りて毎回新しいゲームを作っています。※過去のスイーツハントの記事はこちら
作っているミニゲームは20人同時対戦型のブラウザミニゲームです。 個人戦やチーム戦など形式はさまざまで、1〜2分程度でさくっと遊べます。 今のところ遊んだゲームはこんなラインナップです。
・鬼ごっこ(鬼が参加者を追い回す、逃げた時間でランキング)
・🤓探し(画面のたくさんの絵文字から🤓を探す、探した数でランキング)
・だるまさんが転んだ(鬼が振り向いたら止まれ、近づいた距離でランキング)


こんな感じのゲームでよろしく
開発の流れはシンプルです。
アイデア出し→ AIで仕様書を作成(テンプレートをもとに)
→ AIに実装してもらう
→ テストプレイして完成(必要に応じて修正)
ポイントは「テンプレート」の存在です。 ゲームの大枠の仕組み、同時接続の管理、ゲーム開始・終了・結果発表の流れをプロンプトとして書いておくことで、 AIに渡すのはゲーム固有のアイデアだけになります。

毎回ゼロから書くのではなく、決まった型の中でアイデアを展開するイメージです。 先ほど紹介したラインナップも同じテンプレートを利用して、鬼ごっこや顔文字を探すゲームにしてとプロンプトを投げると自動的にゲームが完成します。今回はこのテンプレを作るのに一番時間をかけています。
やりながら思うのは「どうしたらより盛り上がるか」という部分は、人が考えないといけないところです。ルールが面白いかどうか、盛り上がるタイミングが設計できているかどうか感覚の話で、AIに投げても返ってきません。
仕組みの話
少し仕組みの話もします。 このゲームはブラウザで動き、通信にはWebSocketというプロトコルを使っています。 参加者全員が常時サーバ役のホストPCと双方向で繋がり続けることで、 誰かが操作したら全員の画面に即座に反映されるリアルタイム感が実現できます。
ネットワーク構成はホスト型P2Pと呼ばれるシンプルな方式です。1台のマシンがNode.jsのサーバを立てて、他のメンバーはブラウザからそこに接続するだけ。全部社内のローカルネットワーク内で完結するので、外部のサービスへの登録も設定もゼロです。

参加者が増えるほど全員への通知 = ブロードキャストのコストも増えますが、macのマシンなら30人程度はほぼ問題になりません。

チート対策なども厳密に行うなら専用サーバを立てて中央で状態管理をする方が適切です。
今後は非エンジニアのメンバーにもやり方を教えて、一緒に作っていく予定です。アイデアさえあればゲームが作れる体制は、エンジニアだけで抱えておくにはもったいないので。どんなゲームが生まれるか、少し楽しみにしています。


