Godot’s design philosophy

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

Every game engine is different and fits different needs. Not only do they offer a range of features, but the design of each engine is unique. This leads to different workflows and different ways to form your games’ structures. This all stems from their respective design philosophies.

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.

A Godot scene could be a Weapon, a Character, an Item, a Door, a Level, part of a level… anything you’d like. It works like a class in pure code, except you’re free to design it by using the editor, using only the code, or mixing and matching the two.

It’s different from prefabs you find in several 3D engines, as you can then inherit from and extend those scenes. You may create a Magician that extends your Character. Modify the Character in the editor and the Magician will update as well. It helps you build your projects so that their structure matches the game’s design.

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 components like collision shapes, they’re the exception, not the norm.

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.

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.

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.

Note that the 3D workspace doesn’t feature as many tools as the 2D workspace. You’ll need external programs or add-ons to edit terrains, animate complex characters, and so on. Godot provides a complete API to extend the editor’s functionality using game code. See The Godot editor is a Godot game below.

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

Godot offers a fully open source codebase under the MIT license. This means all the technologies that ship with it have to be Free (as in freedom) as well. For the most part, they’re developed from the ground up by contributors.

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.

On the other hand, an open codebase means you can learn from and extend the engine to your heart’s content. You can also debug games easily, as Godot will print errors with a stack trace, even if they come from the engine itself.

Nota

This does not affect the work you do with Godot in any way: there’s no strings attached to the engine or anything you make with it.

Orientada pela comunidade

Godot is made by its community, for the community, and for all game creators out there. It’s the needs of the users and open discussions that drive the core updates. New features from the core developers often focus on what will benefit the most users first.

That said, although a handful of core developers work on it full-time, the project has over 600 contributors at the time of writing. Benevolent programmers work on features they may need themselves, so you’ll see improvements in all corners of the engine at the same time in every major release.

O editor Godot é um jogo Godot

The Godot editor runs on the game engine. It uses the engine’s own UI system, it can hot-reload code and scenes when you test your projects, or run game code in the editor. This means you can use the same code and scenes for your games, or build plugins and extend the 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 is a voxel RPG editor made with Godot 2. It uses Godot’s UI tools for its node-based programming system and for the rest of the 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.