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.

Языки сценариев

В этом уроке вы получите обзор доступных языков скриптов в 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.png

Для 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 6, теоретически в Godot можно использовать любую стороннюю библиотеку или платформу .NET, а также любой язык программирования, совместимый со структурой общего языка, например F#, Boo или ClojureCLR. Однако C# — единственный официально поддерживаемый вариант .NET.

Примечание

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

Внимание

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

C++ через GDExtension

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

../../_images/scripting_cpp.png

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

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

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

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

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

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

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