Arquitetura do Sistema

A arquitetura do projeto Arretado é baseada em um design modular e orientado a componentes, padrões usados em projetos de jogos para facilitar a organização, reutilização e manutenção do código.

1.0 Componentes Principais

O projeto é dividido em várias categorias lógicas, cada uma com sua responsabilidade:

  • Cenas ( src/scenes ): Representam os diferentes estados do jogo, como menu principal, seleção de personagem, gameplay, game over, cutscenes e telas de pausa. Cada cena herda de Phaser.Scene e gerencia seus próprios ativos, lógica de atualização e renderização. As cenas são orquestradas para criar o fluxo do jogo.

    • BaseScene : Uma cena base para herança, contendo funcionalidades comuns a várias cenas.

    • flow : Contém cenas que controlam o fluxo do jogo (Boot, Cutscenes, Menu, Game Over, Next Phase, Pause, Title).

    • gameplay : Contém as cenas principais de jogabilidade (GameScene, SkinScene, StoreScene, itemScene).

    • ui: Contém cenas relacionadas à interface do usuário (gameHudUi, itemsDisplayUi).

  • Objetos ( src/objects ): Define as entidades do jogo, como o jogador, inimigos, projéteis e itens. Cada objeto é uma classe que estende Phaser.GameObjects.Sprite ou Phaser.Physics.Arcade.Sprite , encapsulando suas propriedades, comportamentos e animações.

    • bullet : Gerencia os projéteis disparados no jogo.

    • enemies : Define os diferentes tipos de inimigos (BasicEnemyGroup, BossEnemy, DashEnemyGroup, RangedEnemyGroup, TankEnemyGroup) e suas barras de vida (BossHealthBar).

    • player: Contém a lógica do jogador (Player, PlayerBoostCooldownUI, PlayerHealthBar).

    • upgrades : Gerencia os itens de melhoria no jogo.

  • Componentes ( src/components): Módulos reutilizáveis que encapsulam lógicas específicas que podem ser anexadas a diferentes objetos ou cenas. Isso inclui sistemas de colisão, gerenciamento de entrada, eventos e componentes de saúde.

    • collider : Lógica para detecção e tratamento de colisões.

    • events : Gerenciamento de eventos globais e específicos do jogador.

    • input : Gerenciamento de entrada do usuário (teclado, mouse).

    • playerHealth : Componente de saúde reutilizável.

    • timer : Funcionalidades de temporização.

  • Configurações ( src/config ): Contém arquivos de configuração para o jogo, como opções gerais, estatísticas de jogador, dados de ondas de inimigos, cutscenes, itens de loja e gerenciamento de som.

    • CutscenesContainer : Define as configurações para as cutscenes.

    • GameOptionsConfig : Opções gerais do jogo.

    • SkinItems : Configurações para itens de skin.

    • SoundManager : Gerenciamento de áudio.

    • StoreItems: Configurações para itens da loja.

    • config : Configurações gerais.

    • enemies : Configurações específicas para inimigos.

    • player : Configurações específicas para o jogador

    • waves : Configurações para as ondas de inimigos

  • Assets ( src/assets ): Armazena todos os recursos visuais e de áudio do jogo, organizados por tipo (imagens, sons, etc.).

1.2 Fluxo de Execução

  1. Inicialização ( BootScene.ts ): A cena inicial carrega os recursos básicos e transiciona para a cena de pré-carregamento.

  2. Pré-carregamento ( preloadAssets.ts ): Carrega todos os ativos do jogo (imagens, spritesheets, áudios, tilemaps).

  3. Menu Principal ( MenuScene.ts ): Após o carregamento, o jogador é direcionado para o menu principal.

  4. Seleção de Personagem ( CharacterSelectScene.ts ): Permite ao jogador escolher um personagem ou skin.

  5. Gameplay ( GameScene.ts ): A cena principal onde a ação do jogo ocorre. Gerencia o jogador, inimigos, colisões, pontuação e progressão das ondas.

  6. Pausa ( PauseScene.ts ): Permite pausar o jogo e acessar opções.

  7. Game Over ( GameOverScene.ts ): Exibida quando o jogador perde.

  8. Próxima Fase ( NextPhaseScene.ts ): Transição entre ondas ou atos do jogo.

  9. Cutscenes ( CutscenesScene.ts ): Exibe sequências animadas para avançar a narrativa.

O GameScene.ts é o core da jogabilidade, onde a maioria das interações e lógicas de jogo são coordenadas. Ele inicializa o jogador, os grupos de inimigos, os controladores de tiro e colisão, e gerencia o ciclo de vida das ondas de inimigos e a transição entre elas.

Atualizado