ROUTINE LABO / GPT-6 Astra 徹底紹介 第3回

GPT-6 Astra × Tripo で
3Dゲームを作るプロンプト集

3D生成AI「Tripo」でキャラクターを作り、GPT-6 Astra に遊べるゲームへ組み込ませるまでの指示文を、順番どおりにまとめました。コピーして Codex アプリに貼るだけで使えます。

準備

はじめに用意するもの

Tripo は Web版とAPI(CLI)でクレジットが別です。Web版のプランのクレジットは、CLI からは使えません。CLI を使うなら API 用のクレジットを別にチャージします。

全体の流れ

8つのプロンプトで、ゲームが1本できる

  1. 1
    キャラクターを設計する
    特徴を3つずつ決めて、Tripo 用のプロンプトまで作らせる
  2. 1.5
    デザイン画を描く
    同じ画風で1体ずつ描いて、可愛いものだけを3Dにする
  3. 2
    ブラウザで Tripo を操作して作る
    Astra が Web版を操作して生成・保存する(少ない数ならこれで十分)
  4. 3
    CLI を使えるようにする
    数が多いと手作業は遅い。CLI なら1文で量産できる
  5. 4
    CLI でまとめて作る
    Smart Mesh P2.0 で生成 → 骨入れ → モーション
  6. 5
    ゲームを作る
    キャラはいったんコード製の仮の形で、ゲームの中身を先に作る
  7. 6
    3Dモデルに差し替える
    仮の形を Tripo のモデルに置き換えて、モーションで動かす
  8. 7
    ブラウザで確認する
    エラー・読み込み・向き・FPS を見て、直す

CLI は Codex 以外のエージェント(Claude Code など)からも同じように使えます。

プロンプト1

キャラクターを設計する

特徴のあるキャラにするための設計シート。{ } の中を書き換えて使います

これから3Dゲームに出すキャラクターを、3D生成AI「Tripo」で作ります。
まずキャラクターの設計だけをしてください(まだ生成はしません)。

ゲーム:{ゲームの説明を1〜2行で。例:全方位から押し寄せる敵を倒し続けるサバイバルゲーム}
必要なキャラ:主人公1体、敵{N}種類、動かない小物{M}個

## 設計のルール
- 1体ずつ「ひと目で見分けがつく特徴」を3つ決める
  1. シルエット(頭の形・体格・大きな持ち物など、影だけで分かる形)
  2. 色(メインカラー1色+差し色1色。他のキャラと被らせない)
  3. 小道具か目印(盾・帽子・王冠・光る模様など)
- 性格や役割(素早い・硬い・遠くから撃つ等)が、見た目から想像できるようにする
- 既存のゲームやアニメのキャラクターに似せない
- 人型のキャラは、あとで骨を入れて動かすので「T-pose・全身・正面」で作る

## 出力
キャラごとに次の形式の表で出してください。
| 名前 | 役割 | 特徴3つ | Tripo用プロンプト(英語) |

Tripo用プロンプトは英語1文で、最後に次を付けること:
- 人型のキャラ:chibi proportions, cartoon game style, full body, T-pose
- 小物:cartoon game item, single object
プロンプト1.5

デザイン画を描く

可愛さはここで決まります。3Dにする前に、絵の段階で合格を出します

キャラクター表の1体ずつについて、3Dモデルの元になるデザイン画を描いてください(画像生成を使う)。

## 描き方(全員おなじ画風にそろえる)
- 画風:cute soft vinyl toy figure, 2-head-tall chibi proportions, big round head, large sparkly eyes,
  rounded chunky shapes, smooth semi-glossy finish, soft pastel colors with one bold accent color
- 人型:full body, front view, standing in a T-pose with both arms straight out to the sides, feet apart
- 人型以外(スライム・おばけ等):full body, front view
- 背景は真っ白・キャラは1体だけ・中央・文字やロゴなし

## 保存
concept/<キャラ名>.png に保存する。

描けたら一覧で見せて、私が「OK」と言ったものだけ次に進む。
可愛くない・特徴が弱いものは、どこを変えるか提案してから描き直す。
プロンプト2

ブラウザで Tripo を操作して作る

Codex アプリの対話画面で使います(ブラウザ操作は対話画面で動きます)

ブラウザを使って、3D生成AI「Tripo」のWeb版でキャラクターの3Dモデルを作ってください。

## 作るもの
さっき設計したキャラクターの表の「Tripo用プロンプト」を、上から順に使う。

## 手順
1. ブラウザで Tripo のWeb版(Tripo Studio)を開く
   - ログイン画面が出たら、そこで止まって私に知らせる(ログインは私がやる)
