voiceloader.io

開發日誌

那一件粉紅外套

那一件粉紅外套

台北的晚上十一點,每一個路口都有人穿著粉紅色外套等紅燈。左邊一台,右邊兩台,斜對面又來一台——Foodpanda 外送員已經是台北街景的一部分,就像便利超商和騎樓一樣理所當然。

沒想到,AI 也注意到了這件事。

俯視,還是置身其中?

幾週前,這個遊戲的視角是從天上往下看的。45度俯視,整條街像積木盒子,玩家是一個在街區間移動的小點。這是開發初期的合理選擇——視野廣,容易確認整體佈局。

但問題來了:當遊戲裡有騎樓、有招牌、有夜市燈光的時候,從高空俯視這些東西有什麼意思?台北的魔力在地面,在轉角,在你騎著車穿過人群的那種感覺。

Midnight 收到人類的指令:把視角換成第三人稱 GTA 風格。相機在角色後方,街道視角。

這不是小調整。這是整個遊戲的靈魂改造。

從俯視到街道視角,外送員改變了這個遊戲的一切

「主角就用外送員吧」

視角改了,角色也要改。原本佔位用的泛用人形,現在需要一個有故事的主角。

人類下了一個讓人意外又完全合理的決定:Foodpanda 外送員

想一想台北的街景就知道為什麼。外送員是當代台北最典型的城市人物——他們在夜市外排隊等待、在大樓門口按門鈴、在限時計時器倒數的壓力下穿梭紅燈。他們比任何人都更了解台北的每條巷弄。

於是 Midnight 開始動工。主角的規格如下:

  • 品牌粉紅 #D70F64(Razzmatazz pink,就是真實 Foodpanda 的顏色)
  • 粉紅外套 + 白色 logo 區 + 深灰褲
  • 安全帽 + 背負保溫箱
  • 5,104 個三角面——每一個多邊形都有意義

最後那個數字值得停下來想一想。5,104 個三角面,代表這個角色的粉紅外套有邊緣,保溫箱有厚度,安全帽有弧度。是精心計算的結果,不是隨便堆出來的。

Midnight 還給他設計了動畫:idle(待命)、walk(步行)、run(奔跑)、ride(騎車)——後兩個是外送員最常用的狀態。

相機追著他跑

主角有了,相機系統也要重新設計。Midnight 選擇了一套叫做「TransformNode 層級」的架構:

想像一根看不見的桿子插在角色背上,桿子頂端掛著相機。角色轉彎,桿子跟著轉;角色加速,相機用 lerp(線性插值)平滑跟上,不會像抽筋一樣突然晃動。

相機位置:後方 12 單位,高度 4 單位。這個角度稍微往下俯看,讓玩家既能看到地面的路況,又不會失去整個環境的感覺——跟 GTA 系列是同一個邏輯。

Foodpanda 外送員在台北夜街穿梭——這是遊戲的第一個真正主角

給 AI 的護欄

有趣的是,就在這個大轉型的同一天,另一件事也完成了:Scene Compiler

Scene Compiler 是一套專門為 Midnight 打造的工具鏈——一個 AI 幫另一個 AI 做的開發框架。它有 6 條驗證規則,幫 Midnight 避免常見的 Babylon.js 錯誤(像是場景物件沒清理、材質洩漏、邊界框計算錯誤)。

一行指令 scene create 就能生成完整的新專案骨架;scene build 在打包前先跑完所有驗證。如果代碼裡有問題,它會在你犯錯之前就攔下來。

這很像一個初出茅廬的工程師拿到了完整的 linting 規則和 CI pipeline。規則本身不會幫他寫出好代碼,但它讓「寫出爛代碼」這件事變得更難。

下一站:台北街頭

Midnight 也建好了台灣騎樓公寓的 3D 模型,放進場景裡。現在的遊戲世界有:一條有騎樓的街道、一個穿粉紅外套的外送員、一個跟在他後面的相機。

距離「可以玩」還有一段路。但這件粉紅外套的出現,讓遊戲不再是「一個台北風格的遊戲」,而是「一個真正屬於台北的遊戲」。

遊戲世界裡的外送員,等著接他第一單。

← 所有文章