Tutoriais
Este roteiro constrói, do zero e sem pular etapas, um jogo de plataforma completo: personagem animado que anda e pula com física de verdade, cenário desenhado em arquivo de texto, câmera que acompanha, fundo com profundidade, moedas colecionáveis, inimigo com inteligência, efeitos de impacto, interface e telas de menu e fim de jogo.
Ao terminar, você terá usado a maior parte da engine — e entendido o papel de cada peça. Reserve entre 60 e 90 minutos.
Digite o código, não copie. Rode a cada passo. Quando algo não funcionar, compare a sua tela com a ilustração do passo: quase sempre a diferença aponta direto para a linha errada.
Antes de começar
Você precisa da engine instalada e de uma janela abrindo. Se ainda não chegou lá, passe primeiro pela página de download e instalação — são dois comandos e uma pasta.
A estrutura do projeto deste tutorial:
O gerar_assets.py desenha sozinho todas as imagens necessárias — herói,
tiles, moeda, zumbi e as camadas de fundo. Rode uma única vez e esqueça que existe:
assim você não precisa saber desenhar para seguir o tutorial.
Os passos
| Passo | O que você constrói | Peças da engine |
|---|---|---|
| 0 | A pasta e os desenhos — gera a arte e o arquivo do mapa fase1.txt |
— |
| 1 | A janela: 640×360 lógicos, azul-noite, fecha no X e alterna tela cheia no F11 | Window |
| 2 | O herói aparece e anda com as setas — mas ainda flutua | Sprite |
| 3 | Gravidade, chão e pulo. Ele cai, colide, anda com inércia e pula com coyote time | Physics |
| 4 | O cenário vem do arquivo de texto — mude o .txt e o mundo muda |
TileMap |
| 5 | A câmera acompanha o herói com suavização e para nas bordas do mapa | Camera |
| 6 | Profundidade com parallax: três camadas em velocidades diferentes | ParallaxSystem |
| 7 | Moedas: sua primeira classe própria, herdando de Sprite |
ObjectGroup |
| 8 | Suco: partículas, tremor de tela e som ao coletar | ParticleEmitter · ScreenEffects |
| 9 | Um inimigo que enxerga o jogador e reage | Navegação · A* |
| 10 | Interface: vidas, pontuação e HUD | módulo ui |
| 11 | Menu e fim de jogo como cenas separadas | Scene · SceneManager |
Passo 1 — a janela
A resolução lógica 640×360 é 16:9 e escala para 1080p em múltiplo exato
de 3, o que mantém a arte nítida. O pixel_art=True garante o escalonamento
por vizinho mais próximo — sem borrar os pixels.
Passo 2 — o herói aparece e anda
O move_key_x() move, mas quem troca os quadros da animação é o
update(). Neste passo ainda não o chamamos — no passo seguinte o
update_physics() passa a fazer isso por nós.
Passo 3 — gravidade, chão e pulo
Aqui o movimento manual dá lugar a um corpo cinemático. A partir deste ponto o herói cai, colide, anda com inércia e pula com coyote time — e você não escreve nada disso.
Segure o espaço por mais tempo: o pulo fica mais alto (pulo variável). Corra até a borda e pule depois de já ter saído dela: ainda funciona, graças aos 150 ms de coyote time. São detalhes que ninguém percebe — e que fazem o controle parecer bom.
Passo 4 — o cenário vem do arquivo de texto
O chão improvisado sai de cena. Agora o mundo inteiro vem do fase1.txt,
onde cada caractere é um bloco de 32 pixels.
Se ele atravessa tudo, o dicionário provavelmente não tem a chave 'solido',
ou ela lista caracteres que não aparecem no arquivo. Confira imprimindo
print(len(mapa.get_solidos())): se der zero, é isso.
Passo 5 — a câmera acompanha
O 0.1 é a suavização: a câmera persegue o alvo em vez de grudar nele.
Troque por 1.0 e sinta a diferença — fica seco e embrulha o estômago.
Passo 6 — profundidade com parallax
Três camadas em velocidades diferentes: o céu não se move, as montanhas quase não se movem, as árvores acompanham. O olho lê isso como distância.
Passo 7 — moedas: sua primeira classe
Aqui você deixa de usar a engine e passa a estendê-la. A moeda é uma
classe sua, que herda de Sprite e acrescenta regra própria.
Você poderia guardar as moedas numa lista de Sprite. Mas com uma classe,
cada moeda carrega o seu valor — e amanhã, quando existir moeda de ouro valendo
50, basta mudar um atributo. Estado e comportamento juntos: é isso que orientação a
objetos compra.
Passo 8 — suco: partículas, tremor e som
Coletar uma moeda precisa sentir bem. Três linhas resolvem.
São três chamadas independentes e todas obrigatórias:
ScreenEffects.update() no começo do laço,
apply_to_camera() depois do camera.follow(), e
draw_flash() no fim dos desenhos. Faltando a primeira, o tremor nunca
termina; faltando a segunda, ele não aparece.
Passos 9 a 11 — inimigo, interface e cenas
Os três últimos passos fecham o jogo: um inimigo que enxerga o jogador e persegue usando
o algoritmo A*; a interface com vidas e pontuação pelo módulo
ui, que tem tema e layout automático; e as telas de menu e fim de jogo como
Scene independentes, trocadas pelo SceneManager.
O código completo dos onze passos, com as ilustrações de cada etapa, está no manual da Power PPlay 2.1, capítulo 3.
Referência dos módulos
O tutorial acima ensina montando um jogo. Estas páginas explicam cada peça da engine isoladamente — use como consulta enquanto constrói.
🚀 Primeiros Passos
🎮 Atores e Controles
⚛️ Física e Colisão
🌍 Construindo Mundos
✨ Game Juice e IA
🛠️ Ferramentas Sênior
Para onde ir agora
- Leia a documentação dos módulos para conhecer cada peça em detalhe.
- Veja o que outras turmas fizeram na biblioteca de jogos.
- Terminou o seu? Envie para a galeria.