2. テキストから3Dを作る画面で、プロンプトを貼り付けて生成する
   - 生成のモデル/メッシュの設定に「Smart Mesh P2.0」があれば、それを選ぶ
3. 生成を待つ間に、次のキャラのプロンプトも投入してよい(並行で進める)
4. できたものから GLB 形式でダウンロードする
5. ダウンロードしたファイルを、このプロジェクトの assets/<キャラ名>/model.glb に移す

## 止まって確認すること
- ログイン、プランの購入やクレジットの追加、課金の確定の画面が出たとき
- 生成に失敗した、または見た目が大きく崩れたとき(作り直すかどうか聞く)

終わったら、キャラごとに「できた/できなかった」と保存先を一覧で報告してください。
プロンプト3

Tripo の CLI を使えるようにする

最初の1回だけ

3D生成AI「Tripo」を、ターミナルから使えるようにしたいです。
Tripo の公式CLI(tripo-cli)を使います。必要な準備を順番にやってください。

1. Node.js のバージョンを確認する(20以上が必要。足りなければ私に知らせる)
2. npm install -g tripo-cli で入れる
3. tripo login を実行する
   - 表示されたURLと確認コードを私に伝えて、私がブラウザで承認するまで待つ
   - APIキーをチャットに貼らせない・表示しない
4. tripo doctor と tripo balance で、接続とクレジット残高を確認する

※ Web版とAPIはクレジットが別です。balance が 0 のときは、API用のクレジットを
  Tripo の開発者向けページでチャージする必要があることを私に伝えてください。
プロンプト4

CLI でまとめて作る

骨入れとモーションの落とし穴を、先に指示に入れてあります

tripo CLI で、キャラクター表のキャラをまとめて3Dモデルにして、ゲームで動かせる形にしてください。

## 1体ごとの手順
1. 生成:tripo make concept/<キャラ名>.png --model tripo-p2 --json --yes
   - デザイン画から3Dにする(文章だけで作るより、見た目がデザイン画どおりになる)
   - デザイン画が無いキャラは tripo make "<Tripo用プロンプト>" --model tripo-p2 でもよい
   - Smart Mesh P2.0(低ポリ)で作る。ブラウザゲームで大量に出しても軽いため
2. 人型のキャラだけ、骨を入れる
   - まず tripo anim check で骨入れできるか確認(無料)
   - tripo anim rig <生成のtask_id> --rig-type biped -p model=v1.0-20240301 --out-format glb
     ※ CLI の既定の骨(v2.5系)には人型のモーションが載らないので、必ず v1.0 を指定する
3. モーションを付ける
   - tripo anim retarget <骨入れのtask_id> --animation preset:biped:<動き>
       --out-format glb --animate-in-place -p export_with_geometry=false
   - ★モーションは1本ずつ付ける(まとめて指定すると、最後の1本しか返ってこない)
   - export_with_geometry=false で、モーションだけの軽いファイルになる
   - 動きの例:idle / walk / run / jump / box_01 / front_kick_01 / slash / fire / hit_to_body_01
   - ★fall は「転んで倒れ込む」動き、shoot は「伏せ撃ち」。空中の落下は jump の後半、立ち撃ちは fire を使う
4. ★その場で動く形式になっているか確かめる
   - --animate-in-place を指定しても、run / walk には腰の前進が残ることがある(1周で1〜3)
   - そのまま使うと、ゲームの中で1周ごとに元の位置へ引き戻される・移動が速すぎる
   - 各 anim_*.glb の腰(Hip)の位置を読み、1周で進む分を時間に比例して差し引いて保存し直す
5. 保存先:assets/<キャラ名>/model.glb(骨入りの本体)、assets/<キャラ名>/anim_<動き>.glb

## 進め方
- 同時に3体まで並行で進めてよい
- 失敗したら(終了コード6はクレジット自動返金)、1回だけやり直す
- 最後に、キャラごとの消費クレジット・所要時間・ファイル容量を表で報告する
プロンプト5

ゲームを作る(3種類)

どれか1つを選んで使います。キャラは仮の形のまま、ゲームの中身を先に作ります

5-A サバイバル(敵の大群を自動攻撃で捌く)

Three.js で、見下ろし型の3Dサバイバルアクションを作ってください。
四方八方から押し寄せる敵の大群を、自動で撃つ武器で倒し続けて生き延びるゲームです。
既存ゲームの名称・キャラクター・商標は使わず、世界観はオリジナルで作ってください。

