miniaturadeimagen|Un diseño simple de Entidad-componente-sistema. Entidad-Componente-Sistema (ECS) es un patrón de arquitectura de software utilizado principalmente en el desarrollo de videojuegos para la representación de objetos del mundo del juego. Un ECS comprende entidades referenciadas por un código identificador. Los componentes son los datos de cada entidad (se almacenan de forma conjunta en memoria), accesibles mediante el identificador. Finalmente, los sistemas operan sobre dichos componentes.
ECS sigue el principio de composición sobre herencia, lo que significa que cada entidad se define no por una jerarquía de tipos, como tradicionalmente en programación orientada a objetos, sino por los componentes asociados a esa entidad. Los sistemas actúan de forma global sobre todas las entidades que tienen los componentes requeridos por dicho sistema.
Aunque esta arquitectura se utiliza especialmente en el desarrollo de videojuegos, el ECS puede ser útil en otros dominios, como simulaciones, sistemas de tiempo real, o diseño asistido por computador.
Características La arquitectura ECS combina ideas complementarias ya establecidas en informática y teoría de lenguajes de programación. Por ejemplo, los componentes pueden considerarse un caso de mixin ya existente en múltiples lenguajes de programación. Los componentes son un caso especializado del enfoque de delegación en general y del protocolo de metaobjetos.
Entidad: Una entidad representa un elemento de propósito general. En el contexto de un motor de juego, por ejemplo, cada elemento básico del juego se representa como una entidad. Normalmente, consta solo de un identificador único. Las implementaciones suelen usar un entero simple para esto.
Componente: Un componente caracteriza a una entidad en un aspecto específico y contiene los datos necesarios para modelar dicho aspecto. Por ejemplo, cada objeto del juego que pueda recibir daño podría tener un componente de Salud asociado a la entidad. Las implementaciones suelen usar estructuras, clases o matrices asociativas.
Sistema: Un sistema es un proceso que actúa sobre todas las entidades con los componentes deseados. Por ejemplo, un sistema de físicas puede consultar todas las entidades con componentes de masa, velocidad y posición, e iterar sobre los resultados realizando cálculos físicos sobre el conjunto de componentes relevantes de cada entidad.
El comportamiento de una entidad puede modificarse en tiempo de ejecución mediante sistemas que añaden, eliminan o modifican componentes. Esto elimina los problemas de ambigüedad que suelen presentar las jerarquías de herencia profundas y extensas en las técnicas tradicionales de programación orientada a objetos, que son difíciles de comprender, mantener y ampliar. Los enfoques comunes de ECS son altamente compatibles con las técnicas de diseño orientado a datos y a menudo se combinan con ellas. Los datos de todas las instancias de un componente se almacenan de forma contigua en la memoria física, lo que permite un acceso eficiente a la memoria para sistemas que operan con múltiples entidades.
Véase también
Modelo-vista-controlador Patrón de observador Patrón de estrategia Modelo relacional
Referencias
Categoría:Patrones de diseño Categoría:Patrones de arquitectura (informática)