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

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

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

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

../../_images/scripting_camera_shake.gif

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

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

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

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

Попередження

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

Хоча Godot 3.x підтримуватиме VisualScript, ми рекомендуємо спробувати GDScript, особливо якщо ви маєте намір перенести свій проект на Godot 4.

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

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

../../_images/scripting_gdscript.png

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

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

Скрипт

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

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

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

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

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

  • Підтримує мультипоточність з ефективністю статично типованих мов.

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

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

Мова 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++ не матиме значного впливу на продуктивність.

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

Попередження

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

Хоча Godot 3.x підтримуватиме VisualScript, ми рекомендуємо спробувати GDScript, особливо якщо ви маєте намір перенести свій проект на Godot 4.

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.

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

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

Підсумок

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

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

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