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

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

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

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

モノリシックな相続と比較してECを包むのは難しい場合があります。AAA相当の大規模な世界シミュレーションパフォーマンスを必要としない小さなプロジェクトに取り組んでいる場合、認知オーバーヘッドは価値がないかもしれません。しかし、データ指向のゲームエンジンデザインなしでは、そのレベルのパフォーマンス需要を満たすことは非常に困難です。
By inheritance, I assume you're referring to a traditional monolithic object oriented approach to game development. Monolithic inheritance produces messy heap allocations that are difficult to optimize, and the side effects of different objects' functionality may cause race conditions when trying to introduce parallelism into the engine. Most of these drawbacks are those of classic monolithic OOP software architectures in general, which I'm happy to provide a refresher on if you need one.

ECS is a data-oriented approach where Entities are generally pointers to a bunch of data Components, often stored in simple efficiently allocated collections of each individual type. An ECS System is designed to operate over collections of Entities which contain the Components relevant for the System's functionality. An monolithic game object with functionality "does" something to itself and other objects, while an Entity is a bunch of data Components which are operated on by different Systems.

ECS requires a strong attitude adjustment away from the intuitive tendency in OOP to perform implicit world modelling when designing the hierarchy and functionality of your game objects, but following the principle of data-oriented design gets you closer to the real engineering problem of game development: "The purpose of all programs, and all parts of those programs, is to transform data from one form to another... Solve for transforming the data you have given the constraints of the platform (and nothing else)"  — (Mike Acton, Insomniac Games/Unity Technologies) 

When you adopt the data-oriented mindset, it becomes much easier to reason about what your data is, how you're transforming it over time, and what kind of optimizations you can make given what you can guarantee ahead of time. It allows you to make low-level optimizations to underlying data structures late into development that may be impossible to implement given a game engine that runs on a monolithic OOP design whose dependencies, allocations, nested structures and access patterns in memory are difficult to formally reason about ahead of time.

It can be difficult to wrap your head around ECS compared to monolithic inheritance, and the cognitive overhead might not be worth it if you're working on a small project that doesn't need AAA-equivalent large-scale world simulation performance. But it would be very hard to meet that level of performance demand without a data-oriented game engine design.