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 cinco linguagens de programação integradas: GDScript, C#, VisualScript e, por meio de sua tecnologia GDNative, C e C++. Existem mais linguagens suportados pela comunidade, mas estas 5 são as oficiais.

Você pode utilizar 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ápida de escrever, e designers de níveis usar a linguagem gráfica VisualScript, e usar C# ou C++ para implementar algoritmos complexos e maximizar sua performance. Ou você pode 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, recomendamos experimentar GDScript especialmente se você pretende migrar seu projeto para o Godot 4.

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#

Como o C# da Microsoft é o favorito entre os desenvolvedores de jogos, nós o apoiamos oficialmente. C# é uma linguagem madura e flexível com toneladas de bibliotecas escritas para ela. Foi possível adicionar suporte a ele 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 Mono do editor Godot para poder programar em C#. Você pode fazer download na página de download no website do Godot.

Já que o Godot usa a plataforma .NET Mono, em teoria qualquer biblioteca ou infraestrutura .NET terceirizada pode ser usada para roteirizar no Godot, assim como qualquer linguagem de programação compatível com a Infraestrutura de Linguagem Comum (CLI), tais como F#, Boo ou ClojureCLR. Na prática, entretanto, C# é a única opção .NET com suporte oficial.

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, recomendamos 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

O GDNative permite que você escreva o código do jogo em C ou C++ sem precisar recompilar ou mesmo reiniciar 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.

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

Ao trabalhar com GDNative, os tipos, funções e propriedades disponíveis se assemelham muito à API C++ real do 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 algoritmos exigentes com C ou C++ e escrever a maior parte da lógica do jogo com GDScript ou C#.