Dungeon Crawler для Commodore 64. Переписываю движок с нуля
Предыдущие статьи по теме:
Прошло больше года с тех пор, как я начал разработку Dungeon Crawler для Commodore 64 под названием Decade of Ruin. И, можно сказать, я ее уже почти закончил, если бы не одно но...
Я решил полностью переписать графический движок.
Немного про новый ассемблер
Хочу рассказать про ассемблер, на котором я начал переписывать игру. До этого я пользовался CBM prj Studio. Это полноценная IDE для Commodore-подобных компьютеров со своим синтаксисом ассемблера и компилятором.
Но как же я с этой средой намучился. Приведу простой пример.
Допустим, надо создать таблицу указателей на каждую строку карты уровня (читай - двухмерный массив). В CBM prj Studio каждый адрес для нижних и верхних байтов адреса приходилось прописывать вручную, например:
Но я начал использовать Kick Assembler, или KickAss (как бы смешно это ни звучало). На нем можно писать в православном VSCode, а нужное расширение еще и синтаксис подсветит. Да и компиляция, в отличие от довольно медленной CBM prj Studio, занимает миллисекунды.
В KickAss аналогичная таблица указателей создается одной командой. Предположим, что наша карта занимает 32*32 блока. И мы можем написать следующее:
Более того, в KickAss для формирования данных и кода можно использовать For, While, If и прочие команды, прямо как в языках высокого уровня.
Новые знакомства
Прежде, чем я начну, хочу показать скриншоты одной локации в старой и новой версиях игры.
Три месяца назад я познакомился с замечательным товарищем Grongy. Мало того, что он вдохновил меня полностью переписать код, так еще и нарисовал очень много графики (в которой я совсем не силен).
А что же было сделано?
- Дальность отрисовки увеличилась на один блок. Раньше игрок видел 3 блока перед собой, теперь четыре. При этом последний блок затемняется с помощью дизеринга.
- Каждая текстура хранится в разрешении 8*16 пикселей (учитывая, что в режиме Multicolor пиксели двойной ширины). Раньше на одну текстуру можно было использовать 3 цвета (один из которых был темно-серым). Теперь можно использовать любые три цвета для нижней и верхней частей текстуры.
- Раньше на одном уровне можно было использовать всего лишь 16 текстур. Теперь текстуры хранятся на дискете паками по 64 штуки. И на одном уровне можно использовать их все!
- Тоже самое касается и спрайтов. Раньше на одном уровне можно было использовать всего 4 спрайта для врагов и 4 спрайта для объектов. Теперь это число увеличилось до 32 штук (но, из-за того, что спрайты занимают довольно много памяти, аж 256 байт на один объект/врага, каждый спрайт-пак будет использоваться сразу на нескольких уровнях).
- Начались размышления насчет новой боевой системы. Если раньше это было чисто пошаговое решение, то теперь хочется сделать что-то более активное.
Визуал
Небольшой тур по первому уровню. Можно оценить новую графику.
Как похорошели текстуры при Собянине. Сверху старая версия, снизу новая.
Игрок теперь видит объекты на двух блоках перед собой.
На мини-карте теперь отображается направление движения игрока.
Один из вариантов боевой системы (поиграем в гольф?)
Немного баловства
Как бы игра выглядела на движке Wolfenstein 3D:
...и Doom=)
Самореклама
Остается надежда, что игра будет выпущена до конца 2025 года. Я постараюсь приложить все усилия, чтобы так и вышло, но загадывать ничего не буду.
Про каждый этап разработки я рассказываю в своем Телеграм-канале под названием (бухай): программируй (и там кстати можно найти ссылку на скачивание предыдущей демо-версии игры).
Круто. Ещё и Grongy в деле. Не, эту игру я точно жду.
Ничего себе! Инди геймдев на Commodore 64 живее всех живых! Удачи довести до релиза!