Перейти к содержимому

Godot как писать на c

  • автор:

Написание скриптов в Godot на C#. Введение

Поддержка C # — это новая функция в Godot 3.0. Таким образом, вы все еще можете столкнуться с некоторыми проблемами или найти места, где документация может быть улучшена. Пожалуйста, сообщайте о проблемах с C# в Godot на странице движка Github . И любые проблемы с документацией на странице документации Github .

На этой странице приведено краткое введение в C#, что это такое и как его использовать в Godot. После этого вы можете посмотреть, как использовать определенные функции, прочитать о различиях между C# и GDScript API и (повторно) посетить раздел «Скрипты» в пошаговом руководстве.

C# — это язык программирования высокого уровня, разработанный Microsoft. В Godot это реализовано с платформой Mono 5.x .NET, включая полную поддержку C# 7.0. Mono — это реализация Microsoft .NET Framework с открытым исходным кодом, основанная на стандартах ECMA для C# и Common Language Runtime. Хорошей отправной точкой для проверки его возможностей является страница «Совместимость» в документации Mono.

ПРИМЕЧАНИЕ: Это не полномасштабное руководство по языку C# в целом. Если вы еще не знакомы с его синтаксисом или функциями, обратитесь к руководству по Microsoft C# или найдите подходящее введение в другом месте.

Установка C# в Godot

Скачайте и установите Mono SDK

Если вы используете Godot 3.0.2, вы должны будете скачать Mono 5.4.

Godot 3.0.3+ требует Mono 5.12 (на любой платформе)

ПРИМЕЧАНИЕ: Чтобы скачать Mono v5.12+ на Mac, найдите ссылку «Стабильный канал» на странице загрузок Mono . Канал Visual Studio является более ранней версией Mono и не будет работать с Godot 3.0.3+.

Вам также будет нужен MSBuild (по крайней мере, версия 15.0), который должен поставляться с Mono.

ПРИМЕЧАНИЕ: Инструкции по установке более старых версий Mono в Linux см. на этой странице . Более старые версии Mono для macOS и Windows можно найти здесь .

Кроме того, в вашей версии Godot должна быть включена поддержка Mono, поэтому убедитесь, что вы загружаете версию Godot Mono.

Если вы собираете Godot из исходного кода, обязательно следуйте инструкциям по включению поддержки Mono в вашу сборку, описанным на странице Компиляция с Mono .

Таким образом, вы должны установить 1) правильную версию Mono SDK для вашей версии Godot и 2) версию Godot Mono.

Настройка внешнего редактора

Хотя у Godot есть собственный редактор скриптов, его поддержка C# поддерживается на минимальном уровне, и рекомендуется использовать внешнюю IDE или редактор, например Microsoft Visual Studio Code или MonoDevelop, которые предоставляют автозаполнение, отладку и другие полезные функции при работе с C#. Чтобы настроить его, в Godot нажмите «Редактор», затем «Настройки редактора». Прокрутите вниз до настроек «Mono». Под Mono нажмите «Редактор», и на этой странице выберите свой внешний редактор.

ПРИМЕЧАНИЕ: Если вы используете Visual Studio Code, убедитесь, что вы загрузили и установили расширение .NET tools. Без этого Godot получит ошибку при попытке создать новый проект или отредактировать скрипт на C#.

Создание скрипта на C#

После того, как вы успешно настроили C# для Godot, вы должны увидеть следующую опцию при выборе «Прикрепить скрипт» в контекстном меню узла в вашей сцене:

Обратите внимание, что хотя некоторые особенности меняются, большинство вещей работают одинаково при использовании C#. Если вы новичок в Godot, вы можете просмотреть туториалы на «Написание сценариев (скриптов)» на этом этапе. Хотя в некоторых местах документации все еще отсутствуют примеры C#, большинство вещей можно легко перенести из GDScript.

Создание проекта и процесс работы

Когда вы создаете первый скрипт C#, Godot инициализирует файлы проекта C# для вашего проекта Godot. Это включает в себя создание решения C# ( .sln ) и файла проекта ( .csproj ), а также некоторых служебных файлов и папок ( .mono , иногда Properties ). Все они, кроме .mono , важны и должны храниться в вашей системе контроля версий. .mono может быть безопасно добавлен в список игнорирования вашего VCS (Система управления версиями). Для устранения неполадок иногда может помочь удаление папки .mono и ее востановление.

