Мови сценаріїв

Цей урок дасть вам огляд доступних мов сценаріїв у Godot. Ви дізнаєтеся плюси і мінуси кожного варіанту. У наступній частині ви напишете свій перший сценарій (скрипт) за допомогою GDScript.

Скрипти приєднуються до вузла і розширюють його поведінку. Це означає, що скрипти успадковують усі функції та властивості вузла, до якого вони приєднані.

Наприклад, візьмемо гру, де вузол Camera2D слідує за кораблем. Вузол Camera2D за замовчуванням слідує за своїм предком. Уявіть, що ви хочете, щоб він тремтів, коли гравець отримує пошкодження. Оскільки ця функція не вбудована в Godot, ви повинні долучити до неї сценарій і запрограмувати тремтіння камери.

../../_images/scripting_camera_shake.gif

Доступні мови сценаріїв

Godot офіційно підтримує п’ять мов програмування ігрового процесу: GDScript, C#, VisualScript, а також C++ і C за допомогою технології GDNative. Але є ще і мови, що підтримуються спільнотою.

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

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

Яку мову я маю використовувати?

Якщо ви новачок, рекомендуємо почати з GDScript. Ми створили цю мову спеціально для Godot та потреб розробників ігор. Вона має легкий і простий синтаксис і забезпечує найтіснішу інтеграцію з Godot.

../../_images/scripting_gdscript.png

Для C# вам знадобиться зовнішній редактор коду, наприклад VSCode або Visual Studio. Хоча підтримка C# тепер добре пропрацьована, але ви знайдете менше навчальних ресурсів для неї порівняно з GDScript. Тому ми рекомендуємо C# переважно користувачам, які вже мають досвід роботи з цією мовою.

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

Скрипт

GDScript є об'єктно-орієнтованою та імперативною мовою програмування, яка створена для Godot. Вона створена розробниками ігор, щоб заощадити ваш час на кодування ігор. ЇЇ особливості включають:

  • Простий синтаксис, який веде до файлів малого розміру.

  • Надзвичайно швидка компіляція та час завантаження.

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

  • Вбудовані векторні та трансформаційні типи, що робить її ефективним для інтенсивного використання лінійної алгебри, необхідної для ігор.

  • Підтримує декілька потоків так само ефективно, як і статично типізовані мови. Це одна з функцій, яку ми не можемо легко забезпечити зі стороннім мовам, таким як Lua або Python.

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

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

Мова GDScript виглядає як Python, коли ви структуруєте свої блоки коду за допомогою відступів, але на практиці вона працює не так само. Вона створена на основі кількох мов, зокрема Squirrel, Lua та Python.

Примітка

Чому б нам не використовувати Python або Lua безпосередньо?

Багато років тому Godot використовував Python, потім Lua. Інтеграція обох мов вимагала багато роботи та мала серйозні обмеження. Наприклад, підтримка потоків була великою проблемою для Python.

Розробка спеціальної мови не вимагає від нас стільки роботи, і ми можемо адаптувати її відповідно до потреб розробників ігор. Зараз ми працюємо над оптимізацією продуктивності та функціями, які було б важко запропонувати сторонніми мовами.

.NET / C#

Оскільки C# від Microsoft є улюбленою серед розробників ігор, ми офіційно її підтримуємо. C# — це зріла і гнучка мова з безліччю бібліотек, написаних для неї. Ми змогли додати її підтримку завдяки щедрій пожертві від Microsoft.

../../_images/scripting_csharp.png

Мова C# пропонує хороший компроміс між продуктивністю та простотою використання, хоча ви повинні знати про її збирач сміття.

Примітка

Ви повинні використовувати редакцію Mono редактора Godot для написання сценаріїв на C#. Ви можете завантажити його на сторінці завантаження веб-сайту Godot.

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

Примітка

Сам код GDScript виконується не так швидко, як скомпільований C# або C++. Однак більшість коду сценарію викликає функції, написані за допомогою швидких алгоритмів на C++ всередині двигуна. У багатьох випадках написання логіки гри на GDScript, C# або C++ не матиме значного впливу на продуктивність.

Візуальный Скриптинг

Visual Scripting is a graph-based visual programming language where you connect blocks. It can be a great tool for non-programmers like game designers and artists.

../../_images/scripting_visualscript.png

Ви можете використовувати інші мови для створення власних блоків, які є специфічними для вашої гри. Наприклад, для створення сценаріїв штучного інтелекту, квестів або діалогів. Саме в цьому і полягає сила VisualScript.

Хоча він надає всі основні будівельні блоки, необхідні для програмування всієї гри, ми не рекомендуємо використовувати VisualScript таким чином. У порівнянні з іншими мовами програмування таке програмування може бути значно повільнішим.

Дивись також

Для отримання додаткової інформації дивіится Початок роботи з VisualScript.

C і C++ через GDNative

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

../../_images/scripting_cpp.png

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

Ця мова є найкращим вибором для продуктивності. Її не потрібно використовувати у всій грі, оскільки інші частини можуть бути написані на GDScript, C# або Visual Script.

Під час роботи з GDNative доступні типи, функції та властивості дуже нагадують реальний C++ API Godot.

Підсумок

Скрипти — це файли, що містять код, який ви додаєте до вузла, щоб розширити його функціональність.

Godot підтримує п’ять офіційних мов сценаріїв, пропонуючи вам гнучкість між продуктивністю та простотою використання.

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