レベルの予算
スマートフォンは1フレームにおよそ1000個のシェイプなら余裕を持って扱え、性能の低いPCなら5000〜10000個です。数よりもコストが大きいのはオーバードローです:画面全体を覆う半透明のものが、何層にも重なる場合です
デバイスが扱えるシェイプの数
数えるのは、1フレームに同時に存在するシェイプです。数値はおおよそですが、桁は正しいものです
| デバイス | 余裕がある | プレイできる上限 |
|---|---|---|
| スマートフォン | 1000 | 2000 |
| 性能の低いPC | 5000〜10000 | 20000〜40000 |
| 平均的なPC(Steamの調査による) | 50000 | 100000 |
手の届く範囲で最も性能の低いデバイスで試します。自分のPCではすべて問題なく動きますが、それは何の目安にもなりません
テキストとエフェクト
テキストとエフェクトもシェイプとして数えられます
テキスト:テキストオブジェクト1つにつき2〜100シェイプ。コストはフォントの複雑さ、文字数、スタイルの数、テキストがアニメーションするかどうかで決まります
エフェクト:オブジェクト自体に10シェイプ、さらにパーティクル1個につき0.1シェイプ。パーティクル1000個のエフェクトはおよそ110シェイプです
オーバードロー
コストが大きいのは数ではなく、オーバードローです。同じピクセルが何度も繰り返し塗られることを指します
ここから言えること:
- 画面全体を覆う半透明の塗りつぶし1枚は、弾100個よりも高くつく
- 半透明の装飾を何層も重ねるのは、作れるものの中で最も高くつく
- レベルが重いときは、オブジェクトを数えるより、画面全体を覆っているものを探す
平均的なモバイルチップでは、1000個のオブジェクトが60〜70重に重なるシーンで、GPU時間の95〜97パーセントがピクセルの塗りに費やされます。画面全体に散らばった1000個の小さなシェイプは、全画面を覆う半透明のシェイプ10個を重ねるより安くつきます
不透明と半透明
シェイプには描画パスの選択肢があります:Auto、Opaque、Transparent。不透明のパスのほうが安くつきます:GPUが隠れたピクセルを先に捨てるからです
Autoは読み込み時に1回だけ自動で決めます。その絶対条件は、レベルの見た目を決して変えないことです。不透明だと証明できないものは、すべて半透明になります
パスを手動で設定するのは、何をしているのか正確にわかっている場合だけにします。不透明と宣言したのに不透明でないオブジェクトは、速くなるのではなく、見た目がおかしくなります
容量のヒント
保存時に、レベルは最も重いフレームで必要になったオブジェクトの数を記録します。これはローダーへのヒントであって、制限ではありません。ジェネレーターはこの値を再計算します