Написал игру на ассемблере для Commodore 64
На разработку ушел месяц. Это был недолгий, но очень непростой путь. День за днем я вчитывался в тысячи строк машинного кода, пытаясь выловить баги, но все таки победил машину древних, хотя и не до конца.
Игра называется The Last Effort, а при создании я вдохновлялся небезызвестной Papers, Please. До ее уровня, конечно, далеко, но похожие механики присутствуют.
На ассемблере я писал в первый раз, поэтому уверен, что многое можно было сделать лучше и качественнее, но главное — все работает (почти).
Поиграть в The Last Effort можно даже онлайн и даже на телефоне:
Сюжет, натянутый на геймплей
Офицер полиции Браун возвращается к работе после нескольких лет бесконечных судов, обвинений и разбирательств. В прошлом он случайно застрелил ребенка при исполнении обязанностей, поэтому руководство крайне подозрительно к нему относится.
Его направили выполнять скучную и монотонную работу. Целыми днями он сидит за монитором, на который выводится изображение с дорожной камеры. В случае возникновения каких-либо подозрений он обязан вызвать патруль. Те останавливают автомобиль и отсылают Брауну копии документов водителя. Браун должен сверить все документы с базой данный и вынести решение: отпустить водителя или наложить на него штраф. За ошибки офицера наказывают, а за правильные решения поощряют.
Но есть одна проблема — жена Брауна умирает. На операцию требуется 15 тысяч долларов, но сидя в душном офисе и ломая глаза перед монитором, он не сможет заработать такую сумму. Поэтому Браун идет на преступление.
Он договаривается со знакомыми патрульными, что те будут выезжать на все его вызовы и брать взятки с водителей, и не важно, чистые у них документы или нет. Всю выручку полицейские будут делить поровну.
А руководству надоел неблагонадежный сотрудник, на которого надо тратить бюджетные деньги. Они сообщили Брауну, что собираются уволить его в четырехдневный срок. За это время ему надо успеть заработать деньги на лечение жены и постараться не угодить за решетку.
Механики из 80-х
На прохождение игры дается 99 часов, но время увеличивается не в реальном времени, а с каждой пропущенной машиной или после осмотра документов. У героя есть репутация (Fame), и она уменьшается, если делать ошибки или пропускать машины.
Вообще, основной экран игры практически не несет никакой нагрузки на геймплей. Я добавил его только для отображения очков и хоть какого-то экшена. Любую машину, которая появляется на экране, можно остановить для проверки документов (клавиша F).
У каждого водителя есть два документа: права и свидетельство о регистрации. Надо проверить каждый документ на легальность. Для этого надо изучить 8 полей (имя, номер, дата и т. д.) и сравнить их с данными в полицейской базе. Переключение между документами — клавиша C, а клавиша O открывает базу данных.
В базе данных не так много записей, поэтому игра вышла довольно простой. Переключаться между ними нужно с помощью A и D, а после изучения всех полей можно вернуться к документам (Q).
В этот момент надо принять какое-то решение. Можно отпустить водителя (L), а можно наложить на него штраф (F). Если решение верное, то Брауну заплатят 100 долларов, а его репутация повысится на 6 пунктов. И наоборот, если допустить ошибку, то деньги взыщут, а репутация понизится.
Но есть и третий вариант — попросить взятку (B). В этом случае надо сыграть в простенькую мини-игру.
Из 64 доступных позиций надо выбрать правильную. Всего дается пять попыток, а игра подсказывает в какую сторону надо двигаться для победы (отсчет начинается с левого верхнего угла).
При проигрыше репутация уменьшается на 12 пунктов, а при выборе правильного варианта в кошелек падает 200 долларов.
Когда репутация понизится до нуля, или истечет отведенное время, то игра закончится поражением или победой.
Не все так гладко
В игре нет звуков, а про музыку я даже упоминать не хочу. Дело в том, что я до сих пор не разобрался, как работает звуковой чип, и как его запрограммировать. Поэтому пока что спасать жену офицера приходится в полной тишине.
И цель — заработать 15 тысяч — уж слишком сложно достичь. В своем тестовом прохождении я заработал всего 3200. Я прекрасно понимаю, что долго в эту игру никто играть не будет, и она должна быть быстрой, поэтому собираюсь понизить планку, иначе придется постоянно наблюдать такой экран:
Немного статистики
2 487 строк
7 095 байт
0
∞
P. S. Я веду Телеграм канал, в котором пишу про свой опыт программирования. В последнее время практически полностью переключился на Commodore 64, но иногда там выходят заметки и про другие вещи: попытки в 3D моделирование, Godot Engine, пиво. Буду рад новым участникам=)
Лайк не глядя чисто за ебейшие усилия )
Спасибо, это действительно было не просто)
"Поэтому пока что спасать жену офицера приходится в полной тишине" ... полноценный стелс-экшен 🤘🏻
Не баг, а фича)
Даже на этом этапе это очень круто, пусть без музыки или хитрых механик. Такие материалы возрождают веру в ресурс!
На телегу подписываюсь :)
Спасибо=)