avatar
4 дня назад

Почему Game Maker?

Хороший вопрос задали в комментариях насчёт выбора игрового движка. Для этого пробегусь по своей субъективной истории осваивания инструментария игро-разработчиков.

image
***

До 12 лет мой геймдев сводился к рисункам в тетрадках в клеточку. Идея была не моя, а моего друга, который предложил завести тетрадку, чтобы вместе придумывать игры. Мне тогда было 8 лет, а из аналогово-цифровых развлечений - только денди и сега у друзей.  Из-за ещё не сформировавшегося самостоятельного сознания эти рисунки в тетрадках были копипастой того, во что я играл в то время: Commander Keen, Carmageddon, Megaman.

Немногое из того что осталось. Планировалось, что это будет великая игра как Megaman только круче. С множеством планет, боссов на них и т.д. И весить она должна была несколько гигабайт. Конечно, в 2000-ом году сложно было представить, что в 2025-ом любой ААА проект отожрёт с SSD полсотни-сотку.
Немногое из того что осталось. Планировалось, что это будет великая игра как Megaman только круче. С множеством планет, боссов на них и т.д. И весить она должна была несколько гигабайт. Конечно, в 2000-ом году сложно было представить, что в 2025-ом любой ААА проект отожрёт с SSD полсотни-сотку.

Я рос и верил, что когда-нибудь моя тетрадная живопись станет реальной игрой. К слову, ни одну игру из тетрадки я так и не реализовал. Да и полностью я всего одну такую тетрадную игру осилил. Занимаясь геймдевом на бумаге, точно так же сложно довести работу до конца, как и пользуясь игровыми движками.

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

***

С 12 лет я начал осваивать программирование на Turbo Pascal. У меня отлично получалось понимать алгоритмы и писать программы.

Я пытался реализовать на низком уровне многие технические аспекты для игр, такие как вывод спрайтов, анимации спрайтов, биглуп и т.д. У меня была всего одна книга и знаний катастрофически не хватало. Как-то купил диск Dark Basic, на котором было много ассетов, которые я не имел понятия как открывать. Так же я не понимал где мне брать этот самый Dark Basic или хотя бы обычный Basic.

Доступный интернет в России только начинал зарождаться и стоил дорого...

Моей первой и единственной игрой на паскале стал какой-то математический тетрис, в котором нужно было собирать правильные примеры из падающих сверху кубиков с цифрами и математическими знаками. Эта игра была и моим выпускным проектом по информатике.

Поступив в колледж информатики я изучил множество других языков. В основном, это был C++, а позже и C#. В то же время началось моё становление как веб-разработчика. Прокачивался по PHP, MySQL, CSS, HTML - на это тогда была мода.

***

Первое знакомство состоялось лет в 14 (2002-2003 года) версия 5.3 А. Случайно наткнулся на свалке GBA и PSX ромов игр, которыми я тогда увлекался. А самая первая игра - танчики, которые никто кроме меня и моего брата не видел. От них ничего не осталось, увы.

Я тогда ещё не понимал насколько крут был этот инструмент, освобождавший разработчика от рутины. Из альтернатив на тот момент был только Games Factory и Macromedia Flash с AS2. Всё остальное что было мне доступно - какие-то библиотеки для точечных задач.

Интерфейс старой версии Game Maker 5.3, с которой началось моё знакомство с инструментом
Интерфейс старой версии Game Maker 5.3, с которой началось моё знакомство с инструментом

Считаю, что автор Game Maker-а, Марк Овермарс - непризнанный гений своего времени, т.к. именно он один из первых положил в основу своего инструмента концепцию all-in-one, которая сейчас используется в современных движках. То, что выгодно отличало Game Maker от немногочисленных конкурентов - это комьюнити, люди делились друг с другом созданными играми, мотивируя новичков осваивать этот инструмент.

Время шло, я всё ещё пытался копировать нравившиеся мне игры - Megaman и Metroid. В 2008-ом году я начал получать среднее специальное образование. Моё сознание поменялось, и отношение к играм - тоже. Мне хотелось создавать свои миры - это желание до сих пор поддерживает во мне страсть к геймдеву. Так я перешёл от мегаменов и метроидов к более уникальным концептам и родилась игра Tower Bombarde.

В 2010-ом году я нашёл для себя сайт gamin.me на котором поселился очень надолго. По сей день туда заглядываю и участвую в конкурсах. Течение инди только-только начало зарождаться. Примерно в это же время появился Unity, о ней я узнал с популярного в то время сайта инди-поделок Game Jolt. В топах очень долго висла игра, сделанная на Unity - небольшая поделка про схематичного синего человечка, который умел менять размер, что использовалось для преодоления препятствий. Но в то время я не счёл Unity серьёзным инструментарием, чтобы попробовать и забил.

Тем временем, Game Maker не стоял на месте. Инструмент развивался и обрастал новыми фичами. Уже вышел Game Maker 8.1 сменив владельца на 7-ой версии. Теперь движок разрабатывал не Марк, а группа разработчиков YoYo Games.

Подводя итог по Game Maker, вот ключевые фичи, которые мне тогда понравились:

  • Менеджмент ресурсов - они были сразу категоризированы, можно было группировать в рамках одной категории, удобно копировать и редактировать. Спрайты сразу были спрайтами, а не набором файлов.
  • Визуальный редактор параметров для разных типов ресурсов. Можно было настраивать скорость анимации спрайтов и их origin прямо в редакторе. Добавлять объекты на сцену можно было тут же не отходя от кассы.
  • Менеджмент объектов и событий - я до сих пор считаю это киллерфичей движка. Объекты открывают отдельным окном и у каждого показывается список событий. Сам способ проектирования игры в Game Maker - это создание сущностей и настраивание поведения. Это визуально сразу понятно, тратится очень мало времени чтобы поменять контекст между разными сущностями.
  • Язык скриптового программирования GML - внебрачный сын Си и Дельфи. Позволял писать в разных нотациях и не ставить точки с запятыми. Это делало его очень удобным для освоения. Ну и отсутствие типизации как в JavaScript,
***

В 2012-ом году я решил покорять рынок Flash игр чтобы "поднять бабла". В то время были только Шароварки, выпускаемые Алавар и Невософт. Но это были игры с казуальной графикой, которую я по скилам в то время не тянул. Иронично, что офис Алавар находился примерно в 1км от моего дома и через дорогу от того места, где я проработал первые 10 лет своей карьеры. В офисе Алавар я не был при этом ни разу =)

image

А рынок флеш игр был прибыльным. По словам разработчиков спонсоры заталкивали пачки с деньгами в рты разработчиков  лишь бы заполучить игрульку на свой флеш-портал, которые тогда были дико популярными (конгрегейт, арморгейм, адултсвим - вот это вот всё). Соблазнился тем, что читал много историй, как простенькая игра с говнографеном срубала тысячи баксов.

Но была проблема, AS3 - это не движок, и тем более не IDE, а фреймворк, т.е. библиотека уже написанного функционала, который покрывает только часть технических задач геймдева. А остальную часть пиши сам ¯\_(ツ)_/¯

Однако в то время был веб-движок Stancyl, который умел билдить игры на Flash. Сейчас он тоже есть, но уже без AS3, вроде на HTML5 билдит. Основная идея была очень похожа на Game Maker и я попробовал собрать игру DataFlow там. Итог моих трудов дичайшим образом тормозил... Но деньги пахнул, так что я решил с наскока изучить AS3 и пересобрать игру на него.

Взял Flashdevelop и фреймворк Flixel и тут начались мои страдания.

Трейлер игры DataFlow, сделанной на AS3

То, что в Game Maker решалось в один клик - мне нужно было писать десяток-сотню строк кода. Вроде бы Flixel был для игр заточен, но каких-то базовых решений, к которым я привык в GameMaker - там не было. Работа с камерами отвратительная, с глобалами - через костыли, даже чтобы сделать автоскролинг фона - это всё делается руками.

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

Были и плохая документация с кучей пробелов и несоответствий.

image

Тем не менее, я сделал Dataflow и ещё одну игру про стотонную лягушку. Мэтчинга со спонсорами на FGL не случилось и я просто забил на это. Решил, что не стоит тратить время на написание фич, которые уже и так давно есть в Game Maker. А ещё у меня было юношеское заблуждение, что мои великие игры кому-то нужны.

***

В 2012-ом я увидел игру Rochard в Steam. С большим удивлением обнаружил, что она сделана на Unity и захотел так же.

image

До этого я уже пытался делать 3Д игры на Game Maker, но там настолько убогое 3Д, что я быстро бросил попытки его нормально освоить.

