🤖 AIを活用してゲームマニフェスト(manifest.json)を一発自動生成するガイド
ひつまぶし(OmoshiroGamePortal) では、クリエイターが制作した自作Webゲームを簡単にポータルへ掲載し、日常のクイック対戦や**公式大会モード(1on1トーナメント、総当たり戦、総合順位グランプリ)**で遊べるエコシステムを提供しています。
ポータルとの連携や大会への適合判定には、ゲームのルート直下に配置する manifest.json(ゲームマニフェスト) が不可欠です。しかし、「仕様書を読み込んでJSONを手書きするのは面倒」「記述ミスで大会フィルタから外れたら困る」という声も少なくありません。
そこで本記事では、ChatGPT、Claude、Cursor、Claude Code 等にゲームのコードを渡すだけで、100%仕様に合致した manifest.json と大会適合レポートを一撃で生成できる 公式AIプロンプト の活用法を詳しく解説します!
1. 公式AIプロンプトの取得
マニフェスト自動生成プロンプトの全文は、公式ドキュメント専用ページにて公開しています。以下のリンクからワンクリックでコピーしてご利用いただけます。
📋 公式プロンプト全文・コピペ用ページ:
👉 マニフェスト自動生成 AIプロンプト(/docs/manifest-prompt)
(※上記ページからプロンプト全体を一括コピーできます)
2. AIがコードから自動解析してくれる4大項目
公式プロンプトは、ゲームのソースコード(HTML/JavaScript/TypeScript等)を読み解き、ポータルの大会エンジンに必要な以下のパラメータを自動で特定します:
| 解析項目 | コードからの判別ルール | 生成されるマニフェスト |
|---|---|---|
① プレイ人数 (players) | プレイヤー管理配列の長さや p1/p2、config.players の参照箇所から判定 | min, max, type (fixed/variable) |
② 勝敗・結果モデル (resultModel) | Hitsumabushi.sendGameOver の引数(winnerPlayerId / rankings / scores)を解析 | single_winner, ranked, score, other |
③ チーム戦の有無 (teamBattle) | teamId やチーム単位のスコア管理の有無を検出 | supported, teamCount, teamSize |
| ④ ゲーム情報 | <title> タグや定数名・関数名からゲーム名と識別子を推測 | gameId, title, version |
※コードから判別しにくい要素(「欠員時にホスト側でBot補完可能か」など)がある場合は、AIが勝手に決めつけず**「Bot補完はサポートしますか?」と対話でクリエイターに確認するガードレール**がプロンプト内に組み込まれています。
3. プロンプトの使い方(3ステップ)
- プロンプトをコピーする:
公式プロンプトページ からプロンプト全文をコピーします。 - AIにコードと一緒に渡す:
ChatGPT、Claude、Cursor等のチャット画面にプロンプトを貼り付け、末尾に対象ゲームのソースコードを貼り付けて送信します。 - 出力結果を確認して保存する:
AIが出力したmanifest.jsonをコピーし、ゲームのルート直下に保存します。
4. 実行例(AIの出力イメージ)
実際にサンプルゲーム(2人対戦オセロゲーム)のコードを入力した際、AIから以下のような精度の高いレスポンスが返ってきます。
AIの回答例
①
manifest.json{ "gameId": "cyber-reversi", "title": "サイバーリバーシ", "version": "1.0.0", "players": { "min": 2, "max": 2, "type": "fixed", "allowCpuFill": false }, "resultModel": { "type": "single_winner", "allowTie": true } }② 大会フォーマット適合レポート
- 🏆 1on1 トーナメント: 【適合】 1対1個人戦かつ勝者が確定するため、自動トーナメント表で対戦可能です。
- 🔄 1on1 総当たり: 【適合】 リーグ戦方式で全員と対戦し、勝ち星を集計できます。
- 🎖️ 総合順位(グランプリ): 【不適合】 2名固定ゲームのため、3名以上のグランプリ大会には適合しません。
③ 確認事項・デプロイ手順
- Bot補完(
allowCpuFill)について: 現在CPUロジックが見当たらなかったためfalseとしています。もし1人欠員時にホスト側のブラウザでAIを代打ちさせたい場合はallowCpuFill: trueに変更してください。- CORS設定: ポータルサーバーがマニフェストを取得できるよう、
Access-Control-Allow-Origin: *ヘッダーを有効にしてください。
5. 生成されたマニフェストの配置と公開手順
JSONが生成されたら、以下の2ステップで公開準備完了です。
ステップ1: ゲームのルート直下に配置
ゲームの配信ディレクトリの最上位に manifest.json を配置します。
https://your-game.example.com/
├── index.html
├── manifest.json <-- ここに配置!
├── script.js
└── assets/
ステップ2: CORS(クロスオリジン通信)の許可
ひつまぶしポータルからマニフェスト情報を fetch() するため、配信サーバーで Access-Control-Allow-Origin: * を許可してください。
- Vercel (
vercel.json) の場合:
{
"headers": [
{
"source": "/manifest.json",
"headers": [
{ "key": "Access-Control-Allow-Origin", "value": "*" }
]
}
]
}
- Cloudflare Pages / Netlify (
_headers) の場合:
/manifest.json
Access-Control-Allow-Origin: *
- Node.js / Express の場合:
app.use(cors()); // または res.setHeader('Access-Control-Allow-Origin', '*');
6. 大会モードに適合させるためのTips
せっかくゲームを作るなら、「大人数グランプリ大会」 にも適合させるとポータルで圧倒的に遊ばれやすくなります!
💡 4人ゲームで「allowCpuFill: true」を設定する技
4人対戦ボードゲームや麻雀・大富豪系ゲームの場合:
- 参加者が奇数(3人など)の部屋でも、
"allowCpuFill": trueが宣言されていれば、ポータルの総合順位大会で選ばれるようになります。 - 実装は簡単で、試合進行役(P1)のブラウザでのみCPU思考を実行するだけです:
if (Hitsumabushi.isGameMaster()) {
runCpuTurnLogic();
}
7. まとめ
AIプロンプトを使えば、仕様書とにらめっこすることなく数秒で完璧なマニフェストを作成できます。 ゲームのコードを変更した際も、プロンプトに新コードを投げるだけで差分を反映してくれます。
皆さんの面白い対戦ゲームのご参加を心よりお待ちしています!