Sistema de componentes de la entidad


Entity-Component-System (ECS) es un patrón de arquitectura de software que se utiliza principalmente en el desarrollo de videojuegos para el almacenamiento de objetos del mundo del juego. Un ECS sigue el patrón de "entidades" con "componentes" de datos.

Un ECS sigue el principio de composición sobre herencia, lo que significa que cada entidad está definida no por un "tipo", sino por los componentes que están asociados con ella. El diseño de cómo los componentes se relacionan con las entidades depende del sistema de componentes de la entidad que se esté utilizando.

En 2007, el equipo que trabajaba en Operation Flashpoint: Dragon Rising experimentó con diseños de ECS, incluidos los inspirados en Bilas / Dungeon Siege , y Adam Martin más tarde escribió una descripción detallada del diseño de ECS, [1] incluyendo definiciones de terminología y conceptos básicos. [2] En particular, el trabajo de Martin popularizó las ideas de "sistemas" como un elemento de primera clase, "entidades como ID", "componentes como datos sin procesar" y "código almacenado en sistemas, no en componentes o entidades".

En 2015, Apple Inc. presentó GameplayKit , un marco de API para el desarrollo de juegos iOS , macOS y tvOS que incluye una implementación de ECS. Aunque es independiente del motor de gráficos utilizado para renderizar un juego, incluye un cómodo soporte para integrarse con SpriteKit , SceneKit y Xcode Scene Editor de Apple . [3]

En octubre de 2018 [5], la compañía Unity lanzó su famosa demostración de megaciudad que utilizaba una pila de tecnología construida en un ECS. Tenía 100,000 fuentes de audio, una para cada automóvil, cada letrero de neón y más, creando un paisaje sonoro enorme y complejo. [5]

El diseño de datos de diferentes ECS puede diferir, así como la definición de "componentes" y cómo se relacionan con una "entidad".