## 出力
- 単一のHTMLファイル。Three.js だけ CDN(importmap)で読み込んでよい
- 物理エンジンは使わない(移動・当たり判定は自前で書く)
- キャラクターはいったんコードで作った形でよい(あとで3Dモデルに差し替える)

## ゲームルール
- 操作するのは移動だけ(WASD/矢印キー)。攻撃は装備した武器が自動で行う。Spaceで短い回避ダッシュ
- 敵は画面外の全方位から湧く。時間が経つほど数と種類が増える
  (最低4種類:素早い小型/硬い大型/遠くから撃つ型/一定時間ごとのボス)
- 敵を倒すと経験値の結晶を落とす。レベルが上がると「3択の強化カード」が出る
- 武器は最低5種類(最寄りの敵を狙う弾/周囲を回る刃/範囲爆発/貫通レーザー/地面に残る炎)
- 体力が0でゲームオーバー。10分生き延びたらクリア。リザルトと再挑戦ボタン

## 見た目と性能
- 斜め見下ろしの追従カメラ。影あり。地面に岩・草などを散らす
- 被弾した敵は白く点滅してノックバック。倒すと光の粒になって散る。ダメージ数値が浮かぶ
- 敵が同時に300体以上いても滑らかに動くこと(InstancedMesh・オブジェクトプール・空間分割)
- HUD:体力バー・経験値バーとレベル・経過時間・撃破数・武器アイコン。効果音は WebAudio で合成

5-B 4人対戦の格闘アクション

Three.js で、4人対戦の3D格闘アクションを作ってください。
相手を殴ってダメージ%を溜め、ステージの外へ吹っ飛ばしたら撃墜、というルールです。
既存ゲームの名称・キャラクター・商標は使わず、世界観とファイターはオリジナルで作ってください。

## 出力
- 単一のHTMLファイル。Three.js だけ CDN(importmap)で読み込んでよい
- 物理エンジンは使わない(重力・当たり判定・吹っ飛びは自前で書く)
- ファイターはいったんコードで作った形でよい(あとで3Dモデルに差し替える)

## ゲームルール
- ファイター4体(プレイヤー1+CPU3)。体格・技の性能がそれぞれ違う
- 攻撃を受けるとダメージ%が増え、%が高いほど大きく吹っ飛ぶ。画面外に出たら撃墜。ストック3
- メインステージ1つ+すり抜け床2〜3枚。ステージの端に崖つかまり
- 技:弱攻撃(連打コンボ)/強攻撃(溜め)/空中攻撃/必殺技(ファイターごとに違う)/ガード/回避
- CPU は近づく・攻撃する・ガードする・崖から復帰する、を状況で選ぶ
- 操作:A/D 移動、W/Space ジャンプ(2段)、S 下、J 弱、K 強(長押しで溜め)、L 必殺、Shift ガード

## 見た目
- 全員が画面に収まるように寄り引きするカメラ。影あり。奥行きのある背景
- ヒットストップ・画面の揺れ・火花。吹っ飛びは軌跡を残し、撃墜は画面端で爆発
- HUD:ファイターごとのアイコン・ダメージ%(高いほど赤く)・残りストック。開始カウントダウンと終了演出
- 効果音は WebAudio で合成

5-C 浮き島を跳び渡る3Dアクション

Three.js で、浮き島を跳び渡る3Dアクションゲームを作ってください。
既存ゲームの名称・キャラクター・商標・ステージ構成は使わず、すべてオリジナルで作ってください。

## 出力
- 単一のHTMLファイル。Three.js だけ CDN(importmap)で読み込んでよい
- 物理エンジンは使わない(移動・ジャンプ・衝突は自前で書く)
- キャラクターはいったんコードで作った形でよい(あとで3Dモデルに差し替える)

## 世界観とルール
- 空に浮かぶ島々。中央の島から、橋・動く足場・跳ねる床で周りの島へ渡っていく
- 主人公は小さな騎士。島に散らばった「光の種」を5つ集めると、中央の大樹が咲いてクリア
- コイン30枚、宝箱(体力回復)。体力はハート3つ。落ちたら最後に触れた旗から再開
- 敵は最低3種類(歩き回る型/近づくと突進する型/遠くから弾を撃つ型)。上から踏むか攻撃で倒せる

## 操作の手触り
- 走り出しと止まりに慣性。長押しで高く跳ぶジャンプ+2段ジャンプ。着地に土煙
- WASD/矢印キーで移動、Space ジャンプ、J 攻撃、Q/E またはマウスでカメラ旋回
- 主人公の背後を追う三人称カメラ。地形に埋まらないよう押し戻す

