Filosofia de Design do Godot

Now that you've gotten your feet wet, let's talk about Godot's design.

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.

Please watch Godot explained in 5 minutes if you're looking for an overview of the engine's features.

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 do Godot poderia ser uma Arma, um Personagem, um Item, uma Porta, uma Fase, parte de uma fase... 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 motores 3D, pois você 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

Also note that Godot offers many different types of objects called nodes, each with a specific purpose. Nodes are part of a tree and always inherit from their parents up to the Node class. Although the engine does feature some nodes like collision shapes that a parent physics body will use, most nodes work independently from one another.

In other words, Godot's nodes do not work like components in some other game engines.

image1

Sprite is a Node2D, a CanvasItem and a Node. It has all the properties and features of its three parent classes, like transforms or the ability to draw custom shapes and render with a custom shader.

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.

That is also partly why Godot offers its own programming languages GDScript and VisualScript, along with C#. They're designed for the needs of game developers and game designers, and they're tightly integrated in the engine and the editor.

GDScript lets you write code using an indentation-based syntax, yet it detects types and offers a static language's quality of auto-completion. It is also optimized for gameplay code with built-in types like Vectors and Colors.

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. O Godot fornece uma API completa para estender a funcionalidade do editor usando o código do jogo. Veja O editor do Godot é um jogo do 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, elas são codificadas do zero pelos colaboradores.

Qualquer um pode conectar ferramentas proprietárias em seus projetos - elas só não vêm junto com o motor do Godot. Isso pode incluir NViDia PhysX, o Google Admob ou um importador de arquivos FBX. Qualquer um destes pode vir como plugins de terceiros.

Por outro lado, uma base de código aberta significa que você pode aprender e estender a engine como desejar. Você também consegue 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 o 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 600 colaboradores no momento dessa 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 do Godot é um jogo do Godot

O editor do 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.

Nota

The editor is fully written in C++ and is statically compiled into the binary. This means you can't import it as a typical project that would have a project.godot file.

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.