Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

Filosofia de Design do Godot

Agora que você já deu uma mergulhada no assunto, vamos falar no design do Godot.

Cada game engine é diferente e atende a diferentes necessidades. Além de oferecer uma variedade de recursos, o design de cada engine é único. Isso leva a diferentes fluxos de trabalho e diferentes formas de formar as estruturas de 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 fundamentos. Não é uma lista de funcionalidades disponíveis, nem uma comparação entre game engines. Para saber se alguma game engine é uma boa escolha para seu projeto, você mesmo precisa testá-las e entender seu design e limitações.

Por favor assista Godot explicado em 5 minutos se você estiver procurando por uma visão geral das funcionalidades da game engine.

Design orientado a objetos e composição

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 pode 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, exceto que você é livre para projetá-la usando o editor, usando apenas o código ou misturando e combinando os dois.

É diferente dos prefabs encontrados em vários engines 3D, pois você pode herdar e estender essas cenas. Você pode criar um Mago que amplie seu Personagem. Modifique o Personagem no editor e o Mago também será atualizado. Isso ajuda você a construir seus projetos para que sua estrutura corresponda ao design do jogo.

imagem0

Observe também que Godot oferece muitos tipos diferentes de objetos chamados nós, cada um com uma finalidade específica. Os nós fazem parte de uma árvore e sempre herdam de seus pais até a classe Node. Embora o mecanismo apresente alguns nós como formas de colisão que um corpo físico pai usará, a maioria dos nós funciona independentemente um do outro.

Em outras palavras, os nós do Godot não funcionam como componentes de algumas outras game engines.

imagem1

Sprite2D 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

Godot tenta fornecer suas próprias ferramentas para atender às necessidades mais comuns. Possui um editor de script dedicado, um editor de animação, um editor de tilemap, um editor de shader, um depurador, um criador de perfil, a capacidade de rodar localmente e em dispositivos remotos, etc.

imagem2

The goal is to offer a full package to create games and a continuous user experience. You can still work with external programs as long as there is an import plugin available in Godot for it. Or you can create one, like the Tiled Map Importer.

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

O GDScript permite que você escreva código usando uma sintaxe baseada em recuo, mas detecta tipos e oferece a qualidade de preenchimento automático de uma linguagem estática. Também é otimizado para código de jogo com tipos integrados como Vetores e Cores.

Note that with GDExtension, you can write high-performance code using compiled languages like C, C++, Rust, D, Haxe, or Swift without recompiling the engine.

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. Confira O editor do Godot é um jogo do Godot.

imagem4

Um plug-in do editor State Machine no Godot 2 por kubecz3k. Ele permite que você gerencie 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 nele em tempo integral, o projeto tem mais de 600 colaboradores no momento desta redação. Os programadores benevolentes trabalham em recursos de que eles próprios precisam, portanto, você verá melhorias em diversos recursos da engine ao mesmo tempo e em todas as versões principais.

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.

This leads to a reliable and flexible UI system, as it powers the editor itself. With the @tool annotation, you can run any game code in the editor.

imagem5

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.

Put the @tool annotation at the top of any GDScript file and it will run in the editor. This lets you import and export plugins, create plugins like custom level editors, or create scripts with the same nodes and API you use in your projects.

Nota

O editor é inteiramente escrito em C++ e é compilado estaticamente num binário. Isso significa que você não consegue importa-lo como um objeto qualquer que teria um arquivo project.godot.

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.