Instâncias (continuação)

Recapitulação

Instâncias tem muitos usos interessantes. Olhando de relance, com instâncias você tem:

  • A habilidade de subdividir cenas e torná-las mais fáceis de gerenciar.
  • Uma ferramenta para gerenciar e editar várias instâncias do nó de uma só vez.
  • Uma maneira de organizar e embutir fluxos complexos de jogo e mesmo interfaces com usuário (no Godot, elementos de interface também são nós).

Linguagem de concepção

Mas o maior ponto forte que vem das instâncias de cenas é que isso funciona como uma excelente linguagem para design. Isso é o que mais distingue Godot de todas as outras engines por aí. A Godot foi projetada pensando neste conceito.

Ao fazer jogos com o Godot, a abordagem recomendada é dispensar os padrões de concepção mais comuns, como MVC e diagramas de Entidade-Relacionamento, e, em vez disso, pensar nas suas cenas de uma forma mais natural. Comece imaginando os elementos visíveis do seu jogo, aqueles que conseguem ser citados não só pelo programador, mas por qualquer um.

Por exemplo, aqui está como um jogo simples de tiro poderia ser imaginado:

../../_images/shooter_instancing.png

É possível chegar a um diagrama desse tipo para quase qualquer tipo de jogo. Anote as partes do jogo que consegue visualizar e daí adicione setas que representam a posse de um componente por outro.

Com um diagrama desse tipo, o processo recomendado para fazer um jogo é criar uma cena para cada elemento listado no diagrama. Você usará instâncias (seja por código ou diretamente pelo editor) para as relações de posse.

Muito do tempo gasto em programação de jogos (ou de softwares em geral) é projetando uma arquitetura e fazendo os componentes do jogo se encaixar nela. Projeto baseado em cenas substitui essa abordagem e torna o desenvolvimento muito mais rápido e mais direto, lhe permitindo se concentrar na lógica do jogo em si. Pelo fato de a maioria dos componentes do jogo serem mapeados diretamente a uma cena, usar projeto baseado em instâncias de cena significa que se faz necessário pouco código extra para arquitetura.

Vamos dar uma olhada em mais um exemplo, um tanto mais complexo, de um jogo do tipo mundo aberto, com muitos ativos e elementos aninhados:

../../_images/openworld_instancing.png

Dê uma olhada no elemento “aposento”. Digamos que começamos por lá. Nós poderíamos fazer algumas outras cenas de aposentos diferentes, com diferentes disposições dos móveis (que também são cenas) neles. Depois, poderíamos fazer uma cena de casa, conectando aposentos para compor seu interior.

Então, poderíamos fazer a cena de uma cidadela, que é composta por muitas instâncias de casas. Assim, poderíamos começar a trabalhar no terreno do mapa do mundo, adicionando a cidadela nele.

Posteriormente, poderíamos criar cenas que representem guardas (e outros personagens não jogáveis) e adicioná-los na cidadela também. Como resultado, eles seriam indiretamente adicionados no mundo do jogo.

Como Godot, é fácil fazer esse tipo de iteração no seu jogo, já que tudo que você precisa fazer é criar mais cenas e suas instâncias. Além disso, a interface do editor é projetada para ser amigável para programadores e não-programadores. Um processo típico de desenvolvimento em equipe pode envolver artistas 2D e 3D, projetistas de níveis, projetistas de jogo e animadores, todos trabalhando com a interface do editor.

Sobrecarga de informações!

Esta página fez chover muitas informações de alto nível de uma vez na sua cabeça. Entretanto, a parte importante deste tutorial era conscientizar como as cenas e suas instâncias são usadas em projetos reais.

Tudo discutido aqui se tornará natural assim que você começar a fazer jogos e colocar esses conceitos em prática. Por ora, não se preocupe demais com isso e simplesmente prossiga para o próximo tutorial!