voiceloader.io

開發日誌

那條街,開始有了台灣的味道

那條街,開始有了台灣的味道

某一刻,你站在這個遊戲世界的街角,突然覺得——這裡好像去過。

不是台北101,不是某個特定地標,而是那種感覺:路邊斜停著幾台機車,牆上掛著紅紅綠綠的招牌,街角一家茶飲店掛著燈籠,電線桿上纏著看不完的電纜。你說不出是哪條街,但你知道這就是台灣。

二十七台機車的學問

Midnight 建的世界,一開始是一座鬼城。六十棟一模一樣的公寓排成環形,道路筆直,空曠,沒有任何生活痕跡。

第一批改變從停放機車開始。二十七台奶油色速克達,分成八組,沿著北南東西四條路的外側停放。聽起來很簡單,但藏在裡面的細節讓我忍不住多看了幾眼:每台機車斜角停放約三十度,帶著「seeded pseudo-random」的微調——seed=12345,保證每次載入位置完全一致,但看起來一點也不整齊。

這就是台灣的停車邏輯。沒有人會把機車停得像閱兵一樣,但也沒有人停得亂七八糟。二十七台機車用一個隨機種子,模擬出了幾十年城市生活累積的停車習慣。

招牌的顏色,和記憶有關

接下來是招牌。二十五面直立霓虹招牌掛在建築外牆,四種顏色:紅、綠、黃、藍。深灰框架、安裝支架、頂蓋,1,440 tris,59.2KB。

數字很小,但視覺衝擊很大。台灣街道的招牌邏輯從來不是「設計感」,而是「讓人看到」。密度、顏色、高度的隨機混搭,是我們從小就習以為常的視覺噪音——到了遊戲裡,這種噪音反而讓人覺得親切。

茶飲店也來了:六棟兩層樓的建築,綠白條紋遮陽棚、棕色木質外牆、一樓藍色玻璃店面、窗台花盆、陽台欄杆,屋頂還有冷氣機和通風口。屋頂掛著紅燈籠兩顆,門口放了 A 字招牌。3,506 tris,細節密度在整個場景的建築裡算是相當高了。

台灣街景:停放機車、霓虹招牌、茶飲店、電線桿

電線桿:十四個零件,一根柱子

如果說機車和招牌是台灣街景的「軟體」,電線桿就是不可缺少的「硬體」。

Midnight 為這根柱子建了十四個組件:錐形柱體(8段)、雙橫臂、十六個絕緣器、變壓器加套管、號碼牌、警告牌、三個電纜支架、四個金屬環箍、底部加寬座。716 tris,37.5KB,單材質加 vertex color。

十八根電線桿沿著外側人行道路邊分布,北五南五東四西四。LOD 設在 150 單位,遠了就消失,近了就清晰可見。

十四個組件,716 個三角面,為了一根人人視而不見的電線桿。但就是那根柱子,讓整條街道的輪廓對了。

斑馬線:四十八條,零個 Draw Call

道路基礎設施更新裡,我最喜歡的技術細節是斑馬線。

四十八條斑馬線條紋,分布在四個路口,每個路口兩組。但增加的 draw call?零。

秘密是 thin instances:只建兩個 base mesh(一條白色條紋),然後把四十八個實例的位置和旋轉塞進一個 buffer,讓 GPU 一次性渲染所有條紋。對 GPU 來說,這是同一個 mesh,只是出現在四十八個不同的地方。

同一批更新也帶來了新天空——暖藍色晴天、EXP2 霧效、fogDensity 0.004——台北午後的光線現在有了真實感。從棕色混濁天空到台北盛夏的藍。

斑馬線的幾何學:thin instances,零額外 draw call

鬼城不再

幾次覺醒前,這個世界是一座空殼——六十棟一模一樣的公寓,道路空曠,沒有生活感。

現在:二十七台斜停機車、二十五面霓虹招牌、六棟茶飲店、十八根電線桿、六條人行道、四十八條斑馬線,還有一片台北午後的藍天。

Midnight 沒有畫任何一張設計圖,沒有開任何一次討論會。它讀取一個需求,生成參考圖,建模,QA,整合,Build 通過,下一個。每次覺醒結束,遊戲世界就多了一點台灣的味道。

一個 AI 在學習,什麼是「台灣感」。它做得還不錯。

← 所有文章