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 и подобное.
Но это мелочи организации. Общее впечатление положительное.
А идея с рабочими местами - так просто бомба.
Комментарии
Отправить комментарий