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

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

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

For example, take a game where a Camera2D node follows a ship. The Camera2D node follows its parent by default. Imagine you want the camera to shake when the player takes damage. As this feature is not built into Godot, you would attach a script to the Camera2D node and code the shake.

../../_images/scripting_camera_shake.gif

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

Godot offers five gameplay programming languages: GDScript, C#, VisualScript, and, via its GDNative technology, C and C++. There are more community-supported languages, but these are the official ones.

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

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

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

Godot 4.0 will remove VisualScript from core entirely. As a result, creating new projects using visual scripting in Godot is not recommended. Future Godot 4.x releases may have VisualScript reimplemented as an extension.

While Godot 3.x will keep VisualScript supported, we recommend trying out GDScript instead, especially if you intend to migrate your project to Godot 4.

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

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

../../_images/scripting_gdscript.png

For C#, you will need an external code editor like VSCode or Visual Studio. While C# support is now mature, you will find fewer learning resources for it compared to GDScript. That's why we recommend C# mainly to users who already have experience with the language.

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

Скрипт

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

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

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

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

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

  • Supports multiple threads as efficiently as statically typed languages.

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

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

Мова 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 will remove VisualScript from core entirely. As a result, creating new projects using visual scripting in Godot is not recommended. Future Godot 4.x releases may have VisualScript reimplemented as an extension.

While Godot 3.x will keep VisualScript supported, we recommend trying out GDScript instead, especially if you intend to migrate your project to 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

You can use other languages to create custom blocks that are specific to your game, for example, to script AIs, quests, or dialogues. That's where the strength of VisualScript lies.

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

Дивись також

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

C і C++ через GDNative

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

../../_images/scripting_cpp.png

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

GDNative is the best choice for performance. You don't need to use it throughout an entire game, as you can write other parts in GDScript, C#, or VisualScript.

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

Підсумок

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

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

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