最適化
CPUパフォーマンス最適化
予測カリング
Quantumはデフォルトで、ゲームステート全体に対して完全な予測とロールバックのループを実行します。つまり、各エンティティに対して複数回のシミュレーションによる更新が行われるため、非常にCPU負荷が高いです。
予測カリングを適用すると、特定のカリング範囲内のエンティティのみで予測シミュレーションが実行されるため、CPU使用量を劇的に削減できます。
詳細は、予測カリングをご覧ください。
オブジェクトプール
QuantumEntityViewUpdater
はデフォルトで、エンティティ作成時にQuantumEntityView
プレハブの新しいインスタンスを作成し、破棄時には各ゲームオブジェクトを破棄します。これによって、CPUスパイクやGC増加が発生します。最良のパフォーマンスを得るためにQuantumEntityView
はプールしましょう。
詳細は、プーリングをご覧ください。
シミュレーションレート
Quantumのシミュレーションレートは、1秒間にQuantumシミュレーションが実行されるティック数を決定するもので、SessionConfig
から調整できます。
これはUnityのFixedUpdate
と同等です。低ティックレートで実行すれば、CPUに余裕ができます。ゲームプレイ体験品質に影響が出ない範囲で、可能な限りシミュレーションレートを低くすることをお勧めします。
TargetFrameRate / vSync
デフォルトでは、一部のプラットフォームでUnityは可能な限り高いフレームレートでの実行を試みます。余分なCPU負荷はゲームプレイ品質に悪影響を与え、より目立つラグスパイクが発生します。そのため、vSync
を有効にしたり、Application.TargetFrameRate
を設定したり、それらの値をプレイヤーがオプションから変更できるようにしたりすることをお勧めします。
帯域幅の最適化
帯域幅の最適化は、様々な理由から重要です。
- 帯域幅使用料金が減るため、アプリケーション費用が削減できます。
- より多くのプレイヤーが、ネットワーク関連のトラブルなしにゲームをプレイできます。
- 多くのプレイヤーが参加できるセッションを作成できます。
入力の最適化
Quantumがネットワーク経由で送信するデータの大半は入力です。そのため、使用する入力型の最適化は極めて重要です。
入力の最適化については、こちらをご覧ください。
Back to top