如何讓 AI 用 tileset 拼出完整場景:結構合理、道路連通、可匯入 Godot 的提示詞

整理一套讓 AI 使用現有 tileset 拼完整場景的提示詞,覆蓋圖片生成、字符網格布局和 Codex 生成 Godot TileMapLayer 地圖三種方式。

Godot 系列導航

想按順序學習,可以先看合集,再根據當前任務跳到對應主題:

要讓 AI 用現有 tileset 拼出一張完整、合理的場景,提示詞不能只寫「做一個漂亮地圖」。這種說法太寬泛,AI 很容易先追求畫面豐富,最後得到道路斷裂、裝飾堵路、水面方向錯誤、區域無法到達的地圖。

更穩的寫法是同時規定:

  1. 場景用途:村莊、森林、關卡還是展示圖。
  2. 可通行規則:道路必須連通,出生點不能被封死。
  3. 瓦片使用規則:只能使用參考圖中的地形和裝飾。
  4. 空間結構:入口、主路、支路、水池、牆體、興趣點。
  5. 裝飾密度:道路少裝飾,邊緣多裝飾。
  6. 輸出方式:效果圖、字符網格、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
請嚴格參考我提供的 tileset 圖集,使用圖集中已有的地面、道路、水面、石牆和裝飾元素,拼成一張完整、合理、可用於俯視角 RPG 的森林村莊場景。

場景規格:

嚴格頂視角
不使用透視或等距視角
地圖邏輯尺寸為 24×18 個瓦片
每個瓦片邏輯尺寸為 32×32
保持參考 tileset 的原始畫風、顏色、紋理、光照方向和比例
不改變瓦片的設計
不新增參考圖中不存在的建築、角色或大型物體
不生成 UI、文字、邊框或網格線
輸出完整場景,不輸出 tileset 圖集

地圖結構:

地圖底層主要使用普通草地,少量混合深色草地和稀疏草地,避免大面積完全重複。
地圖下方中央設定一個清晰的入口。
從入口開始鋪設一條縱向主路,延伸到地圖中央。
主路在地圖中央分成左右兩條支路,所有道路必須連通,不能出現斷路或無意義的道路碎片。
地圖右上區域設定一個自然形狀的小水池。
水池必須由水面中心、上下左右邊緣和轉角正確拼接,不能出現水面直接截斷或岸邊方向錯誤。
地圖左上區域設定一段石牆圍合區域,牆體邊緣和轉角必須正確連接。
水池、石牆和地圖邊緣之間必須保留至少一個瓦片寬的可通行區域。
地圖中央保留一個較開闊的活動區域,方便角色移動。
不要讓水池或石牆完全堵住主路。

裝飾規則:

小花主要分布在草地區域,不能鋪在道路和水面上。
小石頭可以少量放在泥土、道路邊緣或稀疏草地上。
草叢集中放在地圖邊緣、水池附近和牆角。
樹樁只能少量出現,作為視覺興趣點,不要堵塞主路。
地面裂紋只放在泥土或乾燥區域。
落葉集中在地圖角落和牆邊。
道路中央保持乾淨,裝飾主要放在道路兩側。
地圖中心裝飾較少,地圖四周裝飾密度較高。
不要在每個格子都放裝飾,保留自然留白。

合理性要求:

所有道路必須有明確用途並互相連通。
所有可通行區域必須從入口到達。
水面、牆體和道路連接方向必須正確。
不出現孤立的單塊水面、單塊牆體或錯誤轉角。
不出現無法進入的狹小封閉空間。
地圖應像真實設計過的遊戲關卡,而不是隨機堆放瓦片。
畫面需要有主次關係:入口引導玩家進入,主路引向中心,水池和石牆作為次要視覺焦點。

只生成一張完整的俯視角地圖場景。

這段提示詞的目標是讓圖片模型先考慮結構,而不是只做裝飾。但要注意:即使寫了「嚴格參考 tileset」,圖片生成模型仍可能重繪瓦片細節,不能保證像素完全一致。

如果你需要可匯入遊戲的精確地圖,不要只依賴圖片生成結果。

讓 AI 先輸出地圖布局

這種方式更適合保持地圖合理性。先讓 AI 不畫圖,只輸出一張 24×18 的字符地圖。得到布局後,再讓 Codex 或腳本把字符轉換成 Godot 的 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 的開闊活動區。
水池、牆體和地圖邊緣之間至少保留一格可通行空間。
玩家必須能從 P 到達所有主要道路和開闊區域。
不允許出現封閉的單格草地區域。
不允許道路、水面或牆體出現無意義的單格碎片。
裝飾不能阻擋主要道路。
地圖邊緣裝飾較多,中央區域裝飾較少。
小花只放在草地上。
地面裂紋只放在泥土或稀疏草地區域。
落葉主要放在角落和牆體附近。
保持整體自然、不完全對稱,但結構清晰。

輸出要求:

第一部分只輸出完整的 24×18 字符網格。
每行必須正好包含 24 個字符。
總共必須正好輸出 18 行。
第二部分列出入口座標、道路節點、水池範圍和牆體範圍。
第三部分檢查地圖是否存在斷路、封閉區域或無法到達區域。
不生成圖片。

得到布局後,可以讓 AI 自檢:

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. 使用 @export 配置 source_id 和關鍵 atlas 座標;
8. 添加地圖尺寸檢查;
9. 添加道路連通性檢查;
10. 添加從 PlayerSpawn 到主要區域的可達性檢查;
11. 如果檢查失敗,push_error() 輸出原因;
12. 修改完成後說明如何在 Godot 中測試。

這種兩階段方式更穩。先讓 AI 理解專案,再讓它動手。

提示詞中最重要的幾句

以後無論生成什麼場景,最好都加入下面這些規則:

1
2
3
4
5
6
所有道路必須互相連通,並具有明確用途。
不要出現孤立的單塊水面、牆體或道路。
地圖中心保持可讀,地圖邊緣增加裝飾密度。
每個主要區域必須能夠從玩家入口到達。
裝飾物不能阻擋主要通行路線。
先設計地圖結構,再添加裝飾。

最後一句特別重要:

1
先結構,後裝飾。

如果不寫這句,AI 很容易先追求「看起來豐富」,最後得到道路雜亂、裝飾堵路、區域無法到達的場景。

推薦工作流

最穩的流程是:

  1. 先用 AI 生成或整理 tileset。
  2. 在 Godot 中建立 TileSet,確認每個瓦片的 atlas 座標。
  3. 讓 AI 先輸出字符地圖或 JSON 布局。
  4. 檢查道路連通、入口可達、水面和牆體是否合理。
  5. 再讓 Codex 把布局轉換成 TileMapLayer.set_cell()
  6. 在 Godot 裡運行,打開碰撞和調試顯示。
  7. 最後再微調裝飾密度。

一句話總結:

不要讓 AI 一上來就「畫漂亮場景」。先讓它設計結構,再讓腳本按真實 tileset 座標拼圖。這樣得到的地圖才更容易進入 Godot 專案,而不是停留在一張好看的概念圖。

记录并分享
使用 Hugo 建立
主題 StackJimmy 設計