Хеппи Бёздей: История создания

p0IA4M7
Набросок обложки от LLLoyd

Идея создать игру в стилистике ранних дней консоли Famicom (NES, Dendy) материализовалась практически сразу после старта конкурса. Огромным вдохновлением для меня послужила серия NES Works от ютьюбера Jeremy Parish с досконально подробным разбором многих ранних тайтлов на эту игровую приставку (ссылка на плейлист). Конечно же, мы с вами живем в двадцать первом веке, и делать игру с простеньким геймплеем а-ля Mario Bros было бы слегка опрометчиво. Не долго думая, я решил подойти к дизайну с постмодернистским подходом, переосмысляя и обыгрывая раннюю историю видеоигр. Игры того времени были просты донельзя, и эту простоту я хотел деконструировать извне, добавив более сложный контекст.

В этот раз я решил действовать наверняка. Я точно понимал, что технические ограничения консоли необходимо соблюдать с абсолютной точностью, поскольку они были, на тот момент, неотъемлемой частью дизайна игр. В этом мне помог данный пост, который в точности разбирал каждый лимит — на количество спрайтов на сканлайне, на количество спрайтов в целом, на цветность спрайтов, число палитр. Разумеется, часть ограничений к этому времени я уже хорошо знал, но познание технических тонкостей было необходимо для точной симуляции игрового опыта.

Еще одним вдохновением для меня послужили настоящие проекты, разработанные на NES в наши дни, такие как Micro Mages и Super Bat Puncher. Я помню, как загружал последнюю через эмулятор и был шокирован невероятно маленьким размером PPU (графической памяти), в который вообще было невозможно запихнуть картинку даже размером с экран. Вспоминая визуальную и звуковую составляющую Castle of no Escape 2, для меня было понятно, что так круто выглядеть игра на NES, конечно же, не может.

Впрочем, респект команде ConE2 за, например, симуляцию таких технических вещей как фреймрейт в 59.9гц (чем я, например, не заморачивался). Кстати, насколько я помню, первую часть ConE в самом деле пытались портировать на NES. И я даже переписывал саундтрек под технические реалии консоли, т.к. изначально он был написан в FL Studio. А Xitilon.HD408 собаку съел сидя и разбираясь с PPU Mapper-ом, составляя палитры в столь жестких ограничениях.


2 ноября у игры уже было название — «Хеппи Бёздей» транслитом на японском. Какая дата может быть важнее дня рождения?!

VxbATSY
Почему-то изначально он был желтый. И да, тут тоже осталась опечатка :(

Впрочем, на тот момент зародилась разве что базовая идея игры: «вы играете за едва вылупившееся яйцо, и сегодня ваш день рождения. Ваши действия будут иметь последствия для каждой из ваших будущих инкарнаций.» Видимо мысли про день рождения, яйцо, феникса и перерождение в круговороте сансары какой-то момент щелкнули в моей голове и собрались в одно целое. Почитав пару религиозных статей (эм, лол) на Википедии я окончательно убедился что это именно то, что я бы хотел делать. Некоторые вещи пришлось додумывать на лету исходя из желаемых игровых механик. Вроде, что карму можно очистить с помощью смерти (что?) и что только отсутствие кармы позволяет перейти на следующий уровень (изначально были мысли о некоем пороге, но в итоге я решил как истинный дзен-буддист (нет) добиваться от игроков абсолютного прохождения каждого уровня). Тогда же появился спрайт главного героя и первый тайлсет.

3 ноября появилась вот эта милая квакающая жабка:
rVpLax7
Кситилон, узнав, что это проект на Гаминатор, сразу же предложил сотрудничество в качестве композитора (эх, времена «Навеки Один», верните мне мой 2010-й). Музыка тогда уже была практически вся написана (в игре всего пара простеньких мелодий), поэтому Кситилону была отдана честь придумывать создавать звуковые эффекты. С 0CC-FamiTracker у Кситилона не задалось, поэтому продолжили работать в стандартном фамитрекере (некоторые вещи, похоже, никогда не меняются :D).

4 ноября появились еще враги: Ганеша, Шива, улитка, купидон, ангел.

Кали, кстати, я изначально заменил на Шиву, но в итоге она попала в игру в предпоследний день в качестве финального босса.

Появился тестовый уровень, сразу с красивыми ретро-шейдерами:

r93Sa4x

Ну, такое соотношение сторон никак не могло подойти для аутентичности, у Famicom ведь были не-квадратные пиксели! Долго мучился пытаясь подогнать этот плагин так, чтобы он работал необходимым мне образом. Его, кстати, все еще можно скачать бесплатно для GMS2. Мой хороший друг LLLoyd, узнав о том что я в кой-то веки разрабатываю игру, решил присоединиться движухе и сразу нарисовал скетч к обложке игры (первая картинка в посте). Я скинул ему в качестве референса обложку к Mega Man II для Game Boy. Это кривое злобное лицо Мегамена потом мне выстрелит в ногу, вот увидите XD

14 ноября. Ого, мне потребовалось 10 дней, чтобы вернуться к работе. Появился GUI с моим кастомным шрифтом, покрутил шейдеры, начал добавлять врагов.

15 ноября. Лягушка решает выйти в окно XD

NMvZGvv

А если серьезно, то первое время были серьезные проблемы с физикой, т.к. игровую логику я писал практически с нуля.

16 ноября. Физика пришла в более-менее стабильное состояние, появились задатки игрового цикла.

17 ноября. Жаба злая потому что на обложке ей не разрешили нарисовать задницу XD

fJDGrUv

Также я сделал просто невероятную штуку и написал алгоритм симуляции фликеринга спрайтов. Этот тот эффект, когда на одной линии не может быть больше 8 спрайтов 8×8, и разработчики начинают двигать регистры так, чтобы скрывать то одну, то другую часть спрайтов попеременно, тем самым заставляя их «мерцать». Как симулировать сдвиг регистров было не очень понятно, но вот как реализовать случайное переключение — вполне.

IKtwXfh

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

NxyKqoL

К концу дня были полностью готовы 6 уровней — это 1 и 2 мир. LLLoyd протестировал сборку, на основе фидбека исправил некоторые моменты.

21 ноября был готов к финальному рывку — закодить последний мир и выпустить игру. Обложка не была готова, но что уж поделать. В итоге узнал о продлении и решил взять таймаут.

24 ноября были мысли о том чтобы напечатать настоящую наклейку на какой-нибудь картридж для Денди и выдать его за предысторию. Этим мечтам было не суждено сбыться.

26 ноября написал тему концовки. Семпл, кстати, взят отсюда, такая вот отсылка на токусацу.

27 ноября при помощи LLLoyd-а срежиссировал концовку:

UJGitMi

6cd3Mke

63nCHuC

Птичка таки вылупилась!

Также полностью закодил последний мир.

28 ноября по МСК началось с обширного тестирования от Xitilon.HD408. Он указал на проблемные механики — в итоге сложность была снижена, некоторые баги исправлены, а таймер уровня был уменьшен аж на треть. Игра все еще оказалось достаточно мазохистским опытом из-за своего анти-геймдизайна и необходимости избегать вообще всего, а также малого поощрения игрока за правильные действия.

Вечером того же дня были всевозможные финальные полировки, добавление копирайта, наложение текста на уже готовую обложку, и все — заявка отправлена, а значит можно немного отдохнуть от стресса последних дней!

В последний момент пришлось менять лицо купидону, потому что он был буквально срисован с того злобного Мегамена и выглядел, мягко говоря, жутко XD

eN7ZYAq


Как я оцениваю этот опыт разработки в целом? GMS2 рулит, последние несколько месяцев я кодил на стареньком GM8.1, и для меня все фишки GMS2 показались мега-удобными, по итогу даже удобней чем классический GMS1. Непосредственно процесс написания кода был максимально спокойным, поскольку инструмент я знал хорошо и всю архитектуру проектировал заранее. Добавление новых фичей было безболезненным и последовательным. В общем, я реально в восторге!

Музыка написалась как-то даже слишком быстро. Проблемы были только в предпоследний день из-за темы босса — в итоге получилось более-менее.

Рад, что удалось поучаствовать в Гаминаторе в очередной раз спустя столько лет! Спасибо что разделили со мной эти волнительные три недели! Всем пис!