Recursos - Aula relâmpago Godot
Nesse post está os recursos que uso nas aulas presenciais rápidas de Godot 4 =)
Resumos
Nodos
Nodos são blocos atômicos de comportamento. Você monta o seu jogo combinando diversos nodos.
A Godot já tem por padrão diversos tipos de nodos, por exemplo:
O Sprite2D é um nodo que apenas apresenta na tela uma imagem (comumente chamado de sprite em desenvolvimento de jogos)
O Button é um nodo que cria um botão na tela. Ele pode ter seu visual customizado para ficar de acordo com o design do jogo.
O CharacterBody2D é um nodo que se comporta como um corpo físico que pode ser controlado por um script. Comumente usado como o personagem principal de um jogo, que pode se movimentar, pular e colidir com outros objetos.
A Label é um simples texto. Podemos alterar a fonte, o tamanho, a cor etc. Comumente usado para fazer a interface do jogo em menus e HUDs.
Cenas
Na Godot, cenas são conjuntos de nodos reutilizáveis. Um personagem de um jogo, por exemplo, é uma cena que junta 3 diferentes nodos: Um CharacterBody2D, um Sprite2D, e um CollisionShape2D.
Cada cena fica em um arquivo separado com extensão .tscn. Ainda, cada tela ou fase do jogo também uma cena.
Uma cena pode ser usada dentro de outra cena, a fim de reutilizar objetos comuns. Por exemplo, vamos pensar em um jogo que contenha um menu e duas fases. As cenas possivelmente serão:
- Menu.tscn - Essa cena contém a tela do menu, com o nome do jogo e os botões. Quando o jogador aperta "Jogar", o jogo troca a tela para a cena Fase1.tscn.
- Personagem.tscn - Essa cena contém apenas o personagem do jogo, com sua imagem e comportamento que o permite se mover.
- Fase1.tscn - Essa cena contém a fase um do jogo. Dentro dela, está também a cena Personagem.tscn, pois o personagem deve estar dentro da fase. Quando o jogador chega ao final da fase, a tela troca para a Fase2.tscn.
- Fase2.tscn - Essa cena contém a fase dois do jogo. Dentro dela, está também a cena Personagem.tscn, pois o personagem deve estar dentro da fase.
Sinais
Sinais são formas de notificar ações dentro do seu jogo. Cada nodo pode emitir sinais para informar que algo ocorreu com ele. Por exemplo:
- Um nodo do tipo Button emite um sinal pressed quando ele é pressionado
- Um nodo do tipo Timer emite um sinal timeout quando o tempo dele esgota
- Um nodo do tipo RigidBody2D emite um sinal body_entered quando ele colide com outro objeto
Podemos conectar esse sinal em uma função para que ela seja chamada toda vez que ele é emitido. Dessa forma podemos, por exemplo, diminuir a vida de um personagem toda vez que ele colide com um inimigo.
Recursos
- Itch.io - Game jams e assets
- Kenney.nl - Assets
- Estúdio Recursivo no YouTube