確認頁存檔

這一頁是 2026-10-21 的建城工法:我離開前交代 AI,把五原的素材和做法做完一輪,整理成之後建城、建村的依據。內容是做五原時定下來、試過、被否決的做法,照做事的順序排,附當時的圖。這一頁沒有讓我按的按鈕,倒數第二節「要你決定的」是 AI 列給我的待決事項。同一天下午我改成走進原畫,整張原畫當地圖,做法寫在走進原畫那一章。

建城工法

做五原(《續》地圖重做的第一座城)時定下來、試過、被否決的做法。之後做長安、下邳、許都、洛陽、嚴家村,或別的作品的城和村,照這份的順序走,作者定過的規矩不用再試一次。文字版在 repo 的 xu/建城工法.md,工具都在 xu/game/。

2026-10-21 五原 13 塊(城內 6、城外 7)・一格半公尺・一塊 64×64 格

五原現在的樣子

五原整座城:13 塊拼在一起的樣子
13 塊照連結圖拼起來(離線算圖:地面、照圖框下緣排前後的物件、路人站姿)。中間 3×2 是城內,城牆一圈、四個角樓、四座城門;北邊是城北山腳、北門外的路、城北軍營,再往北是邊牆;東西兩邊是田,南門外是大路和茶棚。

先定好的規格

流程

  1. 地點表:在大地圖哪裡、分幾塊、四面通到哪(tools/places.html),給作者看。
  2. 連結圖:塊怎麼接、四面入口(tools/links.html)。城四面都能進,城外先到城外的塊,只有城門通城內。
  3. 配置 plan.yaml:地面、院落 courts、物件(佔地、往上幾格、成排)、城牆簡寫、城門、登城道、路人、劇情點、時期。五原那份是範本。
  4. 檢查 python3 art/wuyuan/plan.py:相鄰邊對不上、說相通卻走不過、從入口走不到、路人站在牆裡,都會擋;--page 出確認頁。
  5. 地面:地板組,ground.py compose <塊…> 拼、ground.py seams 量交界。
  6. 物件:objects.py gen 綠幕產 → 逐張看角度 → cut 去背量高度 → sheet 並排看齊不齊 → pack 縮成 webp 進 git。
  7. 牆:整圈產、自動去背後交給作者修透明、切九格(下一節)。城牆連城門、角樓一起產一整圈,量城樓比牆頂高幾格定牆要內縮幾列,位置在城邊積木頁排;排好的存進 repo,城外那幾塊照城內平移。
  8. 進遊戲:CITY_GROUND=tex python3 src/city.py;tests/city_render.py 離線算每一塊整張的樣子(快、看得到整塊);tests/city_walk.mjs 確認邊界走得過;tests/city_shots.mjs 真的開遊戲截圖。
  9. 更新確認頁給作者看,照意見改。推上 Larch 前照 README 的推送規矩。

牆:整圈產、切九格

作者畫的 ╭ー╮/| |/╰ー╯:一開始就讓模型把轉角畫好,我們自己剪出能重複的部分。四個角各佔一格,四條邊各取一截一格長的直段,中間不放牆,用的時候一格一格接。院牆、市牆、營柵都這樣做。

院牆:產一整圈、切成九格、拼一圈並開院門
左:產出來的一整圈。中:切出來的九格(轉角整根柱子都在格子裡)。右:拼成 11×9 格,南牆和西牆各開一個三格寬的門,門口兩邊放下排的轉角柱子當門柱。
軍營營柵:九格與拼起來的一圈
軍營的營柵也是同一套:左上是九格,右邊拼成 13×9,西邊和南邊開門。

城牆、城門、角樓:連在一起產一整圈

角 牆 北門 牆 角
牆          牆
西門        東門
牆          牆
角 牆 南門 牆 角

作者定的:城牆比照院牆,連四個角樓、四座城門一次產一整圈,再切成四個角、四座城門、八段能重複的直牆。一張圖裡的城門和兩邊的牆本來就接在一起,高度、材質一樣。牆段畫短,城樓在圖裡才夠大。

城牆連四個角樓、四座城門的一整圈
產出來的一整圈(參考圖:E3 定角度、厚城牆那一圈定材質、西門樓定城樓的樣子)。
西北角樓、北門、南門從城裡看、南門從城外看
上排:B1 的西南角樓與南牆、B2 從城裡看南門(矮牆在上、垛口在靠畫面那一側)。下:C5 從城外看南門,門洞透空看得到石板路。

