最適化

はじめに

Godotは、バランスの取れたパフォーマンスの哲学に従っています。パフォーマンスの世界では、トレードオフが常にあります。トレードオフは、使いやすさと柔軟性のためにスピードを交換することから成ります。これのいくつかの実用的な例は次のとおりです:

  • オブジェクトを大量に効率的にレンダリングするのは簡単ですが、大きなシーンをレンダリングする必要がある場合、非効率になる可能性があります。これを解決するには、レンダリングに可視性の計算を追加する必要があり、レンダリングの効率が低下しますが、同時にレンダリングされるオブジェクトが少なくなるため、全体的に効率が向上します。
  • レンダリングする必要があるすべてのオブジェクトに対して、すべてのマテリアルのプロパティを設定するのも遅くなります。これを解決するために、オブジェクトはコストを削減するためにマテリアル別にソートされますが、並べ替えにはコストがかかります。
  • 3D物理でも同様の状況が発生します。大量の物理オブジェクト(SAPなど)を処理するための最適なアルゴリズムは、オブジェクトの挿入/削除とレイキャスティングが遅くなります。レイキャスティングと同様に、より高速な挿入と削除を可能にするアルゴリズムは、多くのアクティブオブジェクトを処理できません。

And there are many more examples of this! Game engines strive to be general purpose in nature, so balanced algorithms are always favored over algorithms that might be fast in some situations and slow in others or algorithms that are fast but make usability more difficult.

Godot is not an exception and, while it is designed to have backends swappable for different algorithms, the default ones prioritize balance and flexibility over performance.

With this clear, the aim of this tutorial section is to explain how to get the maximum performance out of Godot. While the tutorials can be read in any order, it is a good idea to start from General optimization tips.