Category: Разработка

17
Дек
2023

Борьба за скорость

Т.к. весь функционал игры уже готов и осталась свободная память, пришел момент для использования ее в борьбе за скорость:

  • отмена разворота черепов, скелетов и мышей удалась и дала нехилый прирост скорости ))
  • при выводе на четный адрес экрана попадается спрайт четной ширины — он выводится пословно
  • отлавливаются и спрайты шириной 3 и 5 байт, причем при выводе как по четным, так и по нечетным адресам экрана и при выводе та часть спрайта, которая может быть выведена пословно — выводится пословно. Прирост скорости налицо — беготня скелетов стала куда активней.

Нужно еще сделать вывод «газа» из труб по такому же принципу, как и водопады — вывести две фазы анимации на разные экранные страницы и дальше вся анимация уже только за счет переключения страниц, а вывода спрайтов нет. Этим еще дополнительно разгрузятся «тяжелые» места.

12
Дек
2023

Вот так начнешь рассматривать старинные портреты…

Вот так начнешь рассматривать старинные портреты… Оказывается, идею с выводом водопадов не постоянно, а путем однократного вывода и последующей анимацией потока только за счет переключения страниц экрана я так и не реализовал! Сегодня начал борьбу за общую оптимизацию и обнаружил это дело. Реализовал старую задумку, теперь водопады никак не влияют на общую скорость:

А также, сегодня доделал все, что связано с «пасхальной» локацией: вход, выход с возвратом в игру и на этом хватит терять на ней время.

 

08
Дек
2023

Секреты

Оставил все-таки элемент случайности в решениях Шерифа в демо-режиме, в итоге начальный демо-ролик иногда меняет сюжет, складываются прикольные ситуации.

Сделал подсчет процентов открытых секретов. В оригинале этого нет, но это добавит интереса игроку 🙂 При этом, чтобы набрать 100%, нужно найти и пасхалку, которая существует только на версии БК 🙂

 

07
Дек
2023

Заставка+демо

Прописал скрипт демо-режима. Тут пришлось отрубать ИИ Шерифу (как и стражнику в демо-режиме Принца), т.к. Балбес-то ходил и прыгал по скрипту, а вот Шериф мог и не явиться на встречу, т.к. у него каждый раз могут быть разные соображения насчет того как и куда идти. Собрал вместе заставку и демо:

05
Дек
2023

Демо

Сегодня Балбес успешно начал бродить по лабиринтам под управлением макроса вместо клавиш. Демо-режим на подходе 🙂

29
Ноя
2023

Добавил звуков

Сегодняшние фиксы:

  • добито управление воспроизведением фоновой музыки — глюки при рестарте игры обнаружил Alex Shestipaloff
  • добавил звуки рождения невидимых в данный момент Скелетов (сразу добавило похожести на геймплей оригинала)

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

 

28
Ноя
2023

Чтоб тебя, Тэд из прошлого!

Отдал игру на бета-тест, уже есть результаты:

  • оказывается, я до сих пор не заблокировал СТОП!
  • при перезапуске игры теперь сохраняется статус вкл/выкл музыки и звуков

Так же добил прошлые баги:

  • +BUG: при выходе из второго в двери что-то мелькало и очки мигали
  • +BUG: приземление наискосок на замок — зависон
  • +BUG: урон от пули при уходе в телепорт
  • +BUG: пули летят сквозь стены?
  • +BUG: замок после открытия нарисовался ниже и потом при убийстве черепа все зависло

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

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

 

27
Ноя
2023

Звукобаги

Сегодня исправил несколько обычных багов:

  • +BUG: прыгун скрытый прыгает рано
  • +BUG: 08-03 высоко выпадает из черепа (левел 2)
  • +BUG: монета не должна получаться при ударе капли об голову
  • +BUG: при уходе в телепорт не Балбес должен нести урон

И занялся подчисткой звуковых багов:

  • +BUG: при выключенной фоновой музыке все равно должны играться музыкальные фрагменты типа «взятие Гнома», «телепортация» и т.д.
  • +BUG: после перехода в новый левел сбрасывается флаг «music off»
  • +BUG: при воспроизведении фразы «взятие Гнома» нужно отключать все звуковые эффекты, пока фраза не доиграется, иначе музыка портится из-за совпадения каналов AY

В процессе отладки прошел игру от начала и до 4 уровня, по пути почти не встретив серьезных багов. Но набралось, конечно:

BUG: урон от пули при уходе в телепорт
BUG: капля бьет когда уже ушел
BUG: пули летят сквозь стены?
BUG: замок после открытия нарисовался ниже и потом при убийстве черепа все зависло
BUG: при выходе из второго в двери что-то мелькало и очки мигали
BUG: приземление наискосок на замок, когда одновременно срабатывает снятие замка, взятие эликсира и флага — зависон

При большом количестве действий на экране притормаживает, надо поискать где можно оптимизировать.

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

 

25
Ноя
2023

Внезапный индикатор

Попытался пройти игру и, конечно, список багов снова заколосился:

  • зависание при уроне — как оказалось, при переходе в новое окно не освобождались буферы фона для пуль, если пуля не закончила полет до смены окна
  • при уходе в дверь перехода на новый уровень применялись старые спрайты ухода
  • Шериф умудрился застрять в глыбе при выводе окна — на скрытых окнах глыбы не перемещаются, а при выводе окна Шериф как раз оказался впечатанным в такую глыбу. Редкий случай, однако. Мне повезло его отловить.

И хит дня — баг «зависание черт знает почему» при исчезании объекта с экрана. Вроде бы Шерифы давно уже успешно прибиваются глыбами, но тут вдруг такой случай вызвал зависание. Начал смотреть что не так… Оказалось, что при выводе запорчен фиктивный спрайт «пустота» размером 1х1, который я разместил с адреса 300. Ок, пытаюсь выяснить когда же он умудрился запортиться. Как оказалось он портится сразу при загрузке игрой своих файлов данных через EMT 36. Я и забыл, что EMT 36 использует область с адреса 300 не смотря на то, что ей указан другой адрес блока параметров. Как же это вообще работало раньше? А просто раньше файлы грузились без ошибки, а теперь вдруг при чтении через EMT 36 вылезла ошибка при загрузке файла HISUB.DAT, потому что его размер вылез за границу 40000. И EMT 36 гордо прописало байт 4 по адресу 301, в итоге ширина «спрайта» стала равна 2001 вместо 1.

Вот такой внезапный индикатор вылезания файла за границу 16К образовался.