Godot C# путь инди от программиста авантюриста.

Доброго времени суток, народ. Я давно хотел разрабатывать игры, но всё откладывал в долгий ящик. Идея начать этим заниматься тлела во мне 18 лет. Наконец-то руки дошли, и я стал достаточно зрелым, чтобы заняться подобной авантюрой.

Уже около года я занимаюсь изучением gamedev-темы и много успел понять. Определённый бэкграунд у меня сложился, который позволил мне разработать свою первую небольшую игру.

Но обо всём по порядку.

Выбор движка

На текущий момент я попробовал поверхностно разные движки, пока пытался определиться с выбором. Я пробовал UE5 и Unity, но в итоге остановился на Godot.

Думаю, стоит пояснить, почему именно Godot.

UE5

C UE5, я понял, что это движок для сильной команды. Разработка на Blueprints меня мало привлекает. Работать с C++ я пробовал, но оказался сильно разбалован веб-разработкой, чтобы заниматься ручным управлением памятью. Плюс падение движка и потеря не сохранённого прогресса из-за ошибки C++ поставили точку на моих потугах.

Движок много весит и тяжело поднимается, build-ы большие для мобильной разработки, а реализация 2D — эмуляция в 3D. Вывод напрашивался сам собой: движок хорош для большой команды с хорошим бюджетом, создающей AAA-проекты с упором в реализм.

Для одного человека, желающего найти работу в gamedev, — отличный выбор, много вакансий и хорошие ценники.

Идём дальше.

Unity

Unity — отличный движок для разработки средних и мелких проектов. Достаточно понятный внутри, использует C# и имеет хорошую фан-базу. Это значит, что с гайдами и видеоуроками проблем не возникнет.

Поддерживает ECS-архитектуру для разработки, что в целом очень классно, так как эта архитектура буквально предназначена для игр.

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

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

Благодаря Unity я получил определённый уровень негатива, что вышибло меня на несколько недель из колеи. Нужно было найти что-то похожее, то, что будет использовать C# (так как мне он очень понравился как компромиссный вариант), ведь я уже на тот момент неплохо подучил его, и было бы обидно не использовать полученный опыт.

И вот я наткнулся на Godot.

Godot

Движок сначала отпугнул меня, ибо система сцен казалась чем-то «не ок» после полученного опыта с Unity. Поработав с ним пару дней, я забросил это дело и, навалив ещё больше негатива после ухода с Unity, пошёл думать, что делать дальше.

Раздумья ни к чему не привели. Я решил вернуться к Godot и заставить себя перенести наработки с Unity, которые я успел сделать.

К моему удивлению, переход был достаточно простым. На тот момент я изучал NavMesh и пытался заставить Mixamo-персонажа начать бегать по клику мыши ( что на Unity было готово ).

Это достаточно быстро у меня получилось. Оказалось, работа со сценами достаточно интересно сделана. Godot построен на базе наследования — это, конечно, сложно отнести к плюсам, так как повсеместно используется композиционный подход (SOLID, GRASP). Но в защиту можно сказать, что система сцен интуитивно понятна и как новичку мне зашла на ура после того, как я понял, как с ней работать ( Node в Godot - это кирпичик, из которого можно собрать сложный объект ).

С поддержкой C# я особых проблем пока не заметил. Все функции, заложенные в родной язык GDScript, дублированы в C#. Единственное отличие от GDScript — это CamelCase вместо kebab_case, ну прочие мелочи. Код, написанный для GDScript, легко можно перенести в C#.

В остальном всё то же самое: те же хуки жизненного цикла, только вместо FixedUpdate — _PhysicsProcess, вместо Awake — _Ready и так далее.

Что касается сцен, то каждая сцена по сути MonoBehaviour.

Итог: да, движок моложе и поддерживается небольшой командой; да, есть свои особенности в том, что больше требуется делать руками, так как меньше «сахара»; есть проблемы с импортом в HTML у 4 версии, связанные с .NET. Но благодаря странному поведению верхушки Unity у Godot добавилось спонсоров, и в рядах комьюнити пополнение.

Думаю, у движка есть будущее, так как он полностью бесплатен и является open-source-проектом (кстати, прослеживается некая интеграция с Blender 3D).

На текущий момент есть рост количества игр на этом движке, так же как и вакансий. Для старта в gamedev он подходит идеально, как по мне. Прост в освоении, имеет поддержку C#, достаточно хорошую документацию, доступную прямо из редактора движка, и весит около 80 МБ.

Я интегрировал его с VS 2022 и использую полноценно диагностику ресурсов, что очень удобно, как и точки останова.

Как я уже говорил, я создал небольшой runner на этом движке. Поиграть в него можно, скачав по ссылке с моего ТГ-канала здесь ( в закрепе ). Сейчас я веду разработку tower defense и продолжаю изучать движок и C#.

Большое спасибо за внимание и успехов в разработке! Не бойтесь браться за что-то новое!

13
2
21 комментарий