Godot シリーズナビゲーション
順番に学ぶなら、まずまとめページを見てから必要なテーマへ進んでください。
既存 tileset から AI に完全で自然なシーンを作らせるには、「きれいなマップを作って」とだけ書いてはいけません。曖昧すぎるため、AI は見た目の密度を優先し、道が途切れる、装飾で通路が塞がる、水辺の向きが間違う、到達できない領域ができる、といった問題を起こしがちです。
より安定したプロンプトでは、次を同時に指定します。
- シーンの用途:村、森、レベル、展示画像。
- 通行ルール:道はつながり、スポーン地点は塞がれない。
- タイル使用ルール:参照 tileset の地形と装飾だけを使う。
- 空間構造:入口、メイン道、分岐、水池、壁、見どころ。
- 装飾密度:道は少なめ、端は多め。
- 出力形式:画像、文字グリッド、JSON、Godot
TileMapLayer コード。
重要なのは、一般的な画像生成 AI は元 tileset をピクセル単位で再利用するのではなく、「tileset を参考に描き直す」ことが多い点です。
概念図だけでよいなら画像生成で十分です。各タイルのピクセルを厳密に保ちたいなら、AI にまずレイアウトデータを作らせ、それを Godot、スクリプト、Codex で実際の tile 座標に従って組み立てます。
画像生成 AI 向けシーンプロンプト
これはコンセプト画像や視覚プレビューに向いています。tileset 画像を参照画像としてアップロードしてから使います。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
提供した tileset 図集を厳密に参照し、その中にある地面、道路、水面、石壁、装飾要素だけを使って、トップダウン RPG 用の完全で合理的な森の村シーンを組み立ててください。
シーン仕様:
厳密なトップダウン視点
透視や等角投影を使わない
マップ論理サイズは 24×18 タイル
各タイルの論理サイズは 32×32
参照 tileset の元の画風、色、テクスチャ、光源方向、比率を維持する
タイルのデザインを変更しない
参照画像にない建物、キャラクター、大型オブジェクトを追加しない
UI、文字、枠線、グリッド線を生成しない
tileset 図集ではなく、完成したシーンを出力する
マップ構造:
地図の基礎は通常の草地を中心にし、濃い草地とまばらな草地を少し混ぜて大きな繰り返しを避ける。
地図下部中央に明確な入口を配置する。
入口から地図中央へ縦方向のメイン道路を伸ばす。
メイン道路は中央で左右の分岐に分かれ、すべての道は接続されていること。途切れた道や意味のない断片を作らない。
右上に自然な形の小さな池を置く。
池は水面中央、上下左右の端、角を正しく組み合わせること。水面の切断や岸辺の向き間違いを作らない。
左上に接続された石壁エリアを置く。
壁の端と角は正しく接続する。
池、石壁、地図端の間には少なくとも 1 タイル幅の通行可能領域を残す。
中央にはキャラクターが動ける開けた活動エリアを残す。
池や石壁でメイン道路を完全に塞がない。
装飾ルール:
小さな花は主に草地に置き、道路や水面には置かない。
小石は少量だけ土、道の端、まばらな草地に置ける。
草むらは地図端、池の近く、壁の角に集中させる。
切り株は少量だけ視覚的な見どころとして使い、メイン道路を塞がない。
地面のひび割れは土や乾いた場所にだけ置く。
落ち葉は地図の角や壁の近くに集める。
道路中央はきれいに保ち、装飾は主に道路の両側に置く。
地図中央の装飾は少なめ、外周の装飾は多めにする。
すべてのセルに装飾を置かず、自然な余白を残す。
合理性要件:
すべての道は明確な目的を持ち、互いに接続されていること。
すべての通行可能領域は入口から到達できること。
水面、壁、道路の接続方向は正しいこと。
孤立した単一水面、単一壁、間違った角を作らない。
入れない狭い閉鎖空間を作らない。
マップはランダムにタイルを置いたものではなく、実際に設計されたゲームレベルに見えること。
画面には主従関係が必要:入口がプレイヤーを導き、メイン道路が中央へ向かい、池と石壁が副次的な視覚焦点になる。
完全なトップダウンマップシーンを 1 枚だけ生成する。
|
このプロンプトは、画像モデルに装飾より先に構造を考えさせるためのものです。ただし「厳密に tileset を参照」と書いても、画像モデルはタイル細部を描き直す場合があります。ピクセル完全一致は保証できません。
ゲームに取り込める正確なマップが必要なら、画像生成だけに頼らない方が安全です。
AI に先にマップレイアウトを出力させる
これはマップの合理性を保つのに向いています。AI には画像を描かせず、まず 24×18 の文字マップだけを出力させます。その後、Codex やスクリプトで文字を TileMapLayer.set_cell() に変換します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
次のルールに従って、24×18 のトップダウン RPG 森マップレイアウトを設計してください。
マップ記号:
G = 通常の草地
D = 濃い草地
S = まばらな草地
R = 道路
W = 水面
A = 石壁
F = 小さな花
K = 小石
B = 草むら
U = 切り株
C = 地面のひび割れ
L = 落ち葉
P = プレイヤー入口
設計要件:
P は地図下部中央に置く。
P から地図中央へ続く道路が必ず存在する。
道路は中央で左右の分岐に分かれ、すべての道路は接続される。
右上に約 4×5 の自然な形の池を置く。
左上に合理的に接続された石壁を置く。
地図中央には少なくとも 7×5 の開けた活動エリアを残す。
池、壁、地図端の間には少なくとも 1 マスの通行可能空間を残す。
プレイヤーは P からすべての主要道路と開けた領域に到達できること。
閉じ込められた 1 マス草地領域を作らない。
道路、水面、壁に意味のない 1 マス断片を作らない。
装飾は主要道路を塞がない。
地図端は装飾多め、中央は少なめ。
小花は草地にだけ置く。
地面のひび割れは土またはまばらな草地にだけ置く。
落ち葉は主に角と壁付近に置く。
全体は自然で、完全対称ではないが、構造は明確にする。
出力要件:
第 1 部分は完全な 24×18 文字グリッドだけを出力。
各行は必ず 24 文字。
合計で必ず 18 行。
第 2 部分で入口座標、道路ノード、池の範囲、壁の範囲を列出。
第 3 部分で断路、閉鎖領域、到達不能領域があるか検査。
画像は生成しない。
|
レイアウトを得た後、さらに自己検査させます。
1
2
3
4
5
6
7
8
9
|
上の文字マップを検査してください:
1. P からすべての R 道路へ到達できるか;
2. 孤立した W 水面があるか;
3. 孤立した A 石壁があるか;
4. 水面や壁で封鎖された通行可能領域があるか;
5. 各行が正確に 24 文字か;
6. 行数が正確に 18 行か。
問題があれば、修正後の完全な 24×18 マップを出力してください。
|
直接画像を出すより、この手順はレベルデザインに近いです。先に構造を検証し、それから見た目を作ります。
Codex に tileset を厳密に使って Godot マップを作らせる
これが最も信頼できる方法です。実際に図集内のタイル座標を使うため、描き直しではありません。
次のプロンプトは VS Code の Codex パネルで使えます。前提として Godot プロジェクトに TileMapLayer ノードがあり、TileSet が読み込まれている必要があります。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
これは Godot 4.x プロジェクトです。既存の TileSet を使って完全なマップを作成する必要があります。
シーン構造:
World:Node2D
├─ Ground:TileMapLayer
├─ Roads:TileMapLayer
├─ Water:TileMapLayer
├─ Walls:TileMapLayer
├─ Decorations:TileMapLayer
└─ PlayerSpawn:Marker2D
tileset 図集は 6 列 × 5 行で、座標定義は以下の通りです:
第一行:
(0,0) 通常の草地
(1,0) 濃い草地
(2,0) まばらな草地
(3,0) 土の地面
(4,0) 石板の地面
(5,0) 砂地
第二行:
(0,1) 横方向道路
(1,1) 縦方向道路
(2,1) 左上道路角
(3,1) 右上道路角
(4,1) 左下道路角
(5,1) 右下道路角
第三行:
(0,2) 水面中央
(1,2) 水面上端
(2,2) 水面下端
(3,2) 水面左端
(4,2) 水面右端
(5,2) 水面外角
第四行:
(0,3) 石壁中央
(1,3) 石壁上部
(2,3) 石壁下部
(3,3) 石壁左側
(4,3) 石壁右側
(5,3) 石壁角
第五行:
(0,4) 小さな花
(1,4) 小石
(2,4) 草むら
(3,4) 切り株
(4,4) 地面のひび割れ
(5,4) 落ち葉
タスク:
24×18 の森の村マップを作成する。
地図下部中央にプレイヤー入口を置く。
入口から中央へメイン道路を作り、中央で左右の分岐に分ける。
右上に合理的に接続された小さな池を作る。
左上に合理的に接続された石壁を作る。
中央は開けた領域として残す。
すべての道路は接続されていること。
水面と壁で通路を塞がないこと。
装飾は主に地図端、池周辺、壁の角に置く。
道路中央に装飾を置かない。
孤立水面、孤立壁、向きの間違った角を作らない。
source_id は @export で設定する。
Godot 4 TileMapLayer.set_cell() を使用する。
静的型付けを使用する。
マップデータと描画ロジックを分離する。
コード内にマップサイズ検査と到達可能性検査を追加する。
既存 tileset に接続に必要なタイルがない場合、推測や誤ったタイル代用をせず、欠落項目を明確に報告する。
まず現在のプロジェクト、シーン、TileSet リソースを読み、実際の source_id と atlas 座標を確認してからコードを変更してください。source_id が 0 だと直接仮定しないでください。
|
特に重要なのは最後の一文です。
1
|
まず現在のプロジェクト、シーン、TileSet リソースを読み、実際の source_id と atlas 座標を確認してからコードを変更してください。source_id が 0 だと直接仮定しないでください。
|
Godot の source_id、atlas 座標、TileSet Source の順序は想定と違う場合があります。AI が推測すると、実行はできても違うタイルを配置するコードになることがあります。
Codex に向いた二段階プロンプト
プロジェクトが複雑な場合、Codex に一度で全部やらせない方が安全です。まず分析と確認だけを依頼し、ファイルは変更させません。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
これは Godot 4.x プロジェクトです。
まだどのファイルも変更しないでください。
次を確認してください:
1. 現在のシーン構造を読む;
2. すべての TileMapLayer ノードを見つける;
3. それぞれが使用している TileSet を見つける;
4. 実際の source_id を確認する;
5. tileset 内の各 atlas 座標がどのタイルに対応するか列出する;
6. 24×18 の森の村マップを作るのに十分か判断する;
7. 道、水面、壁の接続タイルが不足している場合、明確に列出する;
8. マップデータ構造の設計を出す;
9. 到達可能性検査の方法を出す;
10. まだコードを書かない。
|
分析に問題がなければ、次に実装を依頼します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
これからマップ生成スクリプトを実装してください。
要件:
1. World のスクリプトだけを変更する;
2. TileSet は変更しない;
3. シーンノード名を変更しない;
4. マップサイズは 24×18;
5. 配列または辞書でマップデータを保存する;
6. TileMapLayer.set_cell() で描画する;
7. source_id と主要 atlas 座標は @export で設定する;
8. マップサイズ検査を追加する;
9. 道路連結性検査を追加する;
10. PlayerSpawn から主要領域への到達可能性検査を追加する;
11. 検査に失敗したら push_error() で理由を出力する;
12. 変更後、Godot でのテスト方法を説明する。
|
この二段階方式は安定します。まず AI にプロジェクトを理解させ、それから編集させます。
プロンプトで最重要の数行
どんなシーンを生成する場合でも、次を入れると安定します。
1
2
3
4
5
6
|
すべての道路は互いに接続され、明確な用途を持つこと。
孤立した単一の水面、壁、道路を作らないこと。
地図中央は読みやすく保ち、地図端の装飾密度を高めること。
すべての主要エリアはプレイヤー入口から到達できること。
装飾物は主要な通行ルートを塞がないこと。
まずマップ構造を設計し、その後で装飾を追加すること。
|
最後の一文が特に重要です。
これを書かないと、AI は「見た目を豊かにする」ことを優先し、道が乱れ、装飾が通路を塞ぎ、到達不能領域ができやすくなります。
おすすめワークフロー
最も安定する流れは次の通りです。
- 先に AI で tileset を生成または整理する。
- Godot で
TileSet を作り、各タイルの atlas 座標を確認する。
- AI に文字マップまたは JSON レイアウトを先に出力させる。
- 道の接続、入口からの到達、水面と壁の合理性を確認する。
- Codex にレイアウトを
TileMapLayer.set_cell() に変換させる。
- Godot で実行し、衝突とデバッグ表示を有効にする。
- 最後に装飾密度を微調整する。
一言でまとめると:
AI にいきなり「きれいなシーンを描かせる」のではなく、先に構造を設計させ、その後で実際の tileset 座標に従ってスクリプトで組み立てます。そうすれば、ただのきれいな概念図ではなく、Godot プロジェクトに入りやすいマップになります。