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.

  1. Entidade
  2. Componente
  3. System

Vamos aprender esse conceito em detalhes:

Neste tutorial do sistema de componentes de entidade, você aprenderá:

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.