簡而言之: 「最後再最佳化」正是專案在認證階段夭折的方式。一份效能預算——在內容建構之前就商定的畫格時間與 記憶體上限——把最佳化從一場危機變成一次例行檢查。預算毫秒而非多邊形,把一畫格像切派一樣分,在三台固定相機處測量, 讓數字出現在工作發生之處,當場景變紅時按性價比順序拉槓桿。本文給出整套系統,附上你可以調整的起步數字。
遠景永遠是那張帳單:最大繪製距離、所有系統同時在螢幕、每一圈 LOD 都在活動。為這個視角做預算——走廊自會照顧自己。
預算畫格時間,而非多邊形
多邊形預算是遺物——現代 GPU 早在生三角形之前就被 draw call、過繪製、陰影與記憶體頻寬噎住。預算你真正 測量的東西:逐系統、逐視角的毫秒。
一款 60 fps 的遊戲每畫格擁有 16.6 毫秒;30 fps 時是 33.3 毫秒。那就是全部預算,被一切分享:玩法、物理、AI、 VFX、UI 與環境。環境的那一片是與算繪和玩法的談判——但它必須是一個數字,商定並寫下,否則任何關於某場景是否 「太貴」的討論都塌進品味與資歷。在畫格時間之外,給約束它的那些量設上限:
- 逐視角的 draw call(遠在 GPU 觸頂之前就綁住 CPU),
- 逐串流區的 紋理與網格記憶體(決定你是串流還是卡頓的那個數字),
- 視角內投射陰影的燈光,
- 過繪製熱點——植被與 VFX 是常見嫌疑犯。
確切的上限取決於平台與引擎;擁有上限這份紀律才是可遷移到你此後每一個專案的東西。一個你可能算錯的數字,勝過一份 你只能爭辯的感覺。
把一畫格像切派一樣分,用毫秒
給每個部門一片——玩法、VFX、UI、環境——再把環境這一片切開:地形、植被、道具、水。「這片森林太貴嗎?」 就成了一個客觀問題。
一款 60 fps 作品可行的起步切分,按專案再談判:環境總計 6–8 毫秒,其中地形約 1.5、植被約 2–2.5、道具與結構 約 1.5、水與大氣約 1。重點不在這些確切數字——而在於當森林測得 4 毫秒對上 2.5 毫秒的切片時,對話就成了「我們拉哪個 槓桿」而非「這是誰的錯」。
切片也防止過度最佳化,那是一種真實而昂貴的失敗。一個穩穩低於自己切片的系統,是把餘量花在品質上的邀請,而非要 捍衛的獎盃。沒有切片的團隊往往最佳化嗓門最大的工程師注意到的東西,而那很少是真正的瓶頸——圓餅圖告訴你毫秒究竟去了哪。
在三台固定相機處測量
為最壞的現實視角做預算,而非平均——每張地圖選三台固定的「預算相機」(最壞遠景、最密的戰鬥空間、最忙的 室內),每次都恰在那裡測。
隨機漫遊產出隨機數字與不可證偽的爭論。固定相機產出趨勢線:同一視角每週測量,精確地顯示一次退步於何時何地落地、 該問誰。最壞的遠景配得上主角,因為它把一切一次性疊起——最大繪製距離、每一圈 LOD、地形水天同時。在其遠景處守住預算 的地圖幾乎處處守得住;走廊奉承你,遠景說實話。
把相機位置存進地圖,好讓任何人都能複現那個確切鏡頭。「在某個角度我的機器上跑得挺好」不是資料;「預算相機 2 在最低 配置上測得 9.2 毫秒,比上週的 7.8 上升」才是一份帶嫌疑人的缺陷報告。
讓預算出現在工作發生之處
躺在 wiki 裡的預算是死的——它活在陳設期間的統計疊層裡、內容合併前對上限的一次檢查裡、以及當一次烘焙將 突破實例數時的警告裡。
當回饋即時到來,美術樂於達標;當它在作品出貨三個月後作為一張缺陷工單到來,他們就心生怨懟。工具這一側在此以一種 安靜而決定性的方式緊要:當散佈與混合烘焙為引擎原生圖元——像 Numivo 那樣普通的實例化網格與 foliage——你既有的剖析器就能把不加粉飾的真相道出,沒有外掛執行時攪渾數字,且每一根標準槓桿(剔除距離、LOD、 實例數)都原封不動地適用。一份你只能透過黑箱測量的預算,是一份你會悄悄不再信任的預算。
能堅持下去的評審節律
每週對三台預算相機截圖(五分鐘)、在內容合併時對上限做一次自動檢查、以及每月對上限本身做一次評審—— 預算是估計,誠實的修訂勝過沉默的違反。
- 每週: 開著統計給三台相機截圖;把畫格時間與記憶體記進一張共享表。趨勢一個月內浮現,一處尖峰指向某一週的工作。
- 合併時: 一次自動檢查把場景與上限比對。紅色數字開啟一場對話,而非弄斷建置——目標是意識,不是官僚,而一道 硬阻攔會教人去糊弄檢查。
- 每月: 重訪切片本身。專案中途的現實總與前期製作的猜測不同;公開調整預算能維持它的可信。一份人人默默無視的 預算比沒有更糟,因為它教團隊:上限只是演戲。
當數字變紅
按性價比順序拉槓桿——先剔除距離與陰影設定(幾分鐘,巨大勝利),再 LOD 與 impostor,再實例數,最後才 動美術本身。
最佳化是分診,不是拆除。最後才拆美術——大多數超支的遠景,早在你不得不刪掉任何玩家能看見的東西之前,就已從看不見的 設定改動回到綠色。
昂貴的錯誤是逕直跳到「刪掉一半的樹」。密度是最可見的槓桿,通常也不是最便宜的——一處超支 2 毫秒的遠景,通常僅憑 陰影距離與剔除距離的調校就回到綠色,兩者對玩家都不可見。刪內容是最後手段,正因為它是玩家唯一能看見的槓桿;梯子上 它之上的每一級,從美術角度看都是免費的。往下走這梯子,你就在收回毫秒的同時保住觀感;從底往上走,你就在還沒試過 免費勝利之前先把遊戲變醜。
值得偷師的現場數字
- 60 fps 的一畫格:16.6 毫秒——環境通常談判 6–8 毫秒
- 一份可行的環境子切分:地形 1.5 / 植被 2–2.5 / 道具 1.5 / 水與大氣 1(毫秒)
- 每張地圖的預算相機:3——遠景、戰鬥、室內——存進地圖
- 每週測量成本:約 5 分鐘;價值:趨勢線而非爭論
- 變紅時的槓桿順序:剔除 → 陰影 → LOD → 實例 → 美術
迷你 FAQ
環境預算歸誰所有? 一個具名的人——通常是技術美術——擁有測量;上限與算繪共同擁有。沒有主人的預算一個月內 朽成傳說,因為「人人負責」意味著沒人測量。
預算如何與動態時段共處? 在每台相機測量最壞的光照條件,而非最漂亮的。帶長長掠射陰影的黎明往往是正午的兩倍 開銷;只在正午守得住的預算是半份預算,玩家會找到那個昂貴的時辰。
一個小型獨立專案也需要這一切嗎? 縮小它,而非取消。一台預算相機、一個上限(你最低配機器上的畫格時間),每週 檢查。那個五分鐘的習慣正是拯救最後一個月的東西——無論團隊大小,失敗模式都一樣:在成本昂貴到難改時才發現它。
記憶體對畫格時間又如何? 它們是有著不同失敗模式的不同預算——畫格時間拉低你的 FPS,記憶體把你的串流拖入卡頓或 崩潰。兩者都要預算;在主機上,記憶體往往是更硬的上限,而它是那個會讓認證不過、而不只是感覺糟糕的。
預算不是對藝術性的限制——它正是那美麗的場景在玩家真正擁有的硬體上仍以 60 fps 保持美麗的原因。把效能當作共享設計 約束的團隊,交付的遊戲比把它當作最終 Boss 的團隊更漂亮。