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

Доступные языки скрипта¶
Godot предлагает пять игровых языков программирования: GDScript, C#, VisualScript, а также C++ и C с помощью своей технологии GDNative. Есть и другие поддерживаемые сообществом языки, но здесь представлены официальные.
Вы можете использовать несколько языков в одном проекте. Например, работая в команде, вы можете писать логику игрового процесса на GDScript, так как он быстро пишется, позволить дизайнерам уровней писать сценарии заданий в графическом языке VisualScript, и использовать C# или C++ для написания сложных алгоритмов, максимизирования производительность. Вам решать.
Мы предоставляем такую гибкость, чтобы отвечать потребностям разработчиков и разных игровых проектов.
Какой из них мне следует использовать?¶
Если вы новичок, мы рекомендуем начать с GDScript. Мы создали этот язык специально для Godot и нужд разработчиков. Он имеет лёгкий и простой синтаксис и предоставляет наиболее плотную интеграцию с Godot.

Для C# вам будет необходим внешний редактор кода, например VSCode или Visual Studio. Несмотря на то что поддержка C# уже развита, вы найдете меньше обучающих ресурсов для него по сравнению с GDScript. Поэтому мы рекомендуем C# в основном тем пользователям, которые уже имеют опыт работы с этим языком.
Давайте посмотрим свойства и особенности каждого языка, а также его плюсы и минусы.
GDScript¶
GDScript - объектно-ориентированный и императивный язык программирования, созданный для Godot. Сделан от и для разработчиков игр, чтобы уменьшить затрачиваемое время на программирование игр. В его особенности входят:
Простой синтаксис, который приводит к созданию маленьких по объёму файлов.
Молниеносная компиляция и загрузка.
Tight editor integration, with code completion for nodes, signals, and more information from the scene it's attached to.
Встроенные типы векторов и преобразований, что делает его эффективным для интенсивного использования линейной алгебры, так необходимых для игр.
Поддерживает несколько потоков так же эффективно, как статически типизированные языки - это одно из ограничений, которое заставило нас избегать виртуальных машин, таких как Lua, Squirrel и т. д.
Нет сборщика мусора, поскольку эта функция в конечном итоге мешает при создании игр. По умолчанию движок считает ссылки и управляет памятью за вас в большинстве случаев, но вы также можете управлять памятью, если вам это необходимо.
Последовательная типизация. Переменные по умолчанию имеют динамическую типизацию, но вы также можете подсказки типов для сильной проверки типов.
GDScript похож на Python, поскольку вы структурируете свои блоки кода с помощью отступов, но на практике он работает иначе. Он вдохновлён несколькими языками, включая Squirrel, Lua и Python.
Примечание
Почему не использовать сразу Python или Lua?
Много лет назад Godot использовал Python, затем Lua. Интеграция обоих языков требовала много работы и имела серьёзные ограничения. Например, поддержка потоков была большой проблемой в Python.
Разработка отдельного языка не требует от нас больше работы, и мы можем приспособить его к потребностям разработчиков игр. Сейчас мы работаем над оптимизацией производительности и функциями, которые было бы сложно предложить на сторонних языках.
.NET / C#¶
Поскольку Microsoft C# является любимцем среди разработчиков игр, мы добавили официальную поддержку для него. C# - это сформировавшийся и гибкий язык с огромным количеством готовых библиотек, для него написанных. Его поддержка была добавлена благодаря щедрому пожертвованию от Microsoft.

C# предлагает превосходный компромисс между производительностью и простотой использования, но вы должны помнить о его сборщике мусора.
Примечание
Вы должны использовать версию Mono редактора Godot, чтобы писать на C#. Вы можете загрузить его на странице загрузки.
Поскольку Godot использует среду выполнения Mono.NET, теоретически любая сторонняя библиотека .NET или программная платформа может использоваться для написания скриптов в Godot, так же как любой CLR-совместимый язык программирования, такой как F#, Boo или ClojureCLR. Однако, на практике C# является единственным официально поддерживаемым .NET вариантом.
Примечание
Код на GDScript выполняется не так быстро, как скомпилированный С++ или C#. Однако, большинство кода вызывает функции внутри движка, написанные на C++ с использованием быстрых алгоритмов. В большинстве случаев, при написании игровой логики, между языками GDScript, C#, или C++ нет значительного отличия в производительности.
Визуальный Скриптинг¶
Визуальный Сценарий - это визуальный язык программирования на основе блоков, в котором вы эти блоки соединяете в логику. Это может быть отличным инструментом для людей, далеких от программирования, таких как игровые дизайнеры и художники.

Вы можете использовать другие языки для создания пользовательских блоков, уникальных для вашей игры. Например: для создания ИИ, квестов или диалогов. В этом и есть сила Визуального Программирования.
Хоть это и предоставляет все необходимые базовые блоки для создания полноценной игры, мы не рекомендуем использовать VisualScript таким образом. Так как он медленней чем другие языки программирования.
См.также
Подробнее смотрите: Начало работы с VisualScript.
C и C++ через GDNative¶
GDNative позволяет писать игровой код на C или C++ без необходимости перекомпиляции или даже перезапуска Godot.

Вы можете использовать любую версию языка или смешивать марки/бренды и версии компиляторов для сгенерированных общих библиотек, благодаря использованию нами внутреннего C API Bridge.
Этот язык является наиболее производительным, но не обязательно использовать его во всей игре. Другие части могут быть написаны на GDScript, C# или VisualScript.
When working with GDNative, the available types, functions, and properties closely resemble Godot's actual C++ API.
Подведение итогов¶
Скрипты ‐ это файлы, содержащие код, которые вы прикрепляете к узлу, для расширения его функционала.
Godot официально поддерживает пять языков для написания скриптов, предоставляя гибкий выбор между удобством и производительностью.
Вы можете смешивать языки, например, для создания ресурсоёмких алгоритмов на C или C++, а для всей остальной игровой логики использовать GDScript или C#.