Dungeon Crawler для Commodore 64. Переписываю движок с нуля

Предыдущие статьи по теме:

Прошло больше года с тех пор, как я начал разработку Dungeon Crawler для Commodore 64 под названием Decade of Ruin. И, можно сказать, я ее уже почти закончил, если бы не одно но...

Я решил полностью переписать графический движок.

Dungeon Crawler для Commodore 64. Переписываю движок с нуля

Немного про новый ассемблер

Хочу рассказать про ассемблер, на котором я начал переписывать игру. До этого я пользовался CBM prj Studio. Это полноценная IDE для Commodore-подобных компьютеров со своим синтаксисом ассемблера и компилятором.

Но как же я с этой средой намучился. Приведу простой пример.

Допустим, надо создать таблицу указателей на каждую строку карты уровня (читай - двухмерный массив). В CBM prj Studio каждый адрес для нижних и верхних байтов адреса приходилось прописывать вручную, например:

map_table_lo byte <map_row_0, <map_row_1, <map_row_2, etc... map_table_hi byte >map_row_0, >map_row_1, >map_row_2, etc...

Но я начал использовать Kick Assembler, или KickAss (как бы смешно это ни звучало). На нем можно писать в православном VSCode, а нужное расширение еще и синтаксис подсветит. Да и компиляция, в отличие от довольно медленной CBM prj Studio, занимает миллисекунды.

В KickAss аналогичная таблица указателей создается одной командой. Предположим, что наша карта занимает 32*32 блока. И мы можем написать следующее:

// создаем таблицу указателей на верхние и нижние байты адресов строк карты map_table: .lohifill 32,map+32*i // теперь можно обращаться к строкам карты // помещаем первый нижний байт в аккумулятор lda map_table.lo // помещаем первый верхний байт в регистр X ldx map_table.hi

Более того, в KickAss для формирования данных и кода можно использовать For, While, If и прочие команды, прямо как в языках высокого уровня.

Новые знакомства

Прежде, чем я начну, хочу показать скриншоты одной локации в старой и новой версиях игры.

Три месяца назад я познакомился с замечательным товарищем Grongy. Мало того, что он вдохновил меня полностью переписать код, так еще и нарисовал очень много графики (в которой я совсем не силен).

А что же было сделано?

  • Дальность отрисовки увеличилась на один блок. Раньше игрок видел 3 блока перед собой, теперь четыре. При этом последний блок затемняется с помощью дизеринга.
  • Каждая текстура хранится в разрешении 8*16 пикселей (учитывая, что в режиме Multicolor пиксели двойной ширины). Раньше на одну текстуру можно было использовать 3 цвета (один из которых был темно-серым). Теперь можно использовать любые три цвета для нижней и верхней частей текстуры.
  • Раньше на одном уровне можно было использовать всего лишь 16 текстур. Теперь текстуры хранятся на дискете паками по 64 штуки. И на одном уровне можно использовать их все!
  • Тоже самое касается и спрайтов. Раньше на одном уровне можно было использовать всего 4 спрайта для врагов и 4 спрайта для объектов. Теперь это число увеличилось до 32 штук (но, из-за того, что спрайты занимают довольно много памяти, аж 256 байт на один объект/врага, каждый спрайт-пак будет использоваться сразу на нескольких уровнях).
  • Начались размышления насчет новой боевой системы. Если раньше это было чисто пошаговое решение, то теперь хочется сделать что-то более активное.

Визуал

Небольшой тур по первому уровню. Можно оценить новую графику.

Как похорошели текстуры при Собянине. Сверху старая версия, снизу новая.

Dungeon Crawler для Commodore 64. Переписываю движок с нуля

Игрок теперь видит объекты на двух блоках перед собой.

Dungeon Crawler для Commodore 64. Переписываю движок с нуля

На мини-карте теперь отображается направление движения игрока.

Dungeon Crawler для Commodore 64. Переписываю движок с нуля

Один из вариантов боевой системы (поиграем в гольф?)

Немного баловства

Как бы игра выглядела на движке Wolfenstein 3D:

...и Doom=)

Самореклама

Остается надежда, что игра будет выпущена до конца 2025 года. Я постараюсь приложить все усилия, чтобы так и вышло, но загадывать ничего не буду.

Про каждый этап разработки я рассказываю в своем Телеграм-канале под названием (бухай): программируй (и там кстати можно найти ссылку на скачивание предыдущей демо-версии игры).

5
4
4
5
2 комментария

Круто. Ещё и Grongy в деле. Не, эту игру я точно жду.

1

Ничего себе! Инди геймдев на Commodore 64 живее всех живых! Удачи довести до релиза!

1