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# та, завдяки технології GDExtension, C та C++. Існує більше мов, що підтримуються спільнотою, але ці є офіційними.

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

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

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

Якщо ви новачок, рекомендуємо почати з 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#

Оскільки мова Microsoft `C# <https://en.wikipedia.org/wiki/C_Sharp_(мова_програмування)>_ є улюбленою серед розробників ігор, ми офіційно підтримуємо її. C# - це зріла та гнучка мова, для якої написано безліч бібліотек. Ми змогли додати її підтримку завдяки щедрому пожертвуванню від Microsoft.

../../_images/scripting_csharp.png

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

Примітка

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

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

Примітка

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

Увага

Projects written in C# using Godot 4 currently cannot be exported to the web platform. To use C# on that platform, consider Godot 3 instead. Android and iOS platform support is available as of Godot 4.2, but is experimental and some limitations apply.

C++ via GDExtension

GDExtension дозволяє писати ігровий код на C++ без необхідності перекомпілювати Godot.

../../_images/scripting_cpp.png

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

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

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

Підсумок

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

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

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