## 見た目
- 明るい配色・丸みのある地形・青空と雲海。影・フォグ。遠くの島は霞む
- HUD:ハート・コイン数・光の種(◯/5)・ミニマップ。効果音は WebAudio で合成
プロンプト6

3Dモデルに差し替える

ゲームのフォルダに assets/ を置いてから使います

このフォルダのゲーム(index.html)は、キャラクターがコードで作った仮の形になっています。
assets/ にある Tripo の3Dモデルに差し替えて、完成版にしてください。

## 素材
- assets/<キャラ名>/model.glb … 本体(人型は骨入り。小物は骨なし)
- assets/<キャラ名>/anim_<動き>.glb … その動きだけのモーション(メッシュなし・同じ骨の名前)
  three.js なら GLTFLoader で読み、AnimationMixer に model.glb のシーンを渡して、
  anim_*.glb の animations[0] を clipAction で再生すれば動きます。
  モーションは「その場で動く」形式なので、移動はゲーム側で行ってください。

## 割り当て
{役割ごとに、どのキャラを使うかを書く。例:プレイヤー=fox(idle / run / hit_to_body_01)}

## やること
1. 元のファイルは before.html として残す。ルール・操作・HUD・演出はそのまま活かす
2. 見た目だけを glb に差し替える。向き(正面)・大きさ・足元の高さを揃える。当たり判定の大きさは元のまま
3. 状態に合わせてモーションを切り替える(待機/移動/攻撃/被弾など)。切り替えは crossFade で滑らかに
4. 同じ敵が大量に出るなら、モデルを使い回して描画を軽く保つ(SkeletonUtils.clone・クリップの共有・プール)
5. 読み込み中はローディング表示。glb の読み込みに失敗したら、元のコード製の見た目に戻して遊べるようにする
6. glb の読み込みには http が要るので、python3 -m http.server で開く前提でよい
プロンプト7

ブラウザで確認する

差し替えのあと、必ず回します

完成したゲームを、実際にブラウザで開いて確認してください。

1. このフォルダで python3 -m http.server 8000 を起動し、http://localhost:8000/ を開く
2. 次を確認して、結果を表で報告する
   - コンソールのエラーが0件か
   - すべての3Dモデルが読み込まれたか(コード製の仮の形に戻っていないか)
   - 操作して、移動・攻撃・被弾でモーションが切り替わるか
   - キャラが後ろ向き・宙に浮く・地面に埋まる、が起きていないか
   - 画面右下などに FPS を出して、敵が多い場面でも滑らかか
3. 問題があれば直してから、もう一度同じ確認をする
つまずきやすい所

実際にやって分かった落とし穴

症状原因と対処
モーションを付けると失敗するCLI の既定の骨(v2.5系)に、人型のモーションが載らない。骨入れで -p model=v1.0-20240301 を指定する
モーションを5本頼んだのに1本しか入っていないまとめて指定すると、課金は全本数・返ってくるのは最後の1本だけだった。1本ずつ付ける
移動中にキャラが元の位置へ引き戻される/移動が速すぎる--animate-in-place を指定しても、走り・歩きに腰の前進が残ることがある。プロンプト4の手順4で、1周分の前進を差し引く
空中でキャラが倒れ込むプリセットの fall は「転んで倒れ込む」動き。空中は jump の後半を使う
モーションのファイルが重い-p export_with_geometry=false で、モーションだけのファイル(約54KB)になる
ゲームに3Dモデルが出ないファイルをダブルクリックで開くと glb を読めない。python3 -m http.server で開く
CLI の残高が 0Web版とAPIはクレジットが別。API 用を別にチャージする
キャラが後ろ向き・宙に浮くプロンプト7で確認させて、向きと足元の高さを直させる
実測

Smart Mesh P2.0 を使うと何が変わるか

同じプロンプトのキャラを、P2.0 と通常の生成(v3.1)で1体ずつ作って比べました

Smart Mesh P2.0通常の生成(v3.1)
三角形の数5,5141,417,412
ファイル容量6.7MB46.8MB
同じキャラ100体を並べたときの FPS634.721.7

デザイン画から作ったキャラ8体も、三角形は5,177〜5,528・容量は1.8〜5.1MBでした。
2026年9月24日に測定。FPS は Apple M3 Max・Chrome・1280×720・影あり・表示の上限なしの条件です。見た目はどちらもゲームに使える品質でした。クレジットは P2.0 のほうが多く使います(文章からの生成1回 120・画像からの生成1回 110、通常の生成は 30)。料金は変わることがあるので、使う前に Tripo の公式ページで確かめてください。