Скриптовые языки

В этом уроке вы получите обзор доступных скриптовых языков в Godot. Вы узнаете о плюсах и минусах каждого варианта. В следующей части вы напишете свой первый скрипт, используя GDScript.

Скрипты прикрепляются к узлу и расширяют его поведение. Это означает, что скрипты наследуют все функции и свойства узла, к которому они присоединяются.

Например, возьмем игру, в которой узел Camera2D следует за кораблем. По умолчанию узел Camera2D следует за своим родителем. Представьте, что вы хотите, чтобы камера дрожала, когда игрок получает урон. Поскольку эта функция не встроена в Godot, вы должны написать скрипт дрожания камеры и прикрепить его к Camera2D.

../../_images/scripting_camera_shake.gif

Доступные языки сценариев

Godot предлагает четыре языка программирования игрового процесса: GDScript, C#, а также C и C++ с помощью технологии GDExtension. Есть и другие языки, поддерживаемые сообществом, но эти – официальные.

Вы можете использовать несколько языков в одном проекте. Например, в команде вы можете программировать логику игрового процесса на GDScript, поскольку он быстро пишется, и использовать C# или C для реализации сложных алгоритмов и повышению их производительности. Или вы можете написать все на GDScript или C#. Это ваш выбор.

Мы предоставляем такую гибкость, чтобы отвечать потребностям разработчиков и разных игровых проектов.

Какой язык мне следует использовать?

Если вы новичок, мы рекомендуем начать с GDScript. Мы создали этот язык специально для Godot и нужд разработчиков. Он имеет лёгкий и простой синтаксис и предоставляет наиболее плотную интеграцию с Godot.

../../_images/scripting_gdscript.webp

Для C# вам будет необходим внешний редактор кода, например VSCode или Visual Studio. Несмотря на то что поддержка C# уже развита, для него вы найдете меньше обучающих ресурсов чем для GDScript. Поэтому мы рекомендуем C# в основном тем пользователям, которые уже имеют опыт работы с этим языком.

Давайте посмотрим свойства и особенности каждого языка, а также его плюсы и минусы.

GDScript

GDScript - объектно-ориентированный и императивный язык программирования, созданный для Godot. Сделан от и для разработчиков игр, чтобы уменьшить затрачиваемое время на программирование игр. В его особенности входят:

  • Простой синтаксис, который приводит к созданию маленьких по объёму файлов.

  • Молниеносная компиляция и загрузка.

  • Тесная интеграция редактора, с завершением кода для узлов, сигналов и дополнительной информации из сцены, к которой он прикреплен.

  • Встроенные типы векторов и преобразований, что делает его эффективным для интенсивного использования линейной алгебры, так необходимых для игр.

  • Поддерживает несколько потоков так же эффективно, как и языки со статической типизацией.

  • Нет сборщика мусора, поскольку эта функция в конечном итоге мешает при создании игр. По умолчанию движок считает ссылки и управляет памятью за вас в большинстве случаев, но вы также можете управлять памятью, если вам это необходимо.

  • Последовательная типизация. Переменные по умолчанию имеют динамическую типизацию, но вы также можете использовать подсказки типов для сильной проверки типов.

GDScript похож на Python, поскольку вы структурируете свои блоки кода с помощью отступов, но на практике он работает иначе. Он вдохновлён несколькими языками, включая Squirrel, Lua и Python.

Примечание

Почему мы не используем напрямую Python или Lua?

Много лет назад Godot использовал Python, затем Lua. Интеграция обоих языков требовала много работы и имела серьёзные ограничения. Например, поддержка потоков была большой проблемой в Python.

Разработка отдельного языка не требует от нас больше работы, и мы можем приспособить его к потребностям разработчиков игр. Сейчас мы работаем над производительностью и функциями, которые было бы сложно предложить на сторонних языках.

.NET / C#

Поскольку C# от Microsoft является любимцем среди разработчиков игр, мы добавили официальную поддержку для него. C# - это сформировавшийся и гибкий язык с огромным количеством готовых библиотек. Его поддержка была добавлена благодаря щедрому пожертвованию от Microsoft.

../../_images/scripting_csharp.png

C# предлагает превосходный компромисс между производительностью и простотой использования, но вы должны помнить о его сборщике мусора.

Примечание

Для написания скриптов на C# необходимо использовать версию редактора Godot .NET. Вы можете скачать его на странице загрузки Godot.

Поскольку Godot использует .NET 8, теоретически вы можете использовать любую стороннюю библиотеку или фреймворк .NET в Godot, а также любой язык программирования, совместимый с Common Language Infrastructure, например F#, Boo или ClojureCLR. Однако C# — единственный официально поддерживаемый вариант .NET.

Примечание

Код на GDScript выполняется не так быстро, как скомпилированный С++ или C#. Однако, большинство кода вызывает функции внутри движка, написанные на C++ с использованием быстрых алгоритмов. В большинстве случаев, при написании игровой логики, между языками GDScript, C#, или C++ нет значительного отличия в производительности.

Внимание

На данный момент проекты Godot 4, использующие C# в качестве языка скриптов, не могут быть экспортированы на Web платформу. Для использования C# там, пожалуйста, используйте Godot 3. Платформы Android и iOS доступны, начиная с Godot 4.2, но в экспериментальном формате и с ограничениями.

См. также

Чтобы узнать больше о C#, перейдите в раздел C#/.NET.

C++ через GDExtension

GDExtension позволяет писать код игры на C++ без необходимости перекомпиляции Godot.

../../_images/scripting_cpp.png

Вы можете использовать любую версию языка или смешивать марки/бренды и версии компиляторов для сгенерированных общих библиотек, благодаря использованию нами внутреннего C API Bridge.

GDExtension — лучший выбор с точки зрения производительности. Вам не обязательно использовать его на протяжении всей разработки, так как другие части вы можете написать на GDScript или C#.

Во время работы с GDExtension, доступные типы, функции, и свойства очень близки к API C++ движка Godot.

Подведение итогов

Скрипты ‐ это файлы, содержащие код, которые вы прикрепляете к узлу, для расширения его функционала.

Godot официально поддерживает четыре языка для написания скриптов, предоставляя гибкий выбор между удобством и производительностью.

Вы можете смешивать языки, например, для создания ресурсоёмких алгоритмов на C или C++, а для всей остальной игровой логики использовать GDScript или C#.