Языки скрипта

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

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

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

../../_images/scripting_camera_shake.gif

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

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

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

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

Предупреждение

`В Godot 4.0 из ядра будет убрана поддержка VisualScript.<https://godotengine.org/article/godot-4-will-discontinue-visual-scripting>`__Так, создание новых проектов с использованием визуального программирования не рекомендуется. В будущем VisualScript может быть интегрирован в Godot 4.x только как расширение.

Пока что Godot 3.x поддерживает VisualScript, но рекомендуется использовать GDScript, особенно если планируется дальнейший переход проекта на Godot 4.

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

Если вы новичок, мы рекомендуем начать с 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#

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

../../_images/scripting_csharp.png

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

Примечание

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

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

Примечание

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

VisualScript (Визуальный скриптинг)

Предупреждение

`В Godot 4.0 из ядра будет убрана поддержка VisualScript.<https://godotengine.org/article/godot-4-will-discontinue-visual-scripting>`__Так, создание новых проектов с использованием визуального программирования не рекомендуется. В будущем VisualScript может быть интегрирован в Godot 4.x только как расширение.

Пока что Godot 3.x поддерживает VisualScript, но рекомендуется использовать GDScript, особенно если планируется дальнейший переход проекта на Godot 4.

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

../../_images/scripting_visualscript.png

Вы можете использовать другие языки для создания блоков, уникальных для вашей игры. Например: для создания ИИ, квестов или диалогов. В этом и есть сила VisualScript.

Хоть это и предоставляет все необходимые базовые блоки для создания полноценной игры, мы не рекомендуем использовать VisualScript таким образом. Так как он медленней чем другие языки программирования.

См.также

Подробнее смотрите: Начало работы с VisualScript.

C и C++ через GDNative

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

../../_images/scripting_cpp.png

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

GDNative будет лучшим выбором для производительности, но не обязательно использовать его во всей игре. Другие части могут быть написаны на GDScript, C# или VisualScript.

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

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

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

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

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