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