Criação de Jogos com Godot [Artigo] - página 2
Este artigo visa apresentar a Godot Engine como um motor de jogos multiplataforma, extremamente poderoso. Mostrarei como um usuário Linux típico, pode ter a Godot funcionando em sincronia com sua máquina. Vou apresentar a interface da Godot e explico de forma breve dois conceitos básicos e, por fim, apresento algumas de suas funcionalidades como também, indico onde aprender mais.
[ Hits: 3.800 ]
Por: Thiago Silva em 07/08/2019
Cena / Nó / Funcionalidades
Paradigma é uma palavra forte, mas tem um significado um tanto simples. Em palavras entendíveis, um paradigma nada mais é do que um conjunto de formas que fazem as coisas funcionar em uma dada teoria ou sistema, no nosso caso. Em programação, você vai encontrar muitos desses paradigmas. Aqui, vamos nos concentrar nas formas práticas de fazer as coisas funcionarem em Godot. São coisas que se você já começar sabendo, você vai cometer menos erros.
Você pode pensar que uma cena é uma fase do jogo. E em geral é, mas não apenas. Como eu acho que é óbvio que a cena deve ser usada para criar fases, vou pular para a próxima funcionalidade.
Na Godot é possível criar uma cena e inserir um objeto (nó) e editá-lo. Digamos que você adicione diversos nós filhos (você vai entender isso melhor a seguir), edite vários de seus atributos e crie um script para ele.
Agora, imagine que deve haver vários desses objetos na cena. Olha, você até pode sair copiando tudo, mas isso demanda tempo, gasto desnecessário de memória e, principalmente, se você errar algo naquela primeira cópia, todos os outros objetos sairão com defeito.
No entanto, se você salvar essa cena contendo o objeto (e toda a sua descendência), você pode utilizá-lo em outra cena quantas vezes quiser através do campo "Recursos". O interessante é que são clones, não cópias. Isso quer dizer que alterando o objeto inicial, lá naquela cena isolada, todos os seus clones também serão alterados. Ou seja, é como se houvesse UM objeto na cena isolada, e nas outras cenas você apenas 'instanceasse' esse um. Isso é muito útil ao criar aqueles NPC's chatos, moedas ou coisas do tipo, que ficam sempre se repetindo.
Você vai ver Nó em alguns lugares e Node em outros, saiba que a Godot está falando da mesma coisa. Um nó é como se fosse o que o nome sugere: uma amarração de várias coisas. Um nó pode ligar dois objetos, como pode ligar vários, cada um com os seus próprios nós. Aliás, todos os objetos que podem ser adicionados são encarados como nós.
Imagine que vamos criar um jogo em duas dimensões. Somos pessoas simples, então vamos criar coisas simples. Basicamente, uma bolinha deve cair no chão, é isso. Primeiro, criamos o nosso mundo bidimensional, que é só um Nó-Pai-de-Todos. Tudo que você criar nesse mundo de duas dimensões deve estar amarrado a esse nó (você vai encontrá-lo com o nome Node2D).
Feito isso, criamos dois corpos físicos: um para a bolinha (RigidBody) e um para o chão (StaticBody). Mas eles precisam de uma imagem para ser desenhada, então adicionamos uma a cada (sprites). Feito isso, precisamos avisar ao motor de física que eles devem poder colidir. Para isso, é preciso adicionar um ShapeCollider a cada, com os seus respectivos formatos.
Tudo pronto! Nossa estrutura de nós deve ter a seguinte aparência:
É como se o Node2D fosse o pai dos corpos físicos e eles tivessem os seus próprios filhos. Cada um enlaçado em seus próprios níveis. Isso deixa tudo não só organizado, como também faz todo o sistema ser coerente. O que isso significa? Na prática, os objetos vão seguir uma hierarquia bem estabelecida e você vai ter menos margem para errar nos atributos, por exemplo.
Em algum lugar você precisa dizer como as coisas vão acontecer em seu projeto. É aqui que começa a diversão. Cada script DEVE estar atrelado a um nó. Por exemplo, se você criar um script em cima de um RigidBody, você vai ver que no cabeçalho do script ele vai sinalizar isso. Simplesmente porque o script vai herdar funcionalidades exclusivas desse tipo de nó para manipulá-lo.
Existem três formas de se programar na Godot, vou começar da menos indicada para a mais indicada:
Visual Script (VS) :: é basicamente um drag and drop. Ou seja, clicar e arrastar. Por quê eu coloquei o VS como o menos indicado? Porque é uma funcionalidade bebê, digamos assim. Ainda está a pleno desenvolvimento e você não vai ter todo o potencial da Godot com essa forma de programação. Talvez daqui a alguns releases ela seja a mais indicada para começar, mas ainda precisa amadurecer um pouco até lá.
C++ / C# :: se você é programador em C++ ou C#, fique feliz em saber que é perfeitamente possível programar nessas linguagens com a Godot. Se você quer usar C# precisa baixar a versão Mono quando for efetuar o download da Godot. Já C++ está disponível na versão "comum", que é a Standard.
GDScript :: o GDScript é a linguagem oficial da Godot, então, acredito que não preciso dizer que é a que melhor se integra com a plataforma em si. Além disso, GDScript é, de longe, muito mais fácil de se aprender do que C++ e C# (que já não são muito difíceis, vamos lá). Se você já teve algum contato com Python ou Lua vai se sentir em casa, especialmente Python. A sintaxe é praticamente igual, diferindo em detalhes. É uma linguagem dinâmica e conta com listas (arrays) e dicionários (arrays associativos).
Se você quer criar jogos para Android, iOS, Linux, MasOS X, WEB (HTML5) ou Windows, não precisa se preocupar em criar um projeto para cada plataforma e aprender diversas linguagens de programação. Com a Godot, o mesmo projeto pode ser compilado para funcionar em qualquer uma dessas plataformas através da opção Exportar.
Naturalmente, não faz sentido um evento de clique do mouse para um Android, por exemplo, então cabe ao programador manter a consistência do seu projeto, observando a plataforma. No entanto, as mudanças não deverão passar de detalhes.
Se você chegou até aqui, deve ter se interessado pela plataforma. Nesse caso, fique à vontade para começar com um passo a passo bem detalhado e melhor explicado na própria documentação oficial: