Sistema de componentes de entidade
O que é entidade-componente-sistema?
Entidade-Componente-Sistema (ECS) é um padrão arquitetônico. Esse padrão é amplamente utilizado no desenvolvimento de aplicativos de jogos. O ECS segue o princípio da composição sobre a herança, o que oferece melhor flexibilidade e ajuda a identificar entidades onde todos os objetos na cena de um jogo são considerados uma entidade.
A programação ECS é um método de escrever código que fornece alto desempenho por padrão.
Este sistema consiste em três termos.
- Entidade
- Componente
- System
Vamos aprender esse conceito em detalhes:
Neste tutorial do sistema de componentes de entidade, você aprenderá:
- O que é entidade-componente-sistema?
- O que é uma entidade?
- O que é um Componente?
- O que é o sistema?
- Composição
- Vantagem do ECS
- Desvantagens de usar ECS
- Exemplo de sistema de componente de entidade
- Fluxo de dados no ECS:
O que é uma entidade?
Uma entidade é um objeto distinto que representa um ator em um espaço simulado. Não contém dados ou comportamento reais. Este componente fornece seus dados a uma entidade. Normalmente é um suporte ou dicionário.
Por exemplo, se estivermos simulando o universo de um jogo Minecraft, todas as 'coisas' visíveis e tangíveis no universo do jogo são contadas em entidades.
O que é um Componente?
Um componente é um comportamento singular atribuído a uma entidade. Idealmente, o nome de um elemento deve comunicar qual comportamento a entidade exibirá. No entanto, o componente em si não tem comportamento. Eles são módulos reutilizáveis anexados a entidades. O componente fornece aparência, comportamento e funcionalidade.
Toda a lógica é implementada por meio de componentes que ajudam a definir diferentes tipos de objetos, misturando e configurando componentes.
O que é o sistema?
Um sistema irá iterar muitos componentes para executar tarefas de baixo nível.
funções como renderização de gráficos, execução de física
cálculos ou pathfinding. Oferece escopo global, gerenciamento e serviços para classes de componentes.
No entanto, os sistemas não são opcionais, mas podemos usá-los para separar lógica e dados. Também ajuda a lidar com os componentes lógicos e atuar como contêineres de dados.
Exemplos
- Gravidade (Velocidade) – Ajuda a acelerar a velocidade devido à gravidade
- Adiciona velocidade à posição
- Define a entrada de uma entidade controlada por bot de acordo com um agente de IA
- Renderizar (Posição, Sprite) – Desenha sprites
- O Controle do Jogador (Input Player) ajuda a definir a entrada da entidade controlada pelo jogador de acordo com um controlador.
Composição
Uma composição é um elemento ao qual você pode anexar mais componentes para adicionar aparência, comportamento ou funcionalidade adicional. Você também pode atualizar os valores dos componentes para configurar a entidade.
Vantagem do ECS
Aqui estão as vantagens de usar ECS na programação:
- Você pode criar códigos mais curtos e menos complicados.
- Comportamento emergente muito flexível.
- Ele fornece uma arquitetura para desenvolvimento 3D e VR.
- Permite scripts por comportamento de não técnicos.
- Isso ajuda você a dividir suas classes monolíticas.
- Fácil recusa e compossibilidade.
- Uma opção fácil para testes unitários e simulação.
- Ele permite que você crie um aplicativo de VR em termos de complexidade.
- Substitua componentes por componentes simulados em tempo de execução.
- Isso ajuda você a estender novos recursos.
- ECS é um método amigável para processamento paralelo e multithreading,
- Ajuda você a separar os dados das funções que atuam sobre eles
- Fornece melhor flexibilidade ao definir objetos misturando com peças reutilizáveis.
- Ele oferece um design limpo usando métodos de desacoplamento, encapsulamento, modularização e reutilização.
Desvantagens de usar ECS
Aqui estão algumas desvantagens de usar ECS
- Não tão concretamente definido como outros padrões como MVC.
- Difícil de aplicar corretamente, fácil de usar indevidamente Bons componentes exigem mais reflexão sobre o design
- O ECS requer a escrita de muitos sistemas pequenos que aliteram um número potencialmente grande de entidades, o que desenvolve o risco de escrever código muito ineficiente
- A maioria das pessoas nunca ouviu falar desse padrão.
Exemplo de sistema de componente de entidade
Vejamos o exemplo de um coelho:
Veja a caixa tracejada ao redor desses componentes. Essa é a entidade coelho – nada mais que um contêiner de componentes. Você também pode definir entidades como uma agregação de qualquer subconjunto de componentes.
Você pode ver a imagem fornecida acima. É uma das entidades coelhinhas – nada mais do que um contêiner de componentes. Você pode definir entidades como uma agregação de qualquer subconjunto de componentes, como Carrot:
Fluxo de dados no ECS:
O comportamento dos sistemas no modelo ECS é a mudança de um estado para outro.
Vamos entender usando este exemplo:
Comportamentos: “Um coelho sentado em uma árvore cai devido à gravidade.”
Como implementar o comportamento acima?
Você pode fazer isso com um valor z maior que 0, que diminui com o tempo até 0.
Comportamento: “Os seres vivos envelhecem”.
Vamos ver como você pode implementar esse comportamento?
Você pode fazer com que os Componentes Vivos tenham valor de idade, que aumenta com o tempo.
Resumo:
- Entidade-Componente-Sistema (ECS) é um padrão arquitetônico.
- Uma entidade é um objeto distinto que representa um ator em um espaço simulado.
- Um componente é um comportamento singular atribuído a uma entidade.
- Um sistema irá iterar muitos componentes para executar funções de baixo nível, como renderização de gráficos, realização de cálculos físicos ou localização de caminhos.
- Uma composição é um elemento ao qual você pode anexar mais componentes para adicionar aparência, comportamento ou funcionalidade adicional.
- Ao usar o padrão ECS você pode criar códigos mais curtos e menos complicados.
- Não é tão concretamente definido como outros padrões como MVC.
- O comportamento dos sistemas no modelo ECS é a mudança de um estado para outro.