Filosofia de Design do Godot

Agora que você está com as mãos molhadas, vamos falar sobre o design de Godot.

Cada motor de jogo é diferente e atende a diferentes necessidades. Não apenas oferecem uma gama de recursos, mas o design de cada mecanismo é único. Isso leva a diferentes fluxos de trabalho e diferentes maneiras de formar as estruturas dos seus jogos. Tudo isso decorre de suas respectivas filosofias de design.

Esta página está aqui para ajudá-lo a entender como funciona o Godot, começando com alguns de seus principais pilares. Não é uma lista de recursos disponíveis, nem é uma comparação de mecanismo. Para saber se algum mecanismo pode se encaixar ao seu projeto, você precisa experimentá-lo por si mesmo e entender seu design e limitações.

Por favor, observe Discover Godot 3, Free game engine se você estiver procurando por uma visão geral dos recursos do mecanismo.

Design e composição orientada a objetos

Godot adota o design orientado a objetos em seu núcleo, com seu sistema de cena flexível e hierarquia de Nós. Ele tenta ficar longe de padrões estritos de programação para oferecer uma maneira intuitiva de estruturar seu jogo.

Por um lado, Godot permite compor ou agregar cenas. É como prefabs aninhados: você pode criar uma cena BlinkingLight e uma cena BrokenLantern que usa o BlinkingLight. Em seguida, crie uma cidade repleta de BrokenLanterns. Mude a cor do BlinkingLight, salve e todos os BrokenLanterns na cidade serão atualizados instantaneamente.

Além disso, você pode herdar de qualquer cena.

Uma cena Godot poderia ser uma arma, um personagem, um item, uma porta, um nível, parte de um nível… qualquer coisa que você quiser. Funciona como uma classe em código puro, com a exceção de que você é livre para projetá-la usando o editor, usando apenas o código ou misturando e combinando os dois.

É diferente das prefabs que você encontra em vários mecanismos 3D, pois pode herdar e estender essas cenas. Você pode criar um Mago que estenda seu Personagem. Modifique o Personagem no editor e o Mago também atualizará. Isso te ajuda a criar seus projetos de modo que sua estrutura corresponda ao design do jogo.

image0

Observe também que o Godot oferece muitos tipos diferentes de objetos chamados nós, cada um com um propósito específico. Os nós são parte de uma árvore e sempre herdam de seus pais até a classe Node. Embora o mecanismo tenha componentes como formas de colisão, eles são a exceção, não a regra.

image1

Sprite é um Node2D, um CanvasItem e um Node. Ele tem todas as propriedades e recursos de suas três classes principais, como transformações ou a capacidade de desenhar formas personalizadas e renderizar com um sombreador personalizado.

Pacote com tudo incluído

O Godot tenta fornecer suas próprias ferramentas para responder às necessidades mais comuns. Tem um editor de script dedicado, um editor de animação, um editor de tilemaps, um editor de shaders, um depurador, um profiler, a capacidade de hot-reload local e em dispositivos remotos, etc.

image2

O objetivo é oferecer um pacote completo para criar jogos e uma experiência de usuário contínua. Você ainda pode trabalhar com programas externos desde que exista um plugin de importação para ele. Ou você pode criar um, como o Tiled Map Importer.

Isso também é em parte porque o Godot oferece suas próprias linguagens de programação GDscript e VisualScript, junto com C #. Elas são projetadas para as necessidades de desenvolvedores de jogos e designers de jogos, e estão totalmente integradas à engine e ao editor.

O GDscript permite que você escreva um código simples usando uma sintaxe parecida com o Python, porém ele detecta tipos e oferece a característica de preenchimento automático de uma linguagem estática. Também é otimizado para código de jogo com tipos embutidos como Vetores e Cores.

Observe que com o GDNative, você pode escrever código de alto desempenho usando linguagens compiladas como C, C++, Rust ou Python (usando o compilador Cython) sem recompilar a engine.

image3

VisualScript é uma linguagem de programação baseada em nós que se integra bem ao editor. Você pode arrastar e soltar nós ou recursos no gráfico para criar novos blocos de código.

Observe que o espaço de trabalho 3D não possui tantas ferramentas quanto o espaço de trabalho 2D. Você precisará de programas externos ou complementos para editar terrenos, animar caracteres complexos e assim por diante. A Godot fornece uma API completa para estender a funcionalidade do editor usando o código do jogo. Veja O editor Godot é um jogo Godot abaixo.

image4

Um plugin de editor de Máquina de Estados em Godot 2 por kubecz3k. Ele permite gerenciar estados e transições visualmente

Código aberto

O Godot oferece uma base de código totalmente aberto sob a licença MIT. Isso significa que todas as tecnologias que acompanham o produto têm que ser Livres (como em liberdade) também. Na maior parte, eles são codificados do zero pelos colaboradores.

Anyone can plug in proprietary tools for the needs of their projects — they just won’t ship with the engine. This may include Google AdMob, or FMOD. Any of these can come as third-party plugins instead.

Por outro lado, uma base de código aberta significa que você pode aprender e estender a engine como desejar. Você também pode depurar jogos facilmente, pois o Godot irá mostrar erros com um rastreamento de pilha, mesmo se eles vierem da própria engine.

Nota

Isso não afeta o trabalho que você faz com a Godot de maneira alguma: não há strings anexadas à engine ou qualquer coisa que você faça com ela.

Orientada pela comunidade

O Godot é feito por sua comunidade, para a comunidade e para todos os criadores de jogos. São as necessidades dos usuários e as discussões abertas que geram as principais atualizações. Novas funcionalidades dos principais desenvolvedores geralmente focam no que beneficiará a maioria dos usuários em primeiro lugar.

Dito isso, embora um punhado de desenvolvedores principais trabalhe em tempo integral, o projeto tem mais de 500 colaboradores no momento desta redação. Programadores benevolentes trabalham em recursos que necessitam, por isso você verá melhorias em todos os cantos da engine ao mesmo tempo em todas as principais versões.

O editor Godot é um jogo Godot

O editor Godot é executado na engine de jogo. Ele usa o próprio sistema de interface do usuário da engine, pode recarregar códigos e cenas ao testar seus projetos ou executar códigos de jogos no editor. Isso significa que você pode usar o mesmo código e cenas para seus jogos ou construir plug-ins e estender o editor.

Isso leva a um sistema de interface de usuário (UI) confiável e flexível, pois aciona o próprio editor. Com a palavra-chave tool, você pode executar qualquer código de jogo no editor.

image5

RPG in a Box é um editor de RPG voxel feito no Godot 2. Ele usa as ferramentas de Interface com Usuário do Godot para seu sistema de programação baseada em nós e para o resto da interface.

Coloque a palavra-chave tool na parte superior de qualquer arquivo GDscript e ela será executada no editor. Isso permite importar e exportar plug-ins, criar plug-ins como editores de nível personalizados ou criar scripts com os mesmos nós e API que você usa em seus projetos.

Engine 2D e 3D separados

O Godot oferece mecanismos dedicados de renderização 2D e 3D. Como resultado, a unidade base para cenas 2D é pixels. Mesmo que os mecanismos sejam separados, você pode renderizar 2D em 3D, 3D em 2D e sobrepor sprites 2D e fazer a interface em seu mundo 3D.