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

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

Я рос и верил, что когда-нибудь моя тетрадная живопись станет реальной игрой. К слову, ни одну игру из тетрадки я так и не реализовал. Да и полностью я всего одну такую тетрадную игру осилил. Занимаясь геймдевом на бумаге, точно так же сложно довести работу до конца, как и пользуясь игровыми движками.
Когда я таки начал изучать программирование и до меня дошли масштабы проблемы... Я всё равно не сдался, ведь было очень интересно.
С 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-а, Марк Овермарс - непризнанный гений своего времени, т.к. именно он один из первых положил в основу своего инструмента концепцию 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 лет своей карьеры. В офисе Алавар я не был при этом ни разу =)

А рынок флеш игр был прибыльным. По словам разработчиков спонсоры заталкивали пачки с деньгами в рты разработчиков лишь бы заполучить игрульку на свой флеш-портал, которые тогда были дико популярными (конгрегейт, арморгейм, адултсвим - вот это вот всё). Соблазнился тем, что читал много историй, как простенькая игра с говнографеном срубала тысячи баксов.
Но была проблема, AS3 - это не движок, и тем более не IDE, а фреймворк, т.е. библиотека уже написанного функционала, который покрывает только часть технических задач геймдева. А остальную часть пиши сам ¯\_(ツ)_/¯
Однако в то время был веб-движок Stancyl, который умел билдить игры на Flash. Сейчас он тоже есть, но уже без AS3, вроде на HTML5 билдит. Основная идея была очень похожа на Game Maker и я попробовал собрать игру DataFlow там. Итог моих трудов дичайшим образом тормозил... Но деньги пахнул, так что я решил с наскока изучить AS3 и пересобрать игру на него.
Взял Flashdevelop и фреймворк Flixel и тут начались мои страдания.
То, что в Game Maker решалось в один клик - мне нужно было писать десяток-сотню строк кода. Вроде бы Flixel был для игр заточен, но каких-то базовых решений, к которым я привык в GameMaker - там не было. Работа с камерами отвратительная, с глобалами - через костыли, даже чтобы сделать автоскролинг фона - это всё делается руками.
Менеджмент ресурсов через отдельные файлы. На каждый объект - свой файл с простыней кода. Создание сцены - через код. Возможно, были какие-то сторонние программы, но это не точно.
Были и плохая документация с кучей пробелов и несоответствий.

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

До этого я уже пытался делать 3Д игры на Game Maker, но там настолько убогое 3Д, что я быстро бросил попытки его нормально освоить.
Проектом, который я хотел сделать на юнити стала игра Megabot. Именно здесь я начал своё знакомство с новым движком. Отсмотрев примерно 15 часов видеоуроков и вооружившись документацией, приступил к делу.
В целом, я нашёл Unity очень похожей на Game Maker в плане общих концептов, поэтому освоение шло просто и легко. Непросто шло освоение 3Д моделирования. Я так и не научился нормальному UV текстурированию и выкручивался дефолтными настройками планарных, сферических и кубических проекций.
Тогда уже вышла первая Game Maker Studio, именно с ней я сравнивал Unity когда осваивал новый для себя движок.
Мне очень понравилась концепция префабов, которой в Game Maker тогда ещё не было. В общих чертах - это возможность создать настроенный экземпляр объекта, а потом менять ему отдельные свойства. Так можно было настраивать поведение противников, например чтобы один летал по горизонтали, а другой - по вертикали.
Редактирование сцен в Unity было гораздо удобнее, чем редактирование комнат в Game Maker. Менеджмент ресурсов приемлемый, если и хуже, то ненамного.
Понравилось, что есть нативный экспорт на различные платформы без поднятия виртуалок(как нужно делать при работе с Game Maker).
Так же я заценил концепцию компонентов, которой в Game Maker не было, нету и не будет. Реально игру собираешь как конструктор. Этим Unity сильно подкупал. Но были и недостатки, касательно написания кода.

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

Я сделал на Юнити 3 игры и в работе было 4 прототипа. На тот момент Unity нравилась, но что же пошло не так? В версии 4 они убрали JavaScript, на котором были написаны все мои проекты. Учитывая, что я не люблю C#, переписывать проекты на него не стал. По сути я всё бросил. Вообще всё, примерно на полгода. Не играл и ничего не делал. Но это другая история.
За полгода я остыл и вернулся к Game Maker.
Это альтернатива Game Maker появилась в 2012-ом году. Как раз когда я пробовал другие движки. И этот я тоже хотел попробовать, тем более его рекламировали как движок в котором вообще не нужно программировать.
Но у меня просто не сложилось - он крашился на старте. Я изучил, какие игры были сделаны на Construct. Увы, они не блистали производительностью. Хотя уже позже тот же Iconoclasts - дитя Construct Classic. Как сказал автор игры Konjak - пробовал Game Maker и он показался ему слишком сложным. Он то художник, а там какой-то код нужно было писать. Прекрасная иллюстрация того, как на непригодном казалось бы движке делаются хорошие игры.

Потом вышел Construct 3, который часто прям нахваливают, отмечая мега-производительность. Но я не знаю примеров успешных проектов на этом движке, потому не стал пробовать.
В 2017-ом году вышла новая студия и это был фурор. Настоящий прорыв для движка.
Из ключевого:
- переделан редактор комнат со слоями
- новая тайловая система + автотайлинг + анимированные тайлы
- аудиомикшер для тестирования звука
- поддержка экспорта на консоли
- воркспейсы
- много quality of life мелочей
Основная концепция осталась та же. Сначала было немного непривычно работать с огромным холстом, на котором открываются окна. Но позже я оценил удобство, плюс были механизмы быстрого перемещения в нужное место.

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

У игрока есть база, которую он развивает, чтобы добывать ресурсы. Но чтобы добывать основной ресурс - он ходит на базы конкурентов и отжимает их. То есть тут ещё и задача построить свою защиту.
Игру делал на всё том же GameMaker с бэком на PHP + MySQL.
Даже несмотря на то, что я хотел создать оффлайн-мультиплеер, слишком амбициозный проект на 2 дня разработки. Возникло очень много проблем синхронизации состояний базы игрока, которые было лень решать после того как я провалил своё участие в конкурсе.

Позже, в другом конкурсе, сроком на 3 недели, я решил сделать простенькую роглайк игру в жанре point&click. Игрок влачил своё существование в катакомбах, играя за сундук-мимика. Пожирая забредших в подземелья героев. В общем, отыгрыш плохого парня. Я реализовал очень мало, и с кучей багов. Счёл свой веб-движок бесперспективным и запланировал когда-нибудь вернуться к нему и переписать на том же Game Maker, например.
Единственная моя "успешно законченная игра" написанная на чистом JS - это Do you have the color? Одно из моих участий в Ludum Dare на тему "Чем у тебя больше, тем хуже". Игроку нужно искать в своей палитре предложенный игрой цвет за ограниченное время.
Долгое время я не прикасался к движку, т.к. думал, что мои проекты потеряны. Когда я пытался перейти с 3.5 на 4, все проекты в новой версии похерились.

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

Так что теперь я могу открыть свои старые проекты, но желания ими заниматься у меня нет. Хотя жалко, конечно. Проект 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. Классно видеть всё визуально, а не скрллить бесконечные портянки кода.
Спасибо что осилили это чтиво! А если вы до сюда просто доскролили - зачем было открывать этот пост?