Обратите внимание, что в настоящее время есть некоторые проблемы, когда Godot и проект C# не синхронизированы; если вы удаляете, переименовываете или перемещаете объекты, такие как сценарии или узлы, они могут больше не совпадать. Для решения этой проблемы может помочь редактирование файла решения вручную.

Пример: если вы создали сценарий (например, Test.cs ) и удалили его в Godot, компиляция завершится неудачно, поскольку теперь ожидается, что отсутствующий файл все еще будет находиться в проекте CS. Сейчас вы можете просто открыть файл .csproj и найти ItemGroup , там должна быть строка, подобная следующей:

Просто удалите эту строку, и ваш проект должен снова заработать. То же самое работает при переименовании и перемещении объектов, просто переименуйте и переместите их в файл проекта, если это необходимо.

Пример

Вот пустой C# скрипт с некоторыми коммен��ариями, чтобы продемонстрировать, как он работает.

using Godot; using System; public class YourCustomClass : Node < // Member variables here, example: private int a = 2; private string b = "textvar"; public override void _Ready() < // Called every time the node is added to the scene. // Initialization here. GD.Print("Hello from C# to Godot :)"); >public override void _Process(float delta) < // Called every frame. Delta is time since the last frame. // Update game logic here. >>

Как вы видите, вещи, которые обычно находятся в Global Scope в GDScript, такие как Godot функция print, доступны в пространстве имен GD. Список их см. на справочных страницах классов для @GDScript и @GlobalScope .

ПРИМЕЧАНИЕ: Имейте в виду, что класс, который вы хотите присоединить к вашему узлу, должен называться как файл .cs. В противном случае вы получите следующую ошибку и не сможете запустить сцену: «Cannot find class XXX for script res://XXX.cs.».

Основные отличия между C# и GDScript

API C# использует PascalCase вместо snake_case в GDScript/C++. Где это возможно, поля и методы get/set были преобразованы в свойства. В целом, C# Godot API стремится быть настолько идиоматичным, насколько это возможно.

Текущие ошибки и известные проблемы

