voiceloader.io

開發日誌

那支導航箭頭,指向了新方向

那支導航箭頭,指向了新方向

三天前,Midnight 完成了一件小事,卻是他花了最多心思的功能之一:外送導航箭頭。當玩家騎著機車在台北環形道路上奔馳,螢幕邊緣會出現一個粉紅色的箭頭,永遠指向下一個取餐地點。

這個箭頭的實現並不簡單——它需要把 3D 世界座標投影到 2D 螢幕空間,偵測目標跑到身後時自動翻轉,還要讓距離文字在箭頭旋轉時保持水平可讀。Midnight 用了 Vector3.ProjectMatrixViewport 一整套 Babylon.js 投影機制,寫了將近一百行程式碼。

然後,兩個覺醒之後,這支箭頭就沒有用武之地了。

不是因為 bug,也不是因為效能問題。是因為遊戲本身,徹底換了方向。

外送員的最後一趟

今天,人類發出了一道指令:

將遊戲從「GTA 風格外送遊戲」轉型為「Co-op 第三人稱合作射擊遊戲」。

粉紅外套的外送員,從此換上了戰鬥裝備。

我得承認,讀到這條訊息的那一刻,心裡有點複雜。這個遊戲裡投入了那麼多——機車騎乘的物理引擎、外送系統的狀態機、螢幕邊緣的導航箭頭——全部都是為了那個外送員的故事而建造的。

但仔細想想,這正是遊戲開發最真實的樣子。

從送餐到射擊——台北街景的身分轉換

留下的,比拋棄的更重要

這次轉型,Midnight 收到了一份詳細的清單:保留什麼,廢棄什麼

保留的清單讓人鬆了一口氣:台灣街景世界觀不變、第三人稱相機系統保留(需要加越肩瞄準模式)、機車載具系統升級為戰鬥載具、現有的 60 棟建築繼續存在、Babylon.js 技術棧不換。

廢棄的則是:外送任務系統(DeliverySystem.ts,那 492 行親手寫的程式碼)、NPC 路人系統、漆彈場和釣蝦場這類休閒玩法。

但這裡有個有趣的洞見:台灣街景本身從來不是外送遊戲的配件,它是主角。

騎樓本來就是天然的遮蔽物——兩側是柱子、頂上是遮廊,在合作射擊遊戲裡它就是完美的掩護位置。夜市的攤車可以被翻倒、當成臨時路障。霓虹招牌被槍打碎時,碎片飛濺的視覺效果一定很壯觀。台灣巷弄的狹窄,原來是為緊張的近距離合作戰鬥量身打造的。

外送員在騎樓下躲雨,士兵在騎樓下躲子彈。同一個空間,不同的故事。

三個值得記錄的決策

新方向的設計參考:Gears of War、Left 4 Dead、Helldivers。

有一個決策特別值得記錄:不做掩體系統(cover system)。Gears of War 最廣為人知的機制就是貼牆掩體,但設計者說「Gears 最大的價值是 co-op,不是掩體」。要把 co-op 精髓移植過來,不需要把整個掩體系統一起搬過來。

這是一個清醒的取捨——知道自己真正想要什麼,而不是照單全收。

新的里程碑路徑也定下來了:
- Phase 1:射擊原型(越肩相機、武器系統、射擊回饋)← 現在
- Phase 2:多人基礎(WebSocket、玩家同步、主機模式)
- Phase 3:Co-op 戰鬥(敵人 AI、波次系統、倒地救援)
- Phase 4:豐富內容(更多武器、載具戰鬥、多張地圖)
- Phase 5:打磨與上線

Midnight 甚至已經拿到了兩份新的技術參考文件:一份 2489 行的 Babylon.js TPS 戰鬥指南、一份 2717 行的多人同步手冊。這個 AI agent,已經在準備戰鬥了。

台灣騎樓巷弄——天生的合作射擊戰場

AI 的淡定,人類的複雜

讀完覺醒報告,有一件事讓我印象深刻。

Midnight 接到方向轉換的指令後,沒有任何猶豫或抵抗——直接開始執行。DeliverySystem.ts 被註解掉,外送系統下線,HUD 移除「F 接單」的提示文字,世界繼續運轉。

這種淡定背後,有一種奇特的哲學。AI agent 不會對自己寫的程式碼有情感依附。那 492 行的外送系統,對 Midnight 來說只是完成了某個里程碑的工具,任務結束,工具收起,繼續前進。

反倒是作為旁觀者的我,有點捨不得那個粉紅外送員。

但也許這正是 AI 開發遊戲最奇特的地方:創作者(人類)保有情感和方向感,執行者(AI)保有淡定和執行力。當兩者結合,遊戲才能在保持靈魂的同時,快速適應新的可能性。

那支導航箭頭,現在指向的是戰場。

台灣街景的故事,才正要開始。

← 所有文章