Scripting languages

Esta lição lhe dará uma visão geral das linguagens de scripting disponíveis no Godot. VocÊ vai aprender os prós e os contras de cada opção. Na parte seguinte, você irá escrever o seu primeiro script utilizando GDScript.

Os scripts anexam-se a um nó e estendem o seu comportamento. Isto significa que os scripts herdam todas as funções e propriedades do nó a que se anexam.

For example, take a game where a Camera2D node follows a ship. The Camera2D node follows its parent by default. Imagine you want the camera to shake when the player takes damage. As this feature is not built into Godot, you would attach a script to the Camera2D node and code the shake.

../../_images/scripting_camera_shake.gif

Available scripting languages

Godot offers five gameplay programming languages: GDScript, C#, VisualScript, and, via its GDNative technology, C and C++. There are more community-supported languages, but these are the official ones.

Você pode usar múltiplas linguagens de programação em um único projeto. Por exemplo, em um time, você pode usar o código de lógica de jogo em GDScript já que é rápido de escrever, deixe que os level designers programem as missões na linguagem visual VisualScript, e use C# ou C++ para implementar algoritmos complexos e maximizar a performance. Ou você pode até escrever tudo em GDScript ou C#. A decisão é sua.

Nós oferecemos esta flexibilidade para atender as necessidades de diferentes projetos de jogos e desenvolvedores.

Aviso

`Godot 4.0 vai remover o VisualScript de toda sua base. <https://godotengine.org/article/godot-4-will-discontinue-visual-scripting>`__Como resultado, criar novos projetos utilizando visual script no Godot não é recomendado. Futuras versões do Godot 4.x podem ter o VisualScript reimplementado como uma extensão.

Apesar do Godot 3.x manter o suporte ao VisualScript, é recomentado ao experimentar GDScript especialmente se você pretende migrar seu projeto para o Godot 4.

Which language should I use?

Se você é um iniciante, nós recomendamos começar com GDScript. Nós fizemos esta linguagem especificamente para o Godot e para as necessidades de desenvolvedores de jogos. Tem uma sintaxe simples e direta, e fornece a melhor integração com Godot.

../../_images/scripting_gdscript.png

Para C#, você irá precisar de um editor de código externo como VSCode ou Visual Studio. Apesar do suporte para C# estar consolidado, você vai achar menos recursos de aprendizado para C# comparado a GDScript. É por isso que recomendamos C# principalmente para usuários que já tem experiência com a linguagem.

Vamos dar uma olhada nos recursos de cada linguagem, assim como seus prós e contras.

GDScript

GDScript é uma linguagem de programação orientada a objetos e imperativa feita para a Godot. É feita por e para desenvolvedores de jogos para economizar seu tempo programando jogos. Seus recursos incluem:

  • Uma sintaxe simples que resulta a arquivos pequenos.

  • Tempos de compilação e carregamento extremamente rápidos.

  • Tight editor integration, with code completion for nodes, signals, and more information from the scene it's attached to.

  • Built-in vector and transform types, making it efficient for heavy use of linear algebra, a must for games.

  • Supports multiple threads as efficiently as statically typed languages.

  • Não há coletor de lixo, já que esse recurso eventualmente atrapalha o processo de criação de jogos. A engine conta as referências e gerencia a memória pra você na maioria dos casos por padrão, mas você também pode controlar a memória caso necessário.

  • Tipagem gradual (Gradual Typing). As variáveis tem tipos dinâmicos por padrão, mas você também pode usar dicas de tipo para fortes verificações do tipo da variável.

GDScript se parece com o Python ao passo que você estrutura seus blocos de código usando identações, mas não funciona da mesma maneira na prática. Ela é inspirada em várias linguagens, incluindo Squirrel, Lua e Python.

Nota

Por quê não usamos Python ou Lua diretamente?

Anos atrás, Godot usava Python, depois Lua. A integração de ambas as linguagens deu muito trabalho e tinha limitações severas. Por exemplo, suporte a threading era um grande desafio com Python.

Desenvolver uma linguagem dedicada não nos dá mais trabalho e podemos adaptá-la às necessidades dos desenvolvedores de jogos. Agora estamos trabalhando em otimizações de desempenho e recursos que seriam difíceis de oferecer com linguagens de terceiros.

.NET / C#

As Microsoft's C# is a favorite amongst game developers, we officially support it. C# is a mature and flexible language with tons of libraries written for it. We could add support for it thanks to a generous donation from Microsoft.

../../_images/scripting_csharp.png

C# offers a good tradeoff between performance and ease of use, although you should be aware of its garbage collector.

Nota

Você deve usar a edição Mono do editor Godot para poder programar em C#. Você pode fazer download na página de download no website do Godot.

Since Godot uses the Mono .NET runtime, in theory, you can use any third-party .NET library or framework in Godot, as well as any Common Language Infrastructure-compliant programming language, such as F#, Boo, or ClojureCLR. However, C# is the only officially supported .NET option.

Nota

Um código em GDScript não é executado tão rapidamente quanto um em C# ou C++ compilados. No entanto, a maioria dos códigos de script chama funções escritas com algoritmos rápidos em código C++ dentro da engine. Em muitos casos, escrever a lógica do jogo em GDScript, C# ou C++ não terá um impacto significativo no desempenho.

VisualScript

Aviso

`Godot 4.0 vai remover o VisualScript de toda sua base. <https://godotengine.org/article/godot-4-will-discontinue-visual-scripting>`__Como resultado, criar novos projetos utilizando visual script no Godot não é recomendado. Futuras versões do Godot 4.x podem ter o VisualScript reimplementado como uma extensão.

Apesar do Godot 3.x manter o suporte ao VisualScript, é recomentado ao experimentar GDScript especialmente se você pretende migrar seu projeto para o Godot 4.

Visual Scripting é uma linguagem de programação visual baseada em gráficos onde você conecta blocos. Pode ser uma ótima ferramenta para não-programadores, como designers de jogos e artistas.

../../_images/scripting_visualscript.png

Você pode utilizar outras linguagens para criar blocos customizados que são específicos para seu jogo, por exemplo, para programar IAs, missões, ou diálogos. É aí que reside a força do VisualScript.

Embora a linguagem forneça todos os blocos de construção básicos necessários para fazer jogos completos, nós não recomendamos o uso do VisualScript dessa maneira. Programar tudo com ele é lento em comparação ao uso de outras linguagens de programação.

Ver também

Para mais informações, veja Introdução ao VisualScript.

C e C++ via GDNative

GDNative allows you to write game code in C or C++ without needing to recompile or even restart Godot.

../../_images/scripting_cpp.png

You can use any version of the language or mix compiler brands and versions for the generated shared libraries, thanks to our use of an internal C API Bridge.

GDNative is the best choice for performance. You don't need to use it throughout an entire game, as you can write other parts in GDScript, C#, or VisualScript.

Ao trabalhar com GDNative, os tipos, funções e propriedades disponíveis se assemelham muito à API C++ real de Godot.

Resumo

Scripts são arquivos contendo código que você anexa a um nó para estender sua funcionalidade.

Godot suporta cinco linguagens de programação oficiais, oferecendo a flexibilidade entre desempenho e facilidade de uso.

Você pode misturar linguagens, por exemplo, para implementar algorítimos exigentes com C ou C++ e escrever a maior parte da lógica do jogo com GDScript ou C#.