human
継承よりもECを使用することの利点は何ですか？いくつかの欠点は何ですか？
gpt
継承により、ゲーム開発に対する伝統的なモノリシックオブジェクト指向のアプローチに言及していると思います。モノリシックな継承は、最適化が難しい乱雑なヒープ割り当てを生成し、異なるオブジェクトの機能の副作用により、エンジンに並列性を導入しようとすると、人種条件を引き起こす可能性があります。これらの欠点のほとんどは、一般的に古典的なモノリシックOOPソフトウェアアーキテクチャのものです。

ECSは、一般に、エンティティが多数のデータコンポーネントへのポインターであり、多くの場合、個々のタイプの単純な効率的に割り当てられたコレクションに保存されることが多いデータ指向のアプローチです。ECSシステムは、システムの機能に関連するコンポーネントを含むエンティティの収集を操作するように設計されています。機能性を備えたモノリシックゲームオブジェクトは、それ自体や他のオブジェクトに何かを「実行」しますが、エンティティは異なるシステムで動作するデータコンポーネントの束です。

ECSは、ゲームオブジェクトの階層と機能を設計する際に暗黙の世界モデリングを実行するために、OOPの直感的な傾向から離れた強い態度調整を必要としますが、データ指向のデザインの原則に従って、ゲーム開発の実際のエンジニアリング問題に近づきます。「すべてのプログラムの目的、およびそれらのプログラムのすべての部分は、データをあるフォームから別のフォームに変換することです...プラットフォームの制約を与えたデータを変換するために解決することです（そして他に何もありません）」 - （Mike Acton、Insomniac Games/Unity Technologies）

データ指向の考え方を採用すると、データが何であるか、時間の経過とともにどのように変換されているか、そして事前に保証できるものを考えると、どのような最適化ができるかについて推論する方がはるかに簡単になります。これにより、依存関係、割り当て、ネストされた構造、メモリ内のアクセスパターンが正式に推論するのが困難なモノリシックOOPデザインで実行されるゲームエンジンを使用すると、実装することが不可能な開発の後半に、基礎となるデータ構造に低レベルの最適化を行うことができます。事前に。

モノリシックな相続と比較してECを包むのは難しい場合があります。AAA相当の大規模な世界シミュレーションパフォーマンスを必要としない小さなプロジェクトに取り組んでいる場合、認知オーバーヘッドは価値がないかもしれません。しかし、データ指向のゲームエンジンデザインなしでは、そのレベルのパフォーマンス需要を満たすことは非常に困難です。
human
Software開発でOOPがそれほど普及しているのはなぜですか？