Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

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

Цей урок дасть вам загальне уявлення про мови програмування, доступні в 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.webp

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

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

Скрипт

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

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

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

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

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

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

  • No tracing garbage collection, as this feature eventually gets in the way when creating games. The engine counts references and manages the memory for you in most cases by default, but you can also control memory if you need to.

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

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

Примітка

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

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

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

.NET / C#

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

../../_images/scripting_csharp.png

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

Примітка

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

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

Примітка

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

Увага

Проекти, написані на C# для Godot 4, наразі не можна експортувати на веб-платформу. Щоб використовувати C# на цій платформі, розгляньте Godot 3. Підтримка платформ Android та iOS доступна з Godot 4.2, але є експериментальною та some limitations apply.

Дивись також

Щоб дізнатися більше про C#, перейдіть до розділу C#/.NET.

C++ через GDExtension

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

../../_images/scripting_cpp.png

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

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

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

Підсумок

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

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

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