邊牆(一長段、兩頭崩口)

產一長段兩頭崩掉的牆,切成左端、能重複的中段、右端;接到地圖邊、還會接下去的那頭不放端。崩口連腳下的碎土比牆頂塌的地方寬,兩端各至少取全長的一成五,中段只在正中間四成裡挑,不然重複起來像一塊一塊分開的土墩。

邊牆的西段與東段,中間是缺口
C4 的邊牆:西段從地圖西邊接進來,東段接到地圖東邊,中間 10 格是缺口。

物件與影子

五原用到的物件總表
五原用到的物件(照設計寬度、同一個比例排)。

會動的:路人、動物、車

這次產的 11 張三視圖(雞、狗、牛、豬、牛車、馬車、騾車、挑擔叫賣的、算命的、要飯的、巡查的軍官)放在走路圖確認頁最上面。

被否決的做法

被否決的牆:無縫貼圖由程式拼出來
被否決的那一版:牆頂瓦和牆面用兩張無縫貼圖一格一格拼,接縫看得出來,橫牆露出一大片牆面。

引擎的坑

一座城要準備的素材

  • 地面:街、土地、石板、市集、城頭走道、大路、小徑、草地、田、山腳、軍營、校場、荒原、乾河溝、點綴
  • 住家:一、二、三開間(瓦頂、草頂)、廂房、柴棚、豬圈、雞籠、井、晾衣竿、柴堆、劈柴的木樁、水缸
  • 街與市:市牆(九格)、市門、市樓、列肆小鋪、攤子、算命攤、告示、旗杆、藥鋪、鐵匠鋪、木匠鋪、鐵砧
  • 官府與軍:郡府(院落+五開間正堂)、照壁、糧倉、兵器庫、營柵(九格)、營門、營帳、軍官的帳子、哨棚、點將台、兵器架、木人樁、刑凳、磚堆
  • 城防:城牆(九格)、城門樓(城內、城外、南北向、東西向)、角樓、登城道、火把
  • 城外:路邊樹、大樹、枯樹、灌木、大石頭、墳、茶棚、邊牆(三段)
  • 會動的:各種身分的路人與動作、雞、狗、牛、豬、鳥群、牛車、馬車、騾車

村子沒有城牆和市,改成籬笆或土牆一圈(九格)、田、打穀場、草垛,大戶人家可以有塢堡。plan.yaml 裡對不到圖的物件就是還缺的。

網路上的做法與考古

子代理查網路整理的(2026-10-21),只取方法和史實,不用別人的圖。來源連結在文字版 xu/建城工法.md 第六節。

拼接

產圖角度、影子、前後順序

漢代的城、里、市、宅

城鎮地圖怎麼排

要你決定的

  1. 城牆一圈已經改成連城門、角樓一起產再切,北牆內縮 3 列、城南城外內縮 4 列,城樓的屋頂都進到地圖裡了。位置要再調的話,在城邊積木頁拖給我看。
  2. 新角色的三視圖(走路圖確認頁最上面):可以的我再做走路跨步;動物的動作(雞啄地、狗趴著)和做事的人的循環動作接在後面。
  3. 冬天的雪、燒過、空了這三個時期的地面和物件還沒產。
  4. 照查到的史實可以改的配置(都要動 plan.yaml,等你點頭):市改成十字街、四區列肆、市樓在正中;院落的豬圈加廁所、挪到西北角,井放在院門外;秋天的路人加打場、塗倉、修牆、練射。

檔案

檔案用途
art/wuyuan/plan.yaml、plan.py配置、檢查、確認頁
art/wuyuan/ground.py、tex/地板組地面
art/wuyuan/objects.py、obj/物件與牆:gen cut sheet nine ring slice3 pack
art/wuyuan/critters.py會動的新角色三視圖、確認頁用的圖
src/city.py預覽進遊戲:物件、牆、城牆畫進地面、影子、路人
tests/city_render.py離線算每一塊整張的樣子
tests/city_walk.mjs、city_shots.mjs邊界走得過、開遊戲截圖
xu/建城工法.md、xu/地圖重做.md這份的文字版;《續》地圖重做的現況