Scripting languages
Этот урок даст вам обзор доступных языков сценариев в Godot. Вы узнаете плюсы и минусы каждого варианта. В следующей части вы напишете свой первый скрипт с использованием GDScript.
Скрипты прикрепляются к узлу и расширяют его поведение . Это означает, что скрипты наследуют все функции и свойства узла, к которому они привязаны.
Например, возьмем игру, в которой узел Camera2D следует за кораблем. Узел Camera2D по умолчанию следует за своим родителем. Представьте, что вы хотите, чтобы камера дрожала, когда игрок получает урон. Поскольку эта функция не встроена в Godot, вы должны прикрепить скрипт к узлу Camera2D и запрограммировать дрожание.
Доступные языки сценариев
Godot предлагает пять языков программирования геймплея : GDScript, C#, VisualScript и, благодаря технологии GDNative, C и C++. Есть и другие поддерживаемые сообществом языки , но это официальные.
Вы можете использовать несколько языков в одном проекте. Например, в команде вы можете кодировать логику игрового процесса на GDScript, так как он быстро пишется, позволить дизайнерам уровней писать квесты на графическом языке VisualScript и использовать C# или C++ для реализации сложных алгоритмов и повышения их производительности. Или вы можете написать все на GDScript или C#. Это ваш вызов.
Мы предоставляем эту гибкость, чтобы удовлетворить потребности различных игровых проектов и разработчиков.
Godot 4.0 полностью удалит VisualScript из ядра. В результате создание новых проектов с помощью визуального скриптинга в Godot не рекомендуется. В будущих выпусках Godot 4.x VisualScript может быть перереализован как расширение.
Хотя Godot 3.x сохранит поддержку VisualScript, вместо этого мы рекомендуем попробовать GDScript , особенно если вы собираетесь перенести свой проект на Godot 4.
Какой язык мне следует использовать?
Если вы новичок, рекомендуем начать с GDScript . Мы сделали этот язык специально для Godot и нужд разработчиков игр. Он имеет легкий и простой синтаксис и обеспечивает самую тесную интеграцию с Godot.
Для C# вам понадобится внешний редактор кода, такой как VSCode или Visual Studio. Несмотря на то, что поддержка C# в настоящее время развита, вы найдете для нее меньше учебных ресурсов по сравнению с GDScript. Вот почему мы рекомендуем C# в основном пользователям, уже имеющим опыт работы с этим языком.
Давайте рассмотрим особенности каждого языка, а также его плюсы и минусы.
GDScript
GDScript — это объектно-ориентированный и императивный язык программирования, созданный для Godot. Он создан разработчиками игр и для них, чтобы сэкономить ваше время на программирование игр. Его особенности включают в себя:
- Простой синтаксис, который приводит к коротким файлам.
- Молниеносная скорость компиляции и загрузки.
- Тесная интеграция редактора с завершением кода для узлов, сигналов и дополнительной информации из сцены, к которой он прикреплен.
- Встроенные типы векторов и преобразований, что делает его эффективным для интенсивного использования линейной алгебры, необходимой для игр.
- Поддерживает несколько потоков так же эффективно, как языки со статической типизацией.
- Нет сборки мусора , так как эта функция со временем мешает при создании игр. Движок подсчитывает ссылки и управляет памятью для вас в большинстве случаев по умолчанию, но вы также можете управлять памятью, если вам это нужно.
- Постепенное печатание . Переменные имеют динамические типы по умолчанию, но вы также можете использовать подсказки типов для строгой проверки типов.
GDScript выглядит как Python, когда вы структурируете свои блоки кода с помощью отступов, но на практике он работает иначе. Он вдохновлен несколькими языками, включая Squirrel, Lua и Python.
Почему бы нам не использовать Python или Lua напрямую?
Несколько лет назад Godot использовал Python, затем Lua. Интеграция обоих языков потребовала много работы и имела серьезные ограничения. Например, поддержка многопоточности была большой проблемой для Python.
Разработка специального языка не требует от нас дополнительной работы, и мы можем адаптировать его к потребностям разработчиков игр. Сейчас мы работаем над оптимизацией производительности и функциями, которые было бы сложно предложить на сторонних языках.
.NET/С#
Поскольку C# от Microsoft пользуется популярностью среди разработчиков игр, мы официально поддерживаем его. C# — зрелый и гибкий язык, для него написано множество библиотек. Мы могли бы добавить его поддержку благодаря щедрому пожертвованию от Microsoft.
C# предлагает хороший компромисс между производительностью и простотой использования, хотя вы должны знать о его сборщике мусора.
Вы должны использовать версию Mono редактора Godot для написания скриптов на C#. Вы можете скачать его на странице загрузки сайта Godot .
Поскольку Godot использует среду выполнения Mono .NET, теоретически вы можете использовать в Godot любую стороннюю библиотеку или инфраструктуру .NET, а также любой язык программирования, совместимый с Common Language Infrastructure, например F#, Boo или ClojureCLR. Однако C# — единственный официально поддерживаемый вариант .NET.
Сам код GDScript выполняется не так быстро, как скомпилированный C# или C++. Однако код большинства скриптов вызывает функции, написанные с помощью быстрых алгоритмов в коде C++ внутри движка. Во многих случаях написание игровой логики на GDScript, C# или C++ не окажет существенного влияния на производительность.
VisualScript
Godot 4.0 полностью удалит VisualScript из ядра. В результате создание новых проектов с помощью визуального скриптинга в Godot не рекомендуется. В будущих выпусках Godot 4.x VisualScript может быть перереализован как расширение.
Хотя Godot 3.x сохранит поддержку VisualScript, вместо этого мы рекомендуем попробовать GDScript , особенно если вы собираетесь перенести свой проект на Godot 4.
Visual Scripting — это язык визуального программирования на основе графов, в котором вы соединяете блоки. Это может быть отличным инструментом для непрограммистов, таких как гейм-дизайнеры и художники.
Вы можете использовать другие языки для создания пользовательских блоков, специфичных для вашей игры, например, для сценариев ИИ, квестов или диалогов. Вот в чем сила VisualScript.
Хотя он предоставляет все основные строительные блоки, необходимые для кодирования полных игр, мы не рекомендуем использовать VisualScript таким образом. Программирование всего с его помощью происходит медленно по сравнению с использованием других языков программирования.
Дополнительные сведения см. в разделе Начало работы с VisualScript .
C и C++ через GDNative
GDNative позволяет писать код игры на C или C++ без необходимости перекомпилировать или даже перезапускать Godot.
Вы можете использовать любую версию языка или смешивать бренды и версии компиляторов для сгенерированных общих библиотек благодаря нашему использованию внутреннего C API Bridge.
GDNative — лучший выбор для повышения производительности. Вам не нужно использовать его на протяжении всей игры, так как вы можете писать другие части на GDScript, C# или VisualScript.
При работе с GDNative доступные типы, функции и свойства очень похожи на реальный C++ API Godot.
Summary
Скрипты — это файлы, содержащие код, который вы прикрепляете к узлу для расширения его функциональности.
Godot поддерживает пять официальных языков сценариев, предлагая вам гибкость между производительностью и простотой использования.
Вы можете смешивать языки, например, для реализации сложных алгоритмов на C или C++ и писать большую часть игровой логики на GDScript или C#.
3.6 Скриптовые языки программирования
Скриптовый язык (англ. scripting language, также называют язык сценариев) – язык программирования, разработанный для записи «сценариев», последовательностей операций, которые пользователь может выполнять на компьютере. Простые скриптовые языки раньше часто называли языками пакетной обработки (batch languages или job control languages). Сценарии всегда интерпретируются, а не компилируются.
Сценарий (скрипт) – это программа, которая автоматизирует некоторую задачу, которую без сценария пользователь делал бы вручную, используя интерфейс программы.
Поскольку сценарии интерпретируются из исходного кода динамически при каждом исполнении, они выполняются обычно значительно медленнее готовых программ, оттранслированных в машинный код на этапе компиляции. Поэтому сценарные языки не применяются для написания программ, требующих оптимальности и быстроты исполнения. Но из-за простоты они часто применяются для написания небольших, одноразовых («проблемных») программ. Также, в плане быстродействия скриптовые языки можно разделить на языки динамического разбора (sh, command.com) и предварительно компилируемые (Perl).
Языки динамического разбора считывают инструкции из файла программы минимально требующимися блоками, и исполняют эти блоки, не читая дальнейший код.
Предкомпилируемые языки вначале считывают всю программу, компилируют её всю либо в машинный код, либо в какой-то внутренний формат, и лишь затем – исполняют получившийся код.
Для создания пользовательских расширений язык сценариев удобен в ряде случаев:
- безопасность. Скриптовый язык обеспечивает программируемость без риска дестабилизации системы. Скрипты не компилируются, а интерпретируются. Поэтому неправильно написанная программа выведет диагностическое сообщение, не вызывая падение системы;
- наглядность. Язык сценариев используется, если необходим выразительный код. Концепция программирования в скриптовом языке может кардинально отличаться от основной программы;
- простота. Код имеет собственный набор программ, поэтому одна строка может выполнять те же операции, что и десятки строк на обычном языке. Поэтому для написания кодов не требуется программист высокой квалификации;
- кроссбраузерность. Скриптовые языки ориентированы на кроссбраузерность. Например, JavaScript может исполняться браузерами практически под всеми современными операционными системами.
- универсальные: Forth, AngelScript, Perl, PHP, Python, Tcl (Tool command language), Squirrel, REBOL, Ruby, AutoIt, Lua;
- встроенные в прикладные программы: VBA, UnrealScript, AutoLISP, Emacs Lisp, Game Maker Language, MQL4 script, ERM;
- командные оболочки: sh, AppleScript, bash, csh, ksh, JCL, cmd.exe, command.com, REXX, Visual Basic Script;
- встраиваемые: Guile, Script.NET, ActionScript, Lingo (используется в редакторе Director), Sleep, браузерные Jscript и JavaScript.
- Как классифицируются компьютерные сети?
- Что представляет собой семиуровневая модель структуры протоколов связи?
- Какие существуют основные протоколы сети Интернет?
- Как происходит адресация в сети Интернет?
- Какие распространенные сервисы сети Интернет?
- Какие области охватывает разработчик Web-дизайна сайта?
- Какие инструменты существуют для разработки Web-сайта?
- Для чего предназначены языки HTML и XML?
- Что содержит структура HTML-документа
- Для чего предназначены скриптовые языки программирования?