Godot Engine

A Godot Engine é uma game engine completa, open source, gratuita, multiplataforma e de fácil aprendizagem. Em 2017/1, a
GDS vai começar a utilizar ela como ferramenta principal de trabalho.

GodotEngine_banner

Por que escolhemos a Godot?

Resposta curta: Porque ela roda nos PCs do laboratório.

Mas não só por isso. Ela foi escolhida, depois de bastante reflexão, por ser gratuita, leve (roda em computadores mais antigos), multiplataforma, e principalmente por não necessitar de permissão de administrador para instalar/executar. Além disso, é bastante fácil de aprender, e está em constante desenvolvimento.

Vai ser obrigatório?

Quem não usar perde nota.
Não. Nada é obrigatório na GDS. A nossa escolha só significa que grande parte dos nossos workshops e tutoriais vão usar a Godot como referência, mas o desenvolvimento dos jogos pode ser feito com a ferramenta que quiserem. Quem estiver usando a Godot nos seus projetos tem a vantagem de poder trabalhar nos laboratórios.

Essa decisão não é definitiva e está em teste. Se o pessoal não gostar, a produtividade ficar penalizada ou qualquer problema do tipo, vamos procurar outras alternativas. Fiquem à vontade para usar o formulário de feedback anônimo.

Introdução à Engine

Sendo uma engine completa, é difícil saber por onde começar.

O que se sabe com certeza é que um dos objetivos principais da equipe de desenvolvimento da Godot é roubar usuários da Unity, então eles prepararam um guia de transição, que compara as features, a interface e a usabilidade das duas engines. Pra quem tem experiência com Unity, é um ótimo lugar pra começar.

Godot > Unity ?

Componentes vs Node System

O sistema de nodos da Godot substitui o modelo “Object-Component” utilizado na Unity.

Na Unity, cada GameObject tem um conjunto de componentes, que definem o comportamento do objeto. Cada script é um componente, e assim cada objeto pode ter vários scripts.

Na Godot, cada objeto pode ter apenas um script, mas sua funcionalidade padrão já vem implementada. Não existe o conceito de componentes, mas eles são substituídos por objetos filhos na árvore da cena, por exemplo: um objeto físico não possui colisores, mas possui um ou mais filhos do tipo collision shape que descrevem os colisores e são usados pelo motor de física da Godot.

Prefabs vs Node System

Assim como na Unity, cada cena é organizada como uma árvore de objetos. Na Godot, cada galho da árvore pode ser uma instância de uma outra cena qualquer. Ou seja, toda cena da Godot pode ser usada como um prefab da Unity, com a vantagem de que podemos usar “cenas dentro de cenas”, enquanto um prefab não pode conter outro prefab.

(Confesso que eu nunca tentei criar referências cíclicas de cenas pra ver o que acontece. Mas é só não fazer que tudo funciona direitinho :D)

Programação (Scripts)

A Godot usa uma linguagem própria, e isso foi um dos primeiros medos que eu tive. Ter que aprender uma linguagem nova só pra engine, parece um desperdício.

Eles tem boas justificativas. Apesar de só estar ganhando popularidade recentemente, a engine está em desenvolvimento faz vários anos, e ao longo desse tempo eles tentaram usar diversas linguagens, mas nenhuma refletia bem as funcionalidades da Godot.

A linguagem oficial da engine é a GDScript ( ͡° ͜ʖ ͡°), com sintaxe inspirada em Python, porém com features específicas da engine como co-rotinas, sinais, entre outras. O aprendizado da linguagem é extremamente rápido e fácil.

Na sua próxima versão (prevista para o início de 2017), a engine vai ganhar scripting visual (inspirado nos Blueprints da Unreal) e suporte opcional a C#, além de diversas melhorias, iluminação global e PBR com implementações modernas capazes de alcançar bom desempenho mesmo em computadores menos potentes.

Documentação e Tutoriais

A abordagem da Unity é mais “hands-on”: eles te dão uma série de assets prontos, prefabs já construídos, que tu segue um passo a passo e voi-là, tu tem um jogo.

Enquanto isso, a Godot te ensina a fazer coisas tipo como pausar o jogo ou como criar uma loading screen.

Em resumo, a Godot te ensina a fazer coisas pequenas, mas relevantes. Ela não faz parecer que criar um jogo do início ao fim é fácil (como a gente já sabe que não é).

A documentação da Godot é bastante completa, mas às vezes falha. No site existem muitas funções sem descrição de funcionamento. Por sorte, o nome delas e o contexto normalmente deixam o seu funcionamento evidente. Quando esse não for o caso, o jeito é perguntar para a comunidade ou olhar o código fonte.

Comunidade

Quem já encontrou algum obstáculo pra desenvolver qualquer coisa na Unity já passou pelo forum deles, e normalmente alguém já perguntou exatamente a mesma coisa que tu quer saber. A comunidade da Unity é muito grande, e é fácil achar respostas.

A comunidade da Godot vem crescendo. Por ser open source, existe um grande número de desenvolvedores que conhecem exatamente o funcionamento interno de cada feature. Ela também tem um time de desenvolvimento relativamente menor, o que torna tudo mais pessoal: é só seguir o @reduzio no Twitter pra ver como anda o desenvolvimento da nova versão da engine.

Pra dúvidas, o melhor lugar é o grupo da Godot no Facebook. A comunidade é muito ativa, e sempre tem alguém disposto a ajudar novos desenvolvedores e colaboradores.

Conclusão

Nós acreditamos que usando a Godot vamos ter menos problemas do que usando uma versão antiga da Unity nos encontros, e o desenvolvimento dos projetos poderá ser feito nos encontros, sem a necessidade de levar notebooks para a faculdade.

Espero que vocês gostem dessa e das próximas novidades que vamos trazer nesse ano.