Pular para o conteúdo principal

Visão Geral


Resumo da Arquitetura​

A arquitetura desta framework é projetada para oferecer flexibilidade e modularidade, permitindo modificações e expansões sem impacto direto em outras partes do sistema.

A ideia é ter uma arquitetura baseada em Modelos, Renderizadores, Controladores e Eventos, que são organizados em camadas para facilitar a manutenção e a expansão do código:

  1. Os Modelos armazenam e gerenciam os dados do jogo, estruturados em três camadas: Data, Stores e Services;
  2. Os Renderizadores representam os dados em elementos visuais;
  3. Os Controladores centralizam a lógica do jogo, gerenciando estados e cenas;
  4. Os Eventos permitem a comunicação entre os sistemas, possibilitando a interação entre Modelos, Renderizadores e Controladores.

Modelos de dados​

Os Modelos são estruturados em Resources do Godot, possibilitando expansão como a criação de novos tipos de personagens, atributos, classes, ações e efeitos com o mínimo de alterações no código.

São estruturados em três camadas:

  • Data: definem como os Resources são estruturados, incluindo suas propriedades;
  • Stores: Armazenam os dados em tempo de execução, mantendo o estado global do jogo e sincronizando as mudanças entre diferentes partes do sistema.
  • Services: Manipulam os dados das Stores e implementam regras de negócio, garantindo consistência na lógica da aplicação.

Resources​

Atualmente, os tipos de Resources ainda estão sendo definidos e, por enquanto, existe apenas um para cada modelo.

Por isso, o acesso e manipulação desses tipos está sendo feito diretamente.

Explicação
  • CharacterType é um tipo de Resource que implementa a interface ICharacter.
  • CharacterService manipula CharacterType.
  • CharacterStore armazena CharacterType.
Dica

Para entender melhor o conceito de Resource, veja o tutorial e a documentação oficial do Godot.

Abstração dos Resources​

Quando novos tipos de Resources forem criados para uma mesma feature (por exemplo, CharacterTypeA e CharacterTypeB), será necessário que essas classes herdem de uma classe base como CharacterBase.

Explicação
  • CharacterTypeA e CharacterTypeB são Resources que herdam CharacterBase.
  • CharacterBase é a classe base que implementa ICharacter.
  • CharacterService manipula dados do tipo CharacterBase.
  • CharacterStore armazena dados do tipo CharacterBase.

Renderizadores​

Os Renderizadores são responsáveis pela exibição gráfica dos elementos do jogo, usando os dados dos Models para criar representações visuais (incluindo animações e efeitos) através de Componentes modulares.

Componentes​

Os Componentes compõem os Renderizadores, encapsulando funcionalidades específicas, como animações e interações visuais. Eles promovem modularidade e flexibilidade no desenvolvimento.


Controladores​

Os Controladores centralizam a lógica do jogo, gerenciando estados, cenas e eventos.

Coordenam as ações dos jogadores e interações entre personagens, garantindo que a progressão e os sistemas do jogo funcionem corretamente.

Tem uma sugestão?💡