Author: grf

26
Апр
2023

Общий файл лабиринтов готов

Сделал батник для упаковки/перевода в obj/линковки/сборки в единый файл всех лабиринтов. В итоге получается файлик LEVELS.DAT размером 25 килобайт, который расчитан на поблочное чтение в процессе работы игры. Теперь буду писать загрузчик для этого набора данных.

Вот как работает автоматическая сборка:

23
Апр
2023

Заработала нумерация сцен

Перевел на новую систему изменений лабиринта имеющиеся на данный момент случаи. Исправил обнаружение «мешков-бонусов», сломавшееся при переходе на динамический размер лабиринта. Сделал вывод нумерации сцен в правом верхнем углу.

22
Апр
2023

Заработала система упакованных лабиринтов

Итак, сегодня система работы с упакованными лабиринтами заработала в полную силу. Теперь не только распаковываются нужные сцены, но и сохраняются изменения в лабиринтах, внесенные игроком — собранные ключи, бонусы, эликсиры и т.д. Так как распаковка сцены меняются при переходе через телепорт (череп), то обратно упаковывать данные в сцену слишком долго. Поэтому просто создан список изменений для каждой сцены, который применяется после распаковки этой самой сцены. Пришлось изменить способ хранения в лабиринте «шкафов», чтобы не забивать список изменений ненужной инфой. теперь «шкаф» кодируется всего одним байтом. Заодно это сократило и словарь упаковщика, что тоже приятно.

Пока что в список изменений для теста вносятся только собранные ключи, так что надо прикрутить заполнение списка и к остальным вносимым изменениям. И можно будет делать переходы между уровнями. Там уже надо грузить с диска новый уровень целиком. А так как «DOS» уже прибита в памяти, то придется делать это прямым чтением блоков с диска. Чтобы не разгребать кучу вариантов хранения каталога диска в БКшных дисковых системах, поддерживаться будет только ANDOS.

 

19
Апр
2023

Продолжаем фиксить

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

15
Апр
2023

Потихоньку чиню сломанные механизмы

Чиню то, что поломалось при переходе на динамический размер сцены:

  • Шериф иногда стрелял «холостыми» — пули не летели. Потому что неправильно определялось смещение в лабиринте для пули. Было перепутано смещение на экране и в лабиринте.
  • Черепа иногда ходили по воздуху — древний баг, оказывается. В некоторых случаях некорректно искалась земля под черепом.
  • Прыгающий череп стукался о паровые трубы — ну, он впервые их увидел
  • Каменная глыба стирала сама себя — неправильно считалось смещение, опять же из-за смены формата

Все это пофикшено. Осталось добить прыгуна, в некоторых местах он находит не ту землю, что надо.

И просто для прикола: фоном слушал Quincy Jones и вдруг обратил внимание, что музыка как раз подходит под происходящее на экране 🙂

14
Апр
2023

Телепорты снова работают

Сегодня удалось-таки прицепить лабиринт в новом формате к игре и заставить его заработать. При переходе из сцены в сцену через телепорт нужная сцена распаковывается из сжатого вида и Балбес запускается в нее. Таким образом, весь уровень уже не занимает страницу 16К целиком. Теперь он занимает меньше 4 килобайт, из которых один килобайт — словарь. Но надо еще доработать напильником движок, а то местами стали черепа по воздуху летать и каменные глыбы ведут себя подозрительно. Все  это последствия перехода на динамические размеры сцен.

 

13
Апр
2023

Заработал новый упаковщик

Итак, новый упаковщик заработал — словарь на новом лабиринте (со всеми выставленными флагами и бонусами) составился успешно, лабиринт загрузился и даже распаковался. Правда, один прикол все-таки вылез — каменная глыба теперь почему-то падает не до земли. Но это связано не с содержимым распакованного лабиринта, а с тем, что сцены теперь переменных размеров и в этом плане я что-то пропустил в обработке поиска земли под глыбой при падении.

P.S. Альбом Quincy Jones «Smackwater Jack»  1971 года просто шикарен.

 

 

09
Апр
2023

Хитрости упаковки

Придумал новую структуру уровня, для использования с упакованными лабиринтами. Начал реализовывать — делать таблицы шерифов, бонусов, связей телепортов и организовывать их по новому принципу. Собрал новый уровень, в нем содержатся все данные и 5 сжатых сцен. Ну, думаю, пора попробовать загрузить такой новодельный уровень, распаковать его в игре и запустить туда Балбеса. Так-с, где там наш распаковщик, надо его прицепить к основному коду…. Где же он?  А нигде! Распаковщик, оказывается, не написан! Значит я хотел прикинуть, насколько сожмутся лабиринты, чтобы знать как дальше организовывать работу с переходами из уровня в уровень и т.д. Написал упаковщик, сжал лабиринты, прикинул, порадовался.  И тут я приостановил работу над Goonies и начал делать Setup для AZ.

Ок, нет распаковщика — сейчас мы его напишем, там же все просто. Написал. Попробуем распаковать — ага, распаковалось. И что там распаковалось? Не совсем что-то совпадает с оригиналом. Детали не совпадают небольшие, нюансы. Точнее вообще какая-то ересь вместо распакованного лабиринта получилась. И почему же так? А потому что там и в упакованном ересь какая-то, не так должно выглядеть. В словаре одно, а в архиве другое. Значит и упаковщика тоже нет…

В итоге я нашел в чем был глюк в упаковщике и он стал упаковывать значительно быстрее. А распаковщик вообще за один проход все распаковывает почти мгновенно. Ну вот, теперь можно снова попытаться загрузить лабиринт нового формата в игру…

06
Апр
2023

Формат лабиринта

Пришло время собрать лабиринты в более осмысленные данные, чем один простой уровень, на котором я отлаживал основные механики игры. Уровни у меня уже сделаны и упакованы, но пока что все работало в одном распакованном уровне. Теперь надо начинать работать со сжатыми сценами. А так как лабиринты во время игры изменяются (ключи берутся, бонусы собираются), то новые данные надо снова упаковывать при переходе из сцены в сцену. Так что начинаю внедрять новый формат. Посмотрим, успеет ли при переходе через «череп» за вменяемое время упаковаться старая сцена и распаковаться новая, или надо делать это более хитро.