Work in progress

The content of this page was not yet updated for Godot 4.2 and may be outdated. If you know how to improve this page or you can confirm that it's up to date, feel free to open a pull request.

Linguagens de script

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

Os scripts são anexados a um nó e estendem seu comportamento. Isso significa que os scripts herdam todas as funções e propriedades do nó ao qual se conectam.

Por exemplo, considere um jogo em que um nó Camera2D segue um navio. O nó Camera2D segue seu pai por padrão. Imagine que você deseja que a câmera trema quando o jogador sofrer dano. Como esse recurso não está embutido no Godot, você anexaria um script ao nó Camera2D e codificaria o tremer da câmera.

../../_images/scripting_camera_shake.gif

Linguagens de script disponíveis

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

You can use multiple languages in a single project. For instance, in a team, you could code gameplay logic in GDScript as it's fast to write, and use C# or C++ to implement complex algorithms and maximize their performance. Or you can write everything in GDScript or C#. It's your call.

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

Qual linguagem eu devo usar?

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 o 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 o Godot. É feita por e para desenvolvedores de jogos para economizar seu tempo programando jogos. Seus recursos incluem:

  • Uma sintaxe simples que resulta em arquivos pequenos.

  • Compilação e tempos de carregamento extremamente rápidos.

  • A integração com o editor é agradável de trabalhar, com complementação de código para nós, sinais e muitos outros itens pertinentes à cena em edição.

  • Tipos vetoriais e de transformação incorporados, tornando-o eficiente para uso intenso de álgebra linear, essencial para jogos.

  • Suporta múltiplas threads tão eficientemente quanto linguagens de tipo estático.

  • 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 reforçar 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 were able to add support for it thanks to a generous donation from Microsoft.

../../_images/scripting_csharp.png

C# oferece uma boa compensação entre desempenho e facilidade de uso, embora você deva estar ciente de seu coletor de lixo.

Nota

You must use the .NET edition of the Godot editor to script in C#. You can download it on the Godot website's download page.

Since Godot uses .NET 6, 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.

Atenção

Projects written in C# using Godot 4 currently cannot be exported to the web platform. To use C# on that platform, consider Godot 3 instead. Android and iOS platform support is available as of Godot 4.2, but is experimental and some limitations apply.

C++ via GDExtension

GDExtension allows you to write game code in C++ without needing to recompile Godot.

../../_images/scripting_cpp.png

Você pode usar qualquer versão da linguagem ou misturar compiladores e versões de compiladores para as bibliotecas compartilhadas geradas, graças ao uso de uma ponte C API interna.

GDExtension 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 or C#.

When working with GDExtension, the available types, functions, and properties closely resemble Godot's actual C++ API.

Resumo

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

Godot supports four official scripting languages, offering you flexibility between performance and ease of use.

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