3D生成AI「Tripo」でキャラクターを作り、GPT-6 Astra に遊べるゲームへ組み込ませるまでの指示文を、順番どおりにまとめました。コピーして Codex アプリに貼るだけで使えます。
Tripo は Web版とAPI(CLI)でクレジットが別です。Web版のプランのクレジットは、CLI からは使えません。CLI を使うなら API 用のクレジットを別にチャージします。
CLI は Codex 以外のエージェント(Claude Code など)からも同じように使えます。
特徴のあるキャラにするための設計シート。{ } の中を書き換えて使います
これから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可愛さはここで決まります。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」と言ったものだけ次に進む。 可愛くない・特徴が弱いものは、どこを変えるか提案してから描き直す。
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 に移す ## 止まって確認すること - ログイン、プランの購入やクレジットの追加、課金の確定の画面が出たとき - 生成に失敗した、または見た目が大きく崩れたとき(作り直すかどうか聞く) 終わったら、キャラごとに「できた/できなかった」と保存先を一覧で報告してください。
最初の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 の開発者向けページでチャージする必要があることを私に伝えてください。
骨入れとモーションの落とし穴を、先に指示に入れてあります
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回だけやり直す
- 最後に、キャラごとの消費クレジット・所要時間・ファイル容量を表で報告するどれか1つを選んで使います。キャラは仮の形のまま、ゲームの中身を先に作ります
Three.js で、見下ろし型の3Dサバイバルアクションを作ってください。 四方八方から押し寄せる敵の大群を、自動で撃つ武器で倒し続けて生き延びるゲームです。 既存ゲームの名称・キャラクター・商標は使わず、世界観はオリジナルで作ってください。 ## 出力 - 単一のHTMLファイル。Three.js だけ CDN(importmap)で読み込んでよい - 物理エンジンは使わない(移動・当たり判定は自前で書く) - キャラクターはいったんコードで作った形でよい(あとで3Dモデルに差し替える) ## ゲームルール - 操作するのは移動だけ(WASD/矢印キー)。攻撃は装備した武器が自動で行う。Spaceで短い回避ダッシュ - 敵は画面外の全方位から湧く。時間が経つほど数と種類が増える (最低4種類:素早い小型/硬い大型/遠くから撃つ型/一定時間ごとのボス) - 敵を倒すと経験値の結晶を落とす。レベルが上がると「3択の強化カード」が出る - 武器は最低5種類(最寄りの敵を狙う弾/周囲を回る刃/範囲爆発/貫通レーザー/地面に残る炎) - 体力が0でゲームオーバー。10分生き延びたらクリア。リザルトと再挑戦ボタン ## 見た目と性能 - 斜め見下ろしの追従カメラ。影あり。地面に岩・草などを散らす - 被弾した敵は白く点滅してノックバック。倒すと光の粒になって散る。ダメージ数値が浮かぶ - 敵が同時に300体以上いても滑らかに動くこと(InstancedMesh・オブジェクトプール・空間分割) - HUD:体力バー・経験値バーとレベル・経過時間・撃破数・武器アイコン。効果音は WebAudio で合成
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 で合成
Three.js で、浮き島を跳び渡る3Dアクションゲームを作ってください。 既存ゲームの名称・キャラクター・商標・ステージ構成は使わず、すべてオリジナルで作ってください。 ## 出力 - 単一のHTMLファイル。Three.js だけ CDN(importmap)で読み込んでよい - 物理エンジンは使わない(移動・ジャンプ・衝突は自前で書く) - キャラクターはいったんコードで作った形でよい(あとで3Dモデルに差し替える) ## 世界観とルール - 空に浮かぶ島々。中央の島から、橋・動く足場・跳ねる床で周りの島へ渡っていく - 主人公は小さな騎士。島に散らばった「光の種」を5つ集めると、中央の大樹が咲いてクリア - コイン30枚、宝箱(体力回復)。体力はハート3つ。落ちたら最後に触れた旗から再開 - 敵は最低3種類(歩き回る型/近づくと突進する型/遠くから弾を撃つ型)。上から踏むか攻撃で倒せる ## 操作の手触り - 走り出しと止まりに慣性。長押しで高く跳ぶジャンプ+2段ジャンプ。着地に土煙 - WASD/矢印キーで移動、Space ジャンプ、J 攻撃、Q/E またはマウスでカメラ旋回 - 主人公の背後を追う三人称カメラ。地形に埋まらないよう押し戻す ## 見た目 - 明るい配色・丸みのある地形・青空と雲海。影・フォグ。遠くの島は霞む - HUD:ハート・コイン数・光の種(◯/5)・ミニマップ。効果音は WebAudio で合成
ゲームのフォルダに 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 で開く前提でよい差し替えのあと、必ず回します
完成したゲームを、実際にブラウザで開いて確認してください。 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 の残高が 0 | Web版とAPIはクレジットが別。API 用を別にチャージする |
| キャラが後ろ向き・宙に浮く | プロンプト7で確認させて、向きと足元の高さを直させる |
同じプロンプトのキャラを、P2.0 と通常の生成(v3.1)で1体ずつ作って比べました
| Smart Mesh P2.0 | 通常の生成(v3.1) | |
|---|---|---|
| 三角形の数 | 5,514 | 1,417,412 |
| ファイル容量 | 6.7MB | 46.8MB |
| 同じキャラ100体を並べたときの FPS | 634.7 | 21.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 の公式ページで確かめてください。