关卡的性能预算
手机和电脑能承载多少形状,文本和特效折合多少形状,以及为什么真正拖垮性能的不是数量
设备能承载多少形状
统计的是同一帧中同时存在的形状。数字是近似值,但数量级是对的
| 设备 | 流畅 | 可玩的极限 |
|---|---|---|
| 手机 | 1000 | 2000 |
| 低配电脑 | 5000-10000 | 20000-40000 |
| 中等电脑(Steam官方调查) | 50000 | 100000 |
在你能找到的最弱的设备上测试。在你自己的电脑上肯定没问题,但这说明不了什么
文本和特效
文本和特效也按形状计算
文本:每个文本物体折合2到100个形状。代价取决于字体的复杂程度、字符数和样式数,以及文本是否有动画
特效:物体本身算10个形状,每个粒子再加0.1个形状。一个有一千个粒子的特效大约相当于110个形状
过度绘制
真正的代价不是数量,而是过度绘制。也就是同一个像素被一遍又一遍地重新绘制
由此可知:
- 一个全屏的半透明填充比一百个弹幕还要昂贵
- 层层叠加的半透明装饰是你能做出的最昂贵的东西
- 关卡运行缓慢时,去找覆盖整个屏幕的东西,而不是去数物体
须知
在一块中端移动芯片上,一个1000个物体、过度绘制达到60-70倍的场景,会把95-97%的GPU时间花在像素着色上。一千个分布在屏幕各处的小形状,比十个相互叠加的半透明全屏形状更便宜
不透明和透明
形状可以选择绘制路径:自动、不透明、透明。不透明路径更便宜:GPU会提前丢弃被遮挡的像素
自动会在加载时自行决定一次。它的硬性规则是绝不改变关卡的外观。凡是无法证明为不透明的,都会走透明路径
警告
只有在完全清楚自己在做什么时才手动设置绘制路径。一个实际上并非不透明的物体被强制设为不透明,结果不会变快,只会显示错误
容量提示
保存时,关卡会记录它最繁重的那一帧需要多少个物体。这是给加载器的提示,不是上限。生成器会重新计算它