GameMaker vs Unity - сравнение после 5 лет на Unity и 3х месяцев на гейммекере

 Программирование на Unity оказалось очень интересным. 

Создавать игру было забавно, постоянно открывая новые возможности. Но постоянно подтачивал червячок - приходится платить $25 чисто за то, чтобы не показывался сплеш и чёрную тему.

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

Сейчас Unity поставляется с чёрной версией среды для всех с 2020го. И это большой шаг вперёд, связанный с тем, что Godot и Unreal предоставляют его по умолчанию.


Мой опыт в Unity был связан с разработкой игры BoomTris. Позже перешёл в Nekki и работал над Shadow Fight 3. 

А также делал мелкие проекты для фриланса. 


И могу сказать - для быстрого создания проекта - Unity самое то. 


Только надо отдавать себе отчёт, что проблем много с базовым способом создания игр в этом движке. 

Он способствует не очень хорошим практикам программирования. Но с помощью [SerializeField] можно уже меньше беспокоиться о том, чтобы всё поля были Public.


И вот, после стольких лет на Unity решил поискать себе другой движок. 

Причина простая - устал платить за тёмную тему (даже смирился с заставкой - Made In Unity), и постоянно проект падал.

Отсылка проекта не помогла (и каждый раз 5ГиБ проект пересылать тоже утомительно). 

В общем - просто всё сложилось в кучу и настал момент истины - надо искать новый движок.


Попробовал Godot и Defold - отличные движки. Но для моего не очень подвижного разума они оказались сложными. 

Приходилось полностью подстраиваться под новое мышление.

Defold - замечательный, быстрый и бесплатный (как и Godot), но модель URL-ов всё никак не складывалась в голове. И столкнулся с тем, что метапрограммирование на луа немного сложнее отлаживать, чем представлял.

В общем - для простых мобильных проектов без сложной архитектуры - самое то.

Процедурная генерация уже начала вызывать вопросы.


Посмотрел в сторону Godot - очень хорош. Даже пару мелких игр для себя наклепал, чтобы привыкнуть к нему.

Но сказалась моя нелюбовь к питону (а основной язык - GDScript прямо очень похож на питон)

И очень странное управление событиями - напрямую и через сигналы.

И если сделаешь сцену сильно глубокой - тоже будет сложно в ней разобраться.

Модульность и ООП в помощь, но лишний груз сильно тормозил разработку.

Даже после прочитанных книг понимание пришло не сразу. И понял - слишком много трения для разработки.


После многих поисков (а движков я перепробовал очень много), остановился на GameMaker. 

Сначала купил первую версию, но потом решил перейти на вторую версию.

Оказалось не прогадал - лёгкость создания и C-подобный язык очень помогли разобраться с созданием игр.

А идея Workspace (которую применял когда-то при проектировании) - теперь была доступна сразу.

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

Пришлось немного подучить и понять его динамическую структуру (GMScript), и понять идею контекста выполнения (немного отличается от того, что привык видеть).


Но в целом - движок просто замечательный. Работает быстро (на удивление), работать легко.

И самое главное - убирает излишнюю сложность, которая грузом лежит на мышлении и мешает отлаживаться.


Как итог - могу сказать, что Unity идеален для мобилок и небольших игр с командой 3-30 человек. 

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

Причём перенос - самое адское что я видел в разработке. Старые компоненты отваливаются, и подчастую авторы перестают их поддерживать и обновлять. 

Приходится писать костыли.

После изменения в 2018.3 так вообще - замечательная вещь - вложенные префабы - поломали мне игру полностью.

С физической моделью тоже беда. 

Вижу - в NeonAbyss они тоже на ранних этапах с ней боролись (сундуки и коробки ползали и выравнивались, потому что физика считалась неверно) - это была моя беда и в BoomTris - приходилось костылить включение, отключение физики сенсорами.

Отладка событийных приложений (а я применил шаблон "подписки") оказалась очень сложной.

Определить кто послал сообщение и отловить, плюс асинхронность - приводила к постоянным "гейзенбагам".


В общем - архитектурный подход к игре сыграл со мной злую шутку.

После долгих месяцев отладки понял - надо всё переписывать. И отдохнуть от Unity.

Возможно, я его неправильно готовил)


После того как начал делать на ГМС пару раз переписывал, чтобы понять как он вообще работает.

И оказалось - всё очень просто. 

Только до этого просто месяц доходил) 

Движок GameMaker 2 многое делает за тебя. А урезанный масштаб (только 2д игры) - очень облегчает программирование.

Сейчас добавили и модули, структуры и функции, так что и про-программисты смогут там найти что-нибудь полезное.

У ГМС оказался один плюс - можно в стиме указать какую версию тебе надо, и на нём остановиться. Также движок на виртуальной машине и рантайм тоже можно выбрать.

Это важно, потому что надо остановиться на последней стабильной версии движка, чтобы не воевать на два фронта - с задачей и с движком.

В Unity появились LTS версии тоже, что в купе с чёрным интерфейсом потихоньку опять продаёт её мне обратно. 

Но пока я помню те мучения, через которые перешёл, уже не так ведусь на красивые фичи, что они добавляют.


К Unity нужна команда (а часто и менеджеры), чтобы сделать игру, пройдя через тернии, работая вокруг его проблем, которые с трудом чинят.

Результат получится хорошим.


Но, как сказал Джон Блоу в конференции перед китайскими разработчиками игр в 2019: "Вам не нужен Unity - вы можете сделать всё сами"

Также он часто упоминал "трение при разработке", что связано с движком или фреймворком.


Создание своего движка пока у меня на втором плане (делал несколько на OpenGL + Delphi, QBasic/FreeBasic, C#/SDL). Слишком много работы надо проделать.

А когда ты занимаешься игрой 1-2 часа в день, это может затянуться на долгие годы.

Хотя, смотря на 4 года назад, за это время уже бы вырос готовый движок :)

Но получил знание о Unity и куда надо двигаться.


GameMaker пока радует своей простотой. Доделаю игру на нём и расскажу что встретил по пути и как обошёл проблемы с ним.


Пока одна проблема - что видел - модульность. Приходится называть функции (или скрипты до 2.3) EnemyShip_Prepare_Towers и подобное.

Но это мелочи организации. Общее впечатление положительное.

А идея с рабочими местами - так просто бомба.

Комментарии

Популярные сообщения