Поскольку поддержка C# является довольно новой для Godot, есть некоторые проблемы с развитием и вещи, которые все еще необходимо устранить. Ниже приведен список наиболее важных проблем, о которых вы должны знать при погружении в C# в Godot, но, если сомневаетесь, взгляните также на официальный трекер ошибок для проблем Mono .

  • Как объяснялось выше, проект C # не всегда автоматически синхронизируется при удалении, переименовании или перемещении объектов в Godot ( #12917 )
  • Написание плагинов редактора и инструментальных скриптов на C# пока не поддерживается
  • Экспорт Mono проектов поддерживается только для настольных платформ (Linux, Windows и macOS). HTML5, Android, iOS и UWP в настоящее время не поддерживаются ( #18364 comment )
  • Присоединенные сценарии C# должны ссылаться на класс, имя которого соответствует имени файла и является уникальным в сборке проекта. ( #7402 comment ) (от автора перевода: ну, для шарповцев это не новинка)

Производительность C# в Godot

Согласно некоторым тестам производительности (бенчмаркам), производительность C# в Godot — хотя обычно в одной и той же величине — примерно в 4 раза выше, чем у GDScript в некоторых простых случаях. Для самой высокой производительности C++ все еще немного быстрее; особенности будут варьироваться в зависимости от вашего варианта использования. GDScript, вероятно, достаточно быстрый для большинства общих сценариев рабочих нагрузок. C# быстрее, но требует некоторой дорогой подготовки при использовании с Godot.

Использование NuGet пакетов в Godot

Пакеты Nuget можно устанавливать и использовать с Godot, как и в любом проекте. Многие IDE (такие как VS Code) могут добавлять пакеты напрямую. Их также можно добавить вручную, добавив ссылку на пакет в файле .csproj, расположенном в корне проекта:

Всякий раз, когда пакеты добавляются или изменяются, запускайте восстановление NuGet в корне каталога проекта, и чтобы убедиться, что пакеты NuGet будут доступны для использования MSBuild, запустите:

$ msbuild /t:restore

Как писать на c++ в годот?

Недавно я решил перейти в gamedev и в роли движка выбрал Godot.До этого у меня был опыт работы с c++.Я не хотел бы изучать Gdscript или c#, а хотел бы продолжить работать на c++, но не знаю как.

  • Вопрос задан 19 июн. 2023
  • 2491 просмотр

Комментировать
Решения вопроса 0
Ответы на вопрос 2
you don’t choose c++. It chooses you

C++ не основной язык для Godot, но есть вот такое расширение, чтобы писать на С++.
https://docs.godotengine.org/en/stable/tutorials/s.
Выберите правильную версию godot и следуйте инструкции. Она оочень подробная + есть несколько видео на известной площадке, где также рассказывают как использовать С++.

Ответ написан 19 июн. 2023
Нравится 2 3 комментария
ChatGPT чтоль? Чего такой ответ странный? 😀

vabka

tukreb, не, вообще на чатжпт не похоже.
Да и ссылка легко гуглится в документации

tukreb, Я даже не знаю комплимент это или упрек. Вот вам для сравнения ответ от chatgpt.

Отлично, что вы решили попробовать Godot для своих игровых проектов! Хотя Godot поддерживает Gdscript и C# в качестве основных языков программирования, вы можете использовать и C++ для разработки в этом движке.

Важно отметить, что работа с C++ в Godot немного отличается от обычной разработки на этом языке. Вместо написания всего кода на C++, вам потребуется создать динамическую библиотеку (DLL) на C++, которую затем можно будет использовать в Godot. Взаимодействие с движком осуществляется через его API на C++.

Вот несколько шагов, которые вам понадобятся для использования C++ в Godot:

1. Установите Godot Engine: Перейдите на официальный сайт Godot (https://godotengine.org/) и загрузите последнюю версию движка. Установите его на свой компьютер.

2. Создайте проект: Запустите Godot и создайте новый проект. Выберите пустой шаблон или тот, который лучше всего соответствует вашим потребностям.

3. Настройте среду разработки: Если вы используете IDE, такое как Visual Studio или Visual Studio Code, настройте его для работы с Godot. На сайте Godot есть подробные инструкции по настройке различных IDE.

4. Создайте модуль на C++: В Godot создайте свой C++ модуль. Модуль представляет собой DLL, который будет содержать ваш пользовательский код на C++. Модуль может содержать классы, функции и другие элементы, которые вам понадобятся для разработки игры.

5. Взаимодействие с движком: Используйте API Godot на C++ для взаимодействия с движком. API предоставляет функции для работы с узлами, ресурсами, сигналами и другими элементами Godot.

6. Соберите и подключите модуль: Соберите вашу DLL и подключите ее к проекту Godot. Затем вы сможете использовать свой C++ код в скриптах и компонентах игры.

Обратите внимание, что использование C++ в Godot может быть сложным и требует знания языка C++, а также понимания API и архитектуры Godot. Будьте готовы к изучению документации и примеров кода для получения лучшего понимания процесса.

Также стоит отметить, что Gdscript и C# предоставляют более простой путь для начинающих

1. Установите необходимые инструменты: Убедитесь, что у Вас установлены C++ компилятор и среда разработки, такие как Visual Studio или GCC, в зависимости от Вашей операционной системы.

2. Скомпилируйте движок Godot: Перейдите на официальный сайт Godot и загрузите исходный код движка. Затем следуйте инструкциям по компиляции для Вашей операционной системы. В результате Вы получите исполняемый файл движка, который Вы сможете использовать для разработки.

3. Создайте новый проект: Откройте Godot и создайте новый проект. Выберите пустой шаблон или любой другой шаблон, который Вам нравится.

4. Создайте новый скрипт: В окне редактора Godot выберите «Скрипт» и выберите C++ как язык скрипта. Затем выберите место, где Вы хотите сохранить скрипт.

5. Начните писать код: Откройте созданный скрипт в выбранной Вами среде разработки и начните писать код на C++. Godot предоставляет API для работы с C++, и Вы можете использовать функции и классы из этого API для создания игровой логики.

6. Скомпилируйте и запустите проект: После написания кода скомпилируйте проект с помощью выбранной Вами среды разработки. Затем запустите полученный исполняемый файл и проверьте, что Ваш код работает внутри Godot.

Обратите внимание, что использование C++ в Godot может быть сложнее, чем использование Gdscript или C#, поэтому рекомендуется ознакомиться с документацией и руководствами по C++ в Godot, чтобы получить более подробную информацию о возможностях и ограничениях.

Уроки Godot Engine

#1 – Введение в движок Godot. Почему про него все говорят?

#1 – Введение в движок Godot. Почему про него все говорят?

Представляем вам курс для новичков по изучению игрового движка Godot Engine с нуля. В ходе данного курса для начинающих мы с вами разработаем несколько полноценных проектов, научимся строить мультиплеер и разберемся в написании кода внутри движка Godot.

Видеоурок

Полезные ссылки:

  • Официальный сайт Godot ;
  • Статья на нашем сайте .

Информация про Godot Engine

Игровой движок Godot появился относительно недавно. Его первый выход в свет был в феврале 2014 года. На момент релиза движок обладал минимальным необходимым набором функционала без перегруженной системы вкладок и настроек.

За эту простоту он быстро стал любимчиком многих молодых разработчиков. На сегодняшний день Godot Engine постепенно перерастает из формата любительского движка в формат полноценного движка для разработки как 2Д, так и 3Д проектов.

Сам движок написан при использовании языков Си и C++ . Курсы по этим языкам вы также можете найти на нашем сайте.

Стоимость использования

Godot Engine является полностью бесплатным игровым движком. Можно сразу сказать, что и Unity и Unreal тоже предлагают бесплатно свои движки, но есть существенная разница. Они оба предлагают бесплатно движки до определённого момента. В Unity цена стартует от 100 долларов за версию Pro и вам придется платить эту цену, если ваши игры приносят более 100 тысяч долларов в год. В Unreal нужно платить определенный процент от прибыли если вы привесили сумму дохода в размере 1 млн долларов.

Простое написание кода

Godot схож с движком GameMaker в плане простоты написания кода. GameMaker заявляет что он движок, на котором можно делать игры без знания программирования, что отчасти является правдой, а отчасти нет, ведь программирование может и не нужно знать, но вот методы что используются внутри движка знать нужно.

Godot – это один из простейших игровых движков в плане написания кода. И если сравнивать с GameMaker, то нужно выделить большую разницу между ними. GameMaker позволяет создать лишь 2Д проекты, а Godot может позволит вам создать как 2D, так и 3D проект.

План курса

В ходе курса мы с вами с нуля разработаем несколько полноценных игр на основе игрового движка Godot Engine. Мы будем создавать как 2Д проекты, так и 3Д проекты. К концу курса «Уроки Godot Engine для новичков с нуля» у вас будут достаточно хорошие навыки в создании проектов на основе данного движка.

Дополнительный курс

На нашем сайте также есть углубленный курс по изучению игрового движка Unity . В ходе огромной программы вы изучите не только движок Unity, но также научитесь писать консольные и интерфейсные программы на языке C#. Также вы изучите сам движок Unity, включая создание 2D и 3D игр, а также игр и приложений с дополненной реальностью.

Задание к уроку

Ответьте на несколько вопросов:

  1. Какая стоимость использования Godot?
  2. Какой язык используется в движке?
  3. Возможна ли разработка 3Д проектов с мультиплеером?

Языки скрипта¶

В этом уроке вы получите обзор доступных языков скриптов в Godot. Вы узнаете о плюсах и минусах каждого варианта. В следующей части вы напишете свой первый скрипт, используя GDScript.

Скрипты присоединяются к узлу и расширяют его поведение. Это означает, что скрипты наследуют все функции и свойства узла, к которому они присоединяются.

Например, возьмем игру, в которой узел Camera2D следует за кораблем. По умолчанию узел Camera2D следует за своим родителем. Представьте, что вы хотите, чтобы камера дрожала, когда игрок получает урон. Поскольку эта функция не встроена в Godot, вы должны написать скрипт дрожания камеры и прикрепить его к Camera2D.

Доступные языки скрипта¶

Godot предлагает для работы пять языков программирования: GDScript, C#, VisualScript, а также C++ и C при использовании технологии GDNative. Есть и другие поддерживаемые сообществом языки , но официальные только эти пять.

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

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

` В Godot 4.0 из ядра будет убрана поддержка VisualScript.`__Так, создание новых проектов с использованием визуального программирования не рекомендуется. В будущем VisualScript может быть интегрирован в Godot 4.x только как расширение.

Пока что Godot 3.x поддерживает VisualScript, но рекомендуется использовать GDScript , особенно если планируется дальнейший переход проекта на Godot 4.

Какой из них мне следует использовать?¶

Если вы новичок, мы рекомендуем начать с GDScript. Мы создали этот язык специально для Godot и нужд разработчиков. Он имеет лёгкий и простой синтаксис и предоставляет наиболее плотную интеграцию с Godot.

../../_images/scripting_gdscript.png

Для 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# является любимцем среди разработчиков игр, мы добавили официальную поддержку для него. C# — это сформировавшийся и гибкий язык с огромным количеством готовых библиотек, для него написанных. Его поддержка была добавлена благодаря щедрому пожертвованию от Microsoft.

../../_images/scripting_csharp.png

C# предлагает превосходный компромисс между производительностью и простотой использования, но вы должны помнить о его сборщике мусора.

Вы должны использовать версию Mono редактора Godot, чтобы писать на C#. Вы можете загрузить его на странице загрузки.

Поскольку Godot использует среду выполнения Mono.NET, теоретически любая сторонняя библиотека .NET или программная платформа может использоваться для написания скриптов в Godot, так же как любой CLR-совместимый язык программирования, такой как F#, Boo или ClojureCLR. Однако, на практике C# является единственным официально поддерживаемым .NET вариантом.

Код на GDScript выполняется не так быстро, как скомпилированный С++ или C#. Однако, большинство кода вызывает функции внутри движка, написанные на C++ с использованием быстрых алгоритмов. В большинстве случаев, при написании игровой логики, между языками GDScript, C#, или C++ нет значительного отличия в производительности.

VisualScript (Визуальный скриптинг)¶

` В Godot 4.0 из ядра будет убрана поддержка VisualScript.`__Так, создание новых проектов с использованием визуального программирования не рекомендуется. В будущем VisualScript может быть интегрирован в Godot 4.x только как расширение.

Пока что Godot 3.x поддерживает VisualScript, но рекомендуется использовать GDScript , особенно если планируется дальнейший переход проекта на Godot 4.

Визуальный Сценарий — это визуальный язык программирования на основе блоков, в котором вы эти блоки соединяете в логику. Это может быть отличным инструментом для людей, далеких от программирования, таких как игровые дизайнеры и художники.

../../_images/scripting_visualscript.png

Вы можете использовать другие языки для создания блоков, уникальных для вашей игры. Например: для создания ИИ, квестов или диалогов. В этом и есть сила VisualScript.

Хоть это и предоставляет все необходимые базовые блоки для создания полноценной игры, мы не рекомендуем использовать VisualScript таким образом. Так как он медленней чем другие языки программирования.

C и C++ через GDNative¶

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

../../_images/scripting_cpp.png

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

GDNative будет лучшим выбором для производительности, но не обязательно использовать его во всей игре. Другие части могут быть написаны на GDScript, C# или VisualScript.

Во время работы с GDNative, доступные типы, функции, и свойства очень близки к API C++ движка Godot.

Подведение итогов¶

Скрипты ‐ это файлы, содержащие код, которые вы прикрепляете к узлу, для расширения его функционала.

Godot официально поддерживает пять языков для написания скриптов, предоставляя гибкий выбор между удобством и производительностью.

Вы можете смешивать языки, например, для создания ресурсоёмких алгоритмов на C или C++, а для всей остальной игровой логики использовать GDScript или C#.

© Copyright 2014-present Juan Linietsky, Ariel Manzur and the Godot community (CC-BY 3.0). Revision 8532774c .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *