關卡預算
手機能流暢承載一幀中約1000個形狀,低配電腦能承載5000-10000個。比數量代價更高的是過度繪製:鋪滿全屏的半透明內容,一層疊一層
裝置能承載多少形狀
統計的是同一幀中同時存在的形狀。數字是近似值,但數量級是對的
| 裝置 | 流暢 | 可玩的極限 |
|---|---|---|
| 手機 | 1000 | 2000 |
| 低配電腦 | 5000-10000 | 20000-40000 |
| 中等電腦(根據Steam調查) | 50000 | 100000 |
在你能找到的最弱的裝置上測試。在你自己的電腦上一切都會正常,但這說明不了什麼
文本和特效
文本和特效也按形狀計算
文本:每個文本物體摺合2到100個形狀。代價取決於字型的複雜程度、字元數、樣式數,以及文本是否有動畫
特效:物體本身算10個形狀,每個粒子再加0.1個形狀。一個有一千個粒子的特效大約相當於110個形狀
過度繪製
代價高的不是數量,而是過度繪製。也就是同一個畫素被一遍又一遍地重新繪製
由此可知:
- 一個鋪滿全屏的半透明填充比一百個彈幕更昂貴
- 層層疊加的半透明裝飾是你能搭建出的最昂貴的東西
- 如果關卡卡頓,去找覆蓋整個螢幕的東西,而不是去數物體
須知
在一塊中端移動晶片上,一個1000個物體、重疊達60-70倍的場景,會把95-97%的GPU時間花在給畫素上色上。一千個分佈在螢幕各處的小形狀,比十個相互疊加的半透明全屏形狀更便宜
不透明和半透明
形狀可以選擇繪製路徑:自動、不透明、透明。不透明路徑更便宜:GPU會提前丟棄被遮擋的畫素
自動會在載入時自行決定一次。它的硬性條件是絕不改變關卡的外觀。凡是無法證明為不透明的,都會變成半透明
警告
只有在完全清楚自己在做什麼時才手動設定路徑。一個被宣告為不透明、實際卻不是的物體不會變快,只會顯示錯誤
容量提示
儲存時,關卡會記錄它最繁重的那一幀需要多少個物體。這是給載入器的提示,不是上限。生成器會重新計算它