Адаптация 2. Демейк
Почти шесть лет назад я написал пост о своей неудачной адаптации «Мора. Утопии» под форму визуальной новеллы. Я понял, что ремейк мне не по силам — слишком комплексная игра, слишком много работы нужно совершить, чтобы сделать хотя бы прототип, поэтому решил двигаться в ином направлении — упрощать игру, делать демейк. На прошлой неделе я заметил на итче Nokia 3110 Jam. Я подумал: почему молчат всемогущие Власти? Возможно, они ушли из песочницы и играют на монохромных телефонах.
У меня был прежде опыт демейка Silent Hill 2 для битси-джема, и эта игра является самой популярной среди моих проектов на итче. Тот демейк был с некоторым плот-твистом, оборачиваясь на втором прохождении другой игрой. Игрой, которая в некотором роде деконструирует демейк, демонстрируя, что в играх такого рода воспоминания об играх важнее самих игр. Я специально для создания игры не пересматривал прохождение игры, полагаясь на воспоминания о нём, которые в какой-то момент и становятся главной темой игры. Это интересный подход, заслуживающий отдельного разбора. Возможно, когда-нибудь я возьмусь за создание полноценной игры, которая будет развивать эту тему.
В демейке «Мора» в стиле старых телефонов Nokia я в первую очередь обратился к геймплею игры. По правде говоря, эта идея зрела у меня в голове ещё раньше, когда я прошёл курс Густаво Пецци по ассемблеру на Atari 2600. Идея была простая — Гаруспик ходит по степи, собирает травы и избегает облачков чумы. Просто, примитивно, но на Atari 2600 по-другому практически невозможно. Но реальность вносит свои коррективы. Если бы вы знали, насколько тяжело выводить на Atari некоторые простые вещи, вроде тех же цифр да и ещё и в десятичном виде. Даже если убрать количество очков, всё ещё остаётся важная проблема подсчёта тактов. Слишком много вычислений за вывод линии — получите съехавшую картинку, слишком мало, но ввёл неправильное количество NOP (ассемблерная операция, которая не делает ничего, но расходует такты) — снова всё сломалось. Я не сильно вникал в тонкости, но многие мои попытки модифицировать пример из курса заканчивались провалом. Автор утверждает, что главной целью было показать работу самого ассемблера, а не его особенностей для вывода на экран Atari 2600, поэтому вместо собственного разбора приводил в пример множество ресурсов, в которых подобные проблемы разбираются. Но я решил, что это может занять слишком много времени.
К счастью, для джема в стиле игр Nokia не нужно иметь дела с инструментами разработчика Nokia, однако я старался быть аутентичным, не использовать большие спрайты и какие-то мудрёные сочные эффекты, которые так любят делать разработчики на PICO-8. Даже если бы и хотел, у меня на разработку было около трёх дней. Всего не успеть. Всех не спасти.
В качестве инструмента я использовал GameMaker Studio 2. Довольно забавно, но это всего лишь мой второй проект на GMS2, обычно я пользуюсь первой версией. Я купил HTML5-экспортёр и очень хотел его попробовать. Забегая наперёд, могу сказать, что кое-какие вещи в экспортированном проекте работают не так, как в нативном. Например, есть кое-какие проблемы с порядком отрисовки стандартных примитивов. Не желая разбираться лишний раз, я просто поставил проверку на запуск в браузере, и, в случае положительного значения, рамки интерфейса, которые реализованы с помощью draw_rectangle, просто не отрисовываются. В остальном же всё было нормально, если поэкспериментировать с галочками в меню настроек для платформы.
Что важно для того, чтобы передать ощущение «Мора»? В какой плоскости лежит то, что делает игру такой привлекательной? Геймплейно «Мор. Утопия» была довольно однообразной игрой. Но у неё был хороший сюжет, музыка и атмосфера. Какие элементы можем перенести из игры в демейк без потери качества? Музыка отпадает сразу. В «Море» музыка базируется на трипхопово-эмбиентной основе, где мелодия (часто это какие-то голосовые сэмплы) просто ограняет музыкальное пространство трека. Одним из требований джема было использование одноканального звука. Для сегмента с игровой историей я по-быстрому смонтировал в Audacity семисекундный сэмпл из одного из треков, но не уверен, что многие его узнают. С атмосферой тоже не всё понятно. Что это вообще такое? Графический стиль + тексты + музыка + бог-знает-что-ещё? Ограничения платформы сломают весь баланс этих элементов. С сюжетом было проще всего. Я взял свои воспоминания об игре, взял прохождение игры за Гаруспика и собрал короткие сюжетные вставки на каждый из дней. На игровую страничку помещается около десятка слов, а то и меньше, так что мне пришлось быть очень лаконичным и вырезать детали. Полученный сюжет, который крутится вокруг наследства Гаруспика, добавляю под спойлер. Мне кажется, получилось неплохо как для такого формата.
День 1. Я получил письмо от отца, старого знахаря. Он просил меня вернуться домой, чтобы принять наследство. Он предчувствовал свою скорую кончину. Когда я приехал, мой отец был уже мертв. Местные жители подозревают меня в убийстве. Вечером я вышел в степь, чтобы почувствовать дух предков.
День 2. В городе свирепствует чума. Дети думают, что отца убила Шабнак — дух из земли. Бакалавр из столицы, оказавшийся здесь по делам, утверждает, что он умер от болезни. Я получил от хранительницы моего наследства шкатулку в вещами отца. Я узнал, что перед смертью он хотел спасти удурга, но кто это?
День 3. Мои поиски привели меня к мясникам, которым знакомы древние традиции. Один из них отправил меня к Оюну — нынешнему главе Уклада, предводителю степняков. Говорят, что ему была выгодна смерть моего отца. Выйти на след Оюна мне не удалось.
День 4. Один из учеников моего отца, доктор Рубин, поверил в то, что я убил своего отца. Но после знакомства с доводами Бакалавра, он решил, что был неправ. Бакалавр организовал нам встречу. Я узнал, что отец был убит рукой того, кто знает Линии. Таких людей очень мало…
День 5. Во время одной из прогулок меня оглушили. Я оказался за решёткой. Мне удалось выбраться оттуда. Бакалавр попросил меня достать сердце заболевшего степняка для исследования чумы. Я нашел мясников, которые приносили в жертву больную степнячку. Я забрал её сердце и отнес Бакалавру.
День 6. Оказалось, что кровь степняков недостаточно борется с инфекцией. Бакалавр хочет проверить, может ли кровь быка бороться с чумой. Из-за карантина еду не доставляют из других городов, поэтому пришлось забить многих быков. Дочь коменданта в обмен на таблетки выдала мне быка для эксперимента.
День 7. Антитела быка уничтожают инфекцию, но сразу же погибают. Нужен гибрид быка и человека. Карантин не приносит плодов. Из столицы приезжает инквизитор. Она берет власть в городе на себя и проводит свое расследование. Она открывает мне доступ к Оюну, который может знать про гибрид быка и человека, который я ищу. Оюн дал мне немного крови Высшего быка. Она может избавить от чумы.
День 8. Бакалавр сдался. Теперь он считает, что необходимо любой ценой защитить Многогранник — странное здание на окраине города, которое стоит вопреки законам физики. Я решил узнать у Оюна, где он достал кровь Высшего быка. Оюн мне не ответил и заметил, что не видит во мне достойного наследника.
День 9. Силой я выбил из Оюна информацию, что эта кровь течет под землей по всему городу. Фактически весь город стоит на крови. Тем временем в город прибывает армия. Если не получится победить чуму, город уничтожат.
День 10. Бакалавр утверждает, что знает, кто такой удург. По его мнению, это умерший глава одной из семей, которые управляют городом. Его семья знает способ воскресить его и поместить его душу в Многогранник. Но я не уверен, что Бакалавр прав.
День 11. От инквизитора я узнал, что Оюн — убийца моего отца. Я пошел к нему. Он признался в убийстве. Я убил Оюна. Теперь я — единственный наследник, знающий линии. Я понял, что мой удург — город, в чьих недрах течет драгоценная кровь высших быков.
День 12. Бакалавр хочет уничтожить город, чтобы Многогранник жил. Я же считаю, что необходимо уничтожить Многогранник, который выйдя из тела города, освободит достаточное количество крови, способное излечить от чумы. После долгих переговоров было принято решение уничтожить Многогранник. Город спасен, пусть и ценой жертвы невероятного сооружения. Впрочем, это малая плата за возможность продолжать жизнь.
День 12. К назначенному сроку так и не вышло создать панацею. К полуночи город и Многогранник будут разрушены. По всему городу я слышу неумолимый плач. Я так и не стал достойным наследником своего отца.
Для геймплея я отбирал некоторые запомнившиеся моменты, некоторых из них стали мемами для фанатов игры. В игре есть три вида ресурсов — деньги, травы и органы. Деньги можно подбирать из убитых бандитов и мусорок. Фактически, всё игровое пространство состоит из мусорок, трав, бандитов и облачков чумы. Возможно, это карикатурно, однако часто игровой опыт вне сюжета и в оригинальной игре за Гаруспика сводится к этим элементам. Бандиты бросают ножи. С определённого момента кроме облачков чумы появляются и «ангелочки» — довольно противные разновидности чумы, более быстрые и опасные. Многие вещи в игре рассчитаны на узнавание для игрока, знакомого с оригиналом. Цены постоянно меняются, подскакивают и падают, и это влияет на примитивную, но всё же работающую игровую экономику. Каждый день нам говорят сколько людей заразилось, а сколько умерло.
Однако пришлось вводить и новые элементы. Например, для вырезания органов Гаруспиком обязательно нужен скальпель, который покупается отдельно и служит только для этого. Для изобретения панацеи необходимо проводить исследования в меню игры. Вместо множества параметров оригинала, я решил оставить только здоровье и уровень заражения. Здоровье постоянно падает, подчёркивая существование неумолимого убивающего времени, а уровень заражения ускоряет процесс. Постоянно падающее здоровье как и вид сверху мне напоминают старую игру Gauntlet, так что можно сказать, что для геймплея я также вдохновлялся этой классической игрой. Все игровые дни начинаются с 6 вечера, что делает описание дня не сферическими в вакууме, как будто параллельный Гаруспик в это время что-то узнал, а имели место с вашим персонажем где-то за кадром. Но не буду раскрывать все особенности, их и без того немного.
Я надеюсь, что игра вам понравится. Поиграть в неё можно по этой ссылке — https://rzzl-dzzl.itch.io/nokialogic.
- 16 февраля 2022, 13:46
- 016
Не знаю, что ты курил, но это очень круто!
Неплохо, люблю такие минималистичные штуки.
При попытке купить скальпель игра зависает вместе с браузером.
Встретил всего лишь несколько трупов.
Ножи одноразовые что ли? Тогда они больно много стоят.
По-моему на экране есть еще место чтобы показывать заражение, например I:1
Травы иногда появляются у нижнего и верхнего края уровня, их там совсем не видно.
Я бы зациклил уровень.
Вот что значит добавлять новые фичи прямо перед релизом. Буквально за 10 минут до релиза я добавил "ритуал", который увеличивает шанс появления травы, который зависит от наличия скальпеля. Так вот, в "цене" ритуала вместо строки, которая отвечает за цену, я написал число.
Ножи многоразовые, просто нужно остановиться для броска. На нынешней версии должно работать.
Неплохая идея.
Не хватило времени на полировку таких момментов, так-то полностью поддерживаю. Надо только подумать (или нагуглить) как делается зацикленный уровень.
Думаю, на этих выходных обновлю версию, может добавлю парочку врагов и предметов, чтоб было интересней. Только вот ссылку для итча обновлю позже, потому что участие в джемах той или иной игры закрывает возможность изменять файлы.
Игра обновлена и доступна по ссылке в посте.
По поводу перемещения - почему нельзя держать сразу 2 кнопки движения и двигаться в сторону последней нажатой, а если удерживается только 1 кнопка, то в ее сторону? А если нажато 3 кнопки, то для одной игнорировать противоположную. Вижу что ты так и пытался сделать, но при зажатии вправо/влево, а потом вверх/вниз это не работает, только если наоборот. Аналогично если зажать сначала вверх, а потом вниз или сначала вправо, а потом влево - тоже. У тебя что-то с логикой в коде неправильно.
На стрелочки продублировать управление тоже надо.
Раздражает мигание верхней панели на 1 пиксель при перемещении вверх-вниз. Наверное у тебя там округление координат отрисовки неправильное, попробуй ceil вместо floor или наоборот.
Купил нож, на следующий день его уже у меня не было (при нажатии E ничего не происходит). Причем в списке покупок ножа не было тоже, только скальпель.
Я бы добавил на нижней панели индикатор, показывающий что сейчас можно бросить нож.
И почему нельзя кидать на ходу? Это сложно сделать? Или мы можем столкнуться со своим же ножом?
Убитые трупы пропадают через рандомное время, иногда даже не успеваю к ним подойти чтобы обобрать.
После геймовера показатель заражения I остался равен 1, не сбросился в 0.
Еще бы добавить рестарт по кнопке R и паузу по Escape.
Дошел до 11 дня. С огнеметчиков органы почему-то не подбираются.
Ну и нож со скальпелем где-то после 5 дня перестали пропадать. Уж лучше чтобы нож и скальпель надо было купить только 1 раз.
По-моему после 4 дня игра предложила купить скальпель еще раз, хотя я уже купил его вчера и при этом ни разу не пользовался.
В какой-то один день не встретил вообще ни одного человека.
Зачем вообще удалять трупы? Пусть лежат.
Я бы еще добавил чтобы если стоим на месте, то здоровье теряется медленее. На случай если надо хоть как-то дожить до след. дня.
Цены меняются не на все. Покупка-продажа трав всегда 2 и 5, надо в какие-то дни сделать продажу за 3 чтобы выгоднее было продавать не сразу, а оставлять на след. день. Ну и цену покупки я бы уменьшил до 4.
Ритуал - не заметил чтобы он на что-то влиял. Зачем нужны исследования?
Еще думаю надо сделать чтобы в урнах всегда было хотя бы 1 монетка. Чтобы по пустым урнам можно было ориентироваться где мы уже были.
Перемещение делалось так, чтобы передать ощущение управления на телефоне, где, если я не ошибаюсь, одновременно может быть нажата только одна кнопка.
Не обращал внимания. Проверю.
Это не баг. В 5 день все предметы отбирают по сюжету (см. текст 5 дня).
Должны не через рандомное, а только после попадания бомбы на них. Проверю.
Прозевал этот баг.
Вот это странно.
Трупы должны удаляться только огнём. Наверное. какой-то баг. Они удаляются огнём, когда персонаж находится близко от убитого, чтобы повлияло на баланс органов, их было бы тяжелее достать, плюс на то, что игрок элементарно застревает в убитом. Можно, конечно, его вытолкнуть, но это выглядит "грязно".
В оригинальной игре курс трав и органов, если мне не изменяет память, тоже не менялся.
Ритуал увеличивает вероятность появления травы.
Исследования нужны для хорошей концовки.
Если будут делать обновление, займусь этим вопросом.
Спасибо за фидбек! Я последнюю версию от и до не проходил, только по дням тестил, отчего кое-что упустил.