Spiiin's blog

Геймдизайн, заметки

Читать дальше...

Искусственный интеллект в играх. Ссылки

Читать дальше...

Архетипы high-level программистов в геймдеве

Читать дальше...

Блендинг анимаций

Читать дальше...

Super Mario Факты

Читать дальше...

Design Review

Читать дальше...

Про изучение английского

Читать дальше...

Формат сжатия уровней в Jurassic Park [NES]

Давно не затрагивал тему реверс-инжиниринга NES игр. После разбора блочного формата описания уровней), остались несколько игр, отмеченных как comp (уровень в ROM сжат). Сжатие уровней редко используется в играх NES, чаще сжимается текст или данные описания графики. Да и сам блочный формат уровня уже является формой экономии информации.

Тем не менее некоторые игры используют сжатие RLE. В простых формах, как в Contra, или в более сложных, как в Felix The Cat , где применяется гибрид RLE и словарного метода. Другие применяют формы "описания на холсте", когда команды отрисовки задаются в виде “нарисуй что-то в координатах X,Y” (описание карты мира в играх Capcom или уровней в Super Mario Bros).

Это относительно простые алгоритмы. Но отдельные игры идут дальше и применяют более совершенные формы сжатия:

Kirby и другие игры HAL - гибрид LZ алгоритмов и RLE, с несколькими командами вроде “следующие биты развернуть”.
Dizzy и другие игры Codemasters - сжатие графики цепями Маркова.

Формат уровней этих игр описан. Однако, в моём списке игр, добавленных в CadEditor были ещё две — Jurassic Park и James Bond Jr. Я выбрал для разбора Jurassic Park, потому что знал, что в нём используется разновидность LZ, потому что хотел заодно прочитать про сам алгоритм и его разновидности.

Читать дальше...