Arquitetura do Phaser
Voltar para: Games com Phaser + Reactjs
Para utilizar bem o Phaser não basta apenas aprender comandos.
É essencial entender como o motor do jogo funciona internamente.
O Phaser possui uma arquitetura bem organizada composta por quatro pilares principais:
- Game
- Scenes
- Systems
- Lifecycle (Ciclo de vida)
Esses elementos trabalham juntos como uma orquestra de sistemas, onde cada parte possui uma responsabilidade específica dentro do jogo.
Compreender essa estrutura evita muitos erros comuns de iniciantes.
🎯 Objetivos da Lição
Ao final desta aula o aluno será capaz de:
- Entender a arquitetura interna do Phaser
- Compreender o papel do Game
- Entender como Scenes organizam o jogo
- Conhecer os Systems internos
- Compreender o ciclo de vida das cenas
- Entender como o Phaser gerencia atualização e renderização
🧠 Visão geral da arquitetura
De forma simplificada, a arquitetura funciona assim:
Game
├ Scene Manager
│
├ Scene
│ ├ Systems
│ │ ├ Physics
│ │ ├ Input
│ │ ├ Animation
│ │ ├ Sound
│ │ └ Loader
│ │
│ └ Game Objects
│
└ Renderer
Ou seja:
- Game controla tudo
- Scenes organizam o jogo
- Systems fornecem funcionalidades
- Game Objects são os elementos visíveis
🧩 O Objeto Game
O objeto Game é o coração do jogo.
Ele representa a aplicação inteira.
Quando um jogo é criado em Phaser, o motor inicializa uma instância de Game que controla:
- inicialização do motor
- criação do canvas
- gerenciamento das cenas
- execução do game loop
- renderização
Podemos imaginar o Game como:
o gerente geral do jogo
Ele coordena todos os outros sistemas.
⚙️ Responsabilidades do Game
O Game controla vários sistemas centrais.
Entre eles:
🎬 Scene Manager
Responsável por controlar as cenas do jogo.
Ele pode:
- iniciar cenas
- pausar cenas
- trocar cenas
- destruir cenas
🖥️ Renderer
Responsável por desenhar tudo na tela.
O Phaser pode utilizar:
- WebGL
- HTML5 Canvas
O sistema escolhe automaticamente o melhor método.
⏱️ Game Loop
O Game controla o loop principal do jogo, responsável por atualizar e renderizar continuamente.
Esse loop acontece normalmente:
60 vezes por segundo
🎬 Scenes – Organização do jogo
As Scenes são uma das ideias mais importantes do Phaser.
Uma Scene representa uma parte específica do jogo.
Exemplos:
- menu principal
- tela de carregamento
- fase do jogo
- tela de pausa
- tela de game over
Cada uma dessas partes pode ser uma Scene independente.
🧠 Por que usar Scenes
Separar o jogo em cenas permite:
✔ organização
✔ reutilização de código
✔ transições entre estados do jogo
✔ manutenção mais fácil
Em vez de criar um jogo inteiro em um único arquivo, usamos várias cenas especializadas.
🧩 Estrutura conceitual de uma Scene
Uma Scene possui vários elementos internos:
Scene
├ Systems
├ Game Objects
├ Cameras
├ Physics
└ Input
Cada Scene possui seus próprios sistemas.
Isso significa que diferentes cenas podem possuir comportamentos diferentes.
⚙️ Systems – Sistemas internos do Phaser
Dentro de cada Scene existem diversos Systems.
Esses sistemas fornecem funcionalidades essenciais para o jogo.
Alguns dos principais são:
🎮 Input System
Responsável por capturar ações do jogador.
Ele detecta:
- teclado
- mouse
- toque
- gamepad
Isso permite que o jogo responda aos comandos do jogador.
🧲 Physics System
Responsável por simular física no jogo.
Isso inclui:
- colisões
- gravidade
- movimento
- interação entre objetos
O Phaser possui dois motores principais:
- Arcade Physics (simples e rápido)
- Matter Physics (mais realista)
🎞️ Animation System
Responsável por controlar animações de sprites.
Ele permite:
- criar animações
- reproduzir sequências de quadros
- controlar velocidade da animação
🔊 Sound System
Gerencia áudio do jogo.
Ele controla:
- música de fundo
- efeitos sonoros
- volume
- reprodução simultânea
📦 Loader System
Responsável por carregar assets do jogo.
Exemplos de assets:
- imagens
- spritesheets
- sons
- mapas
- fontes
O Loader garante que todos os recursos estejam disponíveis antes do jogo iniciar.
🖼️ Renderer System
Responsável por desenhar os objetos na tela.
Ele envia os elementos para a GPU através de:
- WebGL
ou - HTML5 Canvas
🧍 Game Objects – Elementos do jogo
Game Objects são os objetos que aparecem no jogo.
Exemplos:
- sprites
- imagens
- textos
- partículas
- botões
- formas geométricas
Esses objetos são adicionados dentro de uma Scene.
Eles possuem propriedades como:
- posição
- escala
- rotação
- visibilidade
- interação
🔄 Lifecycle – Ciclo de vida das Scenes
Cada Scene possui um ciclo de vida.
Esse ciclo define quando certas funções são executadas.
O ciclo segue geralmente esta ordem:
init
↓
preload
↓
create
↓
update
🧩 init()
Executado quando a cena é inicializada.
Usado para:
- preparar variáveis
- receber dados de outras cenas
- configurar estados iniciais
Ainda não existe nenhum objeto carregado.
📦 preload()
Executado para carregar assets do jogo.
Aqui são carregados:
- imagens
- sons
- sprites
- mapas
O Phaser possui um sistema de carregamento que garante que todos os assets estejam prontos antes do jogo continuar.
🏗️ create()
Executado depois que todos os assets foram carregados.
Aqui criamos:
- personagens
- inimigos
- cenários
- textos
- animações
- física
É o momento onde o jogo realmente nasce.
🔁 update()
Executado continuamente durante o jogo.
Ele faz parte do game loop.
Essa função é chamada várias vezes por segundo.
Aqui são atualizados:
- movimento dos personagens
- colisões
- lógica do jogo
- interações
🔄 Game Loop – Funcionamento interno
O loop principal do jogo funciona aproximadamente assim:
1 Capturar entrada do jogador
2 Atualizar lógica do jogo
3 Atualizar física
4 Atualizar animações
5 Renderizar tela
Esse ciclo acontece continuamente.
Normalmente:
60 FPS
Ou seja:
60 atualizações por segundo.
Isso cria a sensação de movimento fluido.
🧠 Como tudo se conecta
Podemos visualizar o fluxo geral assim:
Game
↓
Scene Manager
↓
Scene
↓
Systems
↓
Game Objects
↓
Renderer
Cada nível possui sua responsabilidade.
Essa arquitetura modular torna o Phaser:
- organizado
- eficiente
- escalável
🚀 Vantagens dessa Arquitetura
A arquitetura do Phaser permite:
✔ separar lógica do jogo
✔ dividir o jogo em partes menores
✔ controlar estados facilmente
✔ adicionar ou remover funcionalidades
✔ criar jogos complexos sem caos no código
🧠 Conceitos Fundamentais Fixados
Após entender a arquitetura do Phaser, o aluno compreende:
- como o jogo é inicializado
- como cenas funcionam
- como sistemas internos operam
- como o loop do jogo atualiza tudo
- como objetos são renderizados
Esses conceitos são a base mental para programar qualquer jogo em Phaser.
🎓 Conclusão
O Phaser não é apenas uma biblioteca de comandos.
Ele é um motor de jogos estruturado, onde cada parte possui uma função clara.
Os pilares da arquitetura são:
Game
controla o jogo inteiro
Scenes
organizam as partes do jogo
Systems
fornecem funcionalidades
Lifecycle
define quando cada etapa acontece
Quando um desenvolvedor entende essa arquitetura, ele deixa de apenas copiar código e passa a pensar como um desenvolvedor de jogos.