Проектом, который я хотел сделать на юнити стала игра Megabot. Именно здесь я начал своё знакомство с новым движком. Отсмотрев примерно 15 часов видеоуроков и вооружившись документацией, приступил к делу.

В целом, я нашёл Unity очень похожей на Game Maker в плане общих концептов, поэтому освоение шло просто и легко. Непросто шло освоение 3Д моделирования. Я так и не научился нормальному UV текстурированию и выкручивался дефолтными настройками планарных, сферических и кубических проекций.

Megabot 3D, для которого было сделано всего 3 уровня из 10.

Тогда уже вышла первая Game Maker Studio, именно с ней я сравнивал Unity когда осваивал новый для себя движок.

Мне очень понравилась концепция префабов, которой в Game Maker тогда ещё не было. В общих чертах - это возможность создать настроенный экземпляр объекта, а потом менять ему отдельные свойства. Так можно было настраивать поведение противников, например чтобы один летал по горизонтали, а другой - по вертикали.

Редактирование сцен в Unity было гораздо удобнее, чем редактирование комнат в Game Maker. Менеджмент ресурсов приемлемый, если и хуже, то ненамного.

Понравилось, что есть нативный экспорт на различные платформы без поднятия виртуалок(как нужно делать при работе с Game Maker).

Так же я заценил концепцию компонентов, которой в Game Maker не было, нету и не будет. Реально игру собираешь как конструктор. Этим Unity сильно подкупал. Но были и недостатки, касательно написания кода.

Титульник игры Mind Trap в редакторе Unity
Титульник игры Mind Trap в редакторе Unity

Мне очень не нравилось, что скрипты хранились отдельно в виде портянки обработчиков событий и подцеплялись к объекту по мере надобности. По моему опыту, скрипты описывающие индивидуальное поведение всегда относились к одному объекту. И в том плане в Game Maker была понятная логика прикрепления событий к конкретным объектам. Для тех редких случаев когда требовалось описать общее поведение - были отдельные скрипты, так же как в Unity.

А ещё мне очень не понравилась в Unity концепция с deltaTime. Любая вычисляемая формула для геймплея всегда имела этот множитель, что раздражало. В  Game Maker фиксированный FPS. Чётко 30 (теперь и 60) кадров в секунду. В целом, работа со временем в Game Maker была организована лучше. Есть встроенные таймеры и их обработчики в виде событий. Я уже привык мыслить гейм-тиками: 1 секунда - это 30 тиков. Написание таймеров через функции системного времени казалось мне дичью и каменным веком. Но только такое решение я видел в официальной документации.

Можете закидать меня помидорами, но я вообще противник концепции deltaTime, т.к. при попусках кадров любая экшн-игра превращается в неиграбельное говно. В Game Maker играх при тормозах просто замедляется время, что гораздо лучше на мой взгляд чем frame drop-ы. Хотя такого быть не должно и нужно оптимизировать игру чтобы она стабильно работала в 30/60 FPS без пропусков.

image

Я сделал на Юнити 3 игры и в работе было 4 прототипа. На тот момент Unity нравилась, но что же пошло не так? В версии 4 они убрали JavaScript, на котором были написаны все мои проекты. Учитывая, что я не люблю C#, переписывать проекты на него не стал. По сути я всё бросил. Вообще всё, примерно на полгода. Не играл и ничего не делал. Но это другая история.

За полгода я остыл и вернулся к Game Maker.

***

Это альтернатива Game Maker появилась в 2012-ом году. Как раз когда я пробовал другие движки. И этот я тоже хотел попробовать, тем более его рекламировали как движок в котором вообще не нужно программировать.

Но у меня просто не сложилось - он крашился на старте. Я изучил, какие игры были сделаны на Construct. Увы, они не блистали производительностью. Хотя уже позже тот же Iconoclasts - дитя Construct Classic. Как сказал автор игры Konjak - пробовал Game Maker и он показался ему слишком сложным. Он то художник, а там какой-то код нужно было писать. Прекрасная иллюстрация того, как на непригодном казалось бы движке делаются хорошие игры.

image

Потом вышел Construct 3, который часто прям нахваливают, отмечая мега-производительность. Но я не знаю примеров успешных проектов на этом движке, потому не стал пробовать.

***

В 2017-ом году вышла новая студия и это был фурор. Настоящий прорыв для движка.

Из ключевого:

  • переделан редактор комнат со слоями
  • новая тайловая система + автотайлинг + анимированные тайлы
  • аудиомикшер для тестирования звука
  • поддержка экспорта на консоли
  • воркспейсы
  • много quality of life мелочей

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

Современный интерфейс GMS отображения объекта, событий и обработчиков
Современный интерфейс GMS отображения объекта, событий и обработчиков

В 2019-ом году я вышел в самиздат на XBOX при помощи UWP расширения и не без помощи одного моего хорошего знакомого за что ему по сей день признателен и благодарен. Если бы не СВО, я бы давно заказал себе девкиты и издавал игры на различные платформы сам: XBOX, PS, Switch. Всё это GameMaker поддерживает практически из коробки.

Первая игра на XBOX, она же потом была релизнута на Switch и PS4. Сейчас снята с продаж из-за отвратительного поведения зарубежных компаний. С сентября прошлого года доступна только в Steam бесплатно.

В 2020-ом году в движок завезли новый функционал для скриптинга из-за чего GML стал прям очень сильно походить на Javascript, Добавили структуры, функции и кастомные объекты - по сути тот функционал за отсутствие которого движок часто хейтили НАСТОЯЩИЕ программисты. С тех пор у таких программистов не осталось нормальной аргументации почему Game Maker не стоит выбирать для геймдева.

Сейчас в 2025-ом пробуют внедрить новый редактор кода. Он заменяет систему окон объекта и вываливает весь код единой портянкой. Да-да, то самое за что я не люблю юнити и фреймворки. Отображение обработчиков событий - всегда было самой сильной стороной движка. В той же Unity как раз не хватает краткой сводки по объектам.

***

В 2018-ом в рамках фултайм-работы я пробовал изучать HTML5 движки. Начал ковырять популярный на тот момент фазер. Сделал небольшой скроллер про Икара на один из Ludum Dare. Он летит над водой и у него плавятся крылья. Нужно не ловить камни и собирать облака.

Мои первые потуги рисования не пиксель-арта - поэтому так отвратительно.
Мои первые потуги рисования не пиксель-арта - поэтому так отвратительно.

Но даже такого небольшого опыта мне хватило чтобы понять, что это тот же Flixel только в профиль. А тот экспиренс 2012-го года мне очень сильно не понравился.

***

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

Во втором разделе данного поста я уже упоминал, что занимаюсь веб-программированием( фронт и бэк). Конечно, я пытался это использовать в своих проектах. Первое успешное применение таких навыков - создание онлайн-базы уровней для игры Sig.NULL. В левелдизайне принял участие разработчик Arrogant Gamer, автор прототипа-предшественника игры signal на PuzzleScript. Таким образом, через базу мы могли легко шарить друг другу уровни прямо в редакторе и проверять их.

Следующая попытка применить web-технологии была в одном из участий на Ludum Dare. Предыстория такова: я в то время работал над мобильными играми в небольшой компании и мне понравилась одна идея гейм-лупа, которую я хотел реализовать. Эту идею прекрасно иллюстрирует игра King of Thieves.

image

У игрока есть база, которую он развивает, чтобы добывать ресурсы. Но чтобы добывать основной ресурс - он ходит на базы конкурентов и отжимает их. То есть тут ещё и задача построить свою защиту.

Игру делал на всё том же GameMaker с бэком на PHP + MySQL.

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

image

Позже, в другом конкурсе, сроком на 3 недели, я решил сделать простенькую роглайк игру в жанре point&click. Игрок  влачил своё существование в катакомбах, играя за сундук-мимика. Пожирая забредших в подземелья героев. В общем, отыгрыш плохого парня. Я реализовал очень мало, и с кучей багов. Счёл свой веб-движок бесперспективным и запланировал когда-нибудь вернуться к нему и переписать на том же Game Maker, например.

Единственная моя "успешно законченная игра" написанная на чистом JS - это Do you have the color? Одно из моих участий в Ludum Dare на тему "Чем у тебя больше, тем хуже". Игроку нужно искать в своей палитре предложенный игрой цвет за ограниченное время.

***

Долгое время я не прикасался к движку, т.к. думал, что мои проекты потеряны. Когда я пытался перейти с 3.5 на 4, все проекты в новой версии похерились.

3Д версия игры Zzzz-Zzzz-Zzzz
3Д версия игры Zzzz-Zzzz-Zzzz

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

Чуть меньше года назад я таки смог открыть свои проекты в старой версии Юнити. Всё оказалось настолько тупо... А меня подвели свои же стереотипы. Я привык, что во многих движках есть файл проекта, который нужно открыть. И каждый раз когда я пытался вернуться к играм на юнити при поыптке открыть проект - я захожу в папку проекта и не вижу там никаких главных файлов. ОКАЗЫАЕТСЯ, сама папка является проектом, но движок почему-то не распознаёт её как проект Unity.

Эту игру Reality Control я так и не доделал. И это неплохо, кому нужен очередной симулятор ходьбы?
Эту игру Reality Control я так и не доделал. И это неплохо, кому нужен очередной симулятор ходьбы?

Так что теперь я могу открыть свои старые проекты, но желания ими заниматься у меня нет. Хотя жалко, конечно. Проект Megabot 3D мне прям очень нравился.

Несколько раз я задумывался над тем, чтобы сделать на Unity какую-то новую игру. Но меня всегда останавливает отсутствие скила моделировать, а километровые портянки кода вызывают вьетнамские флешбеки. Я просто умру при создании 3Д контента. Возможно, лет через 5, когда нейронки смогут легко создавать 3Д модели... я вернусь к этим размышлениям.

***

В последние пару-тройку лет ещё один движок стал набирать популярность. Конечно же мне стало интересно, что он из себя представляет. Стал смотреть уроки и пробовать что-то сделать... И ужаснулся.

Никогда не встречал настолько неинтуитивно неорганизованный движок. Функционал для одной и той же задачи раскидан по множеству мест. Попапы, которые вызывают попапы... Я от такого уже отвык.

Как итог я не смог осилить даже базовые видеоуроки.

Так же неоднократно встречал информацию, что новая версия движка Godot 4 хуже, чем Godot 3. Есть о том чтобы подумать почему не стоит выбирать этот движок для своих проектов. Может быть побаловаться на короткосрочных конкурсах и можно, но для долгостроя я бы выбирать его точно не стал.

***

На мой взгляд, Game Maker - лучший инструмент для создания 2Д игр в соло на данный момент.

  • Отличный менеджмент ресурсов
  • Наглядное отображение объектов и их событий
  • Хороший встроенный редактор комнат
  • Широкие возможности скриптового языка, очень похожего на JavaScript
  • Поддержка кросс-платформенной компиляции
  • Отличная обратная совместимость, т.е. протащить проект даже с версии Game Maker 7 до современной не составит особого труда. Движок сам перепишет большую часть кода.

Из минусов только платная лицензия. И для 3Д игр движок не годится совершенно. Некоторые студии  (авторы моего любимого Hyperlight Drifter) придерживаются мнения, что для больших проектов он тоже не годится.

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

Unity - тоже хороший движок, но для создания 3Д игр. Здесь немного обратная ситуация: создание 2Д игры на юнити - примерно такого же уровня геморрой, как и создание 3д игры на Game Maker. В остальном:

  • Классная система компонент и префабов
  • Нормальный менеджмент ресурсов
  • Лайв-редактор сцен
  • Хорошая кастомная расширяемость
  • Поддержка кроссплатформенности

Ещё у юнити есть два больших минуса:

  • Мы прекрасно помним экономические финты, которые Unity учудила пару лет назад.
  • Плохая обратная совместимость. Интернет кишит историями про то, как ломаются проекты после обновления версии Unity. А это проблема для долгостроев и поддержки релизнутых игр.

Так что я сильно подумаю делать ли на Unity хоть что-то.

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

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

Итого, в последние почти 10 лет я делаю игры на Game Maker потому что:

  • Я делаю 2Д игры. В 3Д игры мне сложно играть из-за проблем с вестибулярным аппаратом. Делать 2Д игры на Юнити считаю извращением.
  • Мне не нравится C# в юнити, в т.ч. из-за сильной типизации. Знаю, что многие ТРУ-спецы со мной не согласятся, но я больше ценю простоту читаемости кода без синтаксического мусора. Именно поэтому, кстати, в WEB-разработке я предпочитаю PUG и SASS.
  • Я считаю менеджмент событий в Game Maker лучшим UX-ом, который был реализован в подобных IDE. Классно видеть всё визуально, а не скрллить бесконечные портянки кода.
***

Спасибо что осилили это чтиво! А если вы до сюда просто доскролили - зачем было открывать этот пост?

34
2
34комментария