Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

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 oferece quatro linguagens de programação para jogos: GDScript, C#, e, através da tecnologia GDExtension, C e C++. Existem mais linguagens suportadas pela comunidade, mas essas são as oficiais.

Você pode usar múltiplas linguagens em um único projeto. Por exemplo, em uma equipe, você pode programar a lógica de gameplay em GDScript por ser rápido de escrever, e usar C# ou C++ para implementar algoritmos complexos e maximizar o desempenho deles. Ou você pode escrever tudo em GDScript ou C#. A escolha é sua.

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.webp

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 partes_paralelizáveis tão eficientemente quanto linguagens de tipagem estática.

  • Sem coleta de lixo (garbage collection) por varredura, já que esse recurso eventualmente atrapalha na criação de jogos. O motor conta referências e gerencia a memória para você na maioria dos casos por padrão, mas você também pode controlar a memória se precisar.

  • 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#

Como o C# da Microsoft é um favorito entre os desenvolvedores de jogos, nós o suportamos oficialmente. O C# é uma linguagem madura e flexível com toneladas de bibliotecas escritas para ela. Conseguimos adicionar suporte a ela graças a uma generosa doação da 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

Você deve usar a edição .NET do editor do Godot para programar em C#. Você pode baixá-la na página de download do site do Godot.

Como o Godot usa o .NET 8, em teoria, você pode usar qualquer biblioteca ou framework .NET de terceiros no Godot, bem como qualquer linguagem de programação compatível com a Common Language Infrastructure, como F#, Boo ou ClojureCLR. No entanto, o C# é a única opção .NET oficialmente suportada.

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

Projetos escritos em C# usando Godot 4 atualmente não podem ser exportados para a plataforma web. Para usar C# nessa plataforma, recomenda-se usar o Godot 3. Suporte para Android e iOS está disponível a partir do Godot 4.2, mas é experimental e há algumas limitações.

Ver também

Para saber mais sobre o C#, acesse a seção C#/.NET.

C++ através da GDExtension

O GDExtension permite que você escreva código de jogo em C++ sem a necessidade de recompilar o 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.

O GDExtension é a melhor escolha para desempenho. Você não precisa usá-lo em todo o jogo, pois pode escrever outras partes em GDScript ou C#.

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

Resumo

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

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

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#.