Для красоты загрузил в третий слой экрана картинку с лабиринтом, но пока это только обои, хотя и сформированные моей же программой вывода лабиринта. Бабуля ходит в среднем слое, так что никакого фона не запоминается, спрайт просто стирается черным квадратом. Выводится тоже простым MOV, без всяких BIS и масок. Все делает «слоеный» режим экрана AZ. Для устранения мигания спрайта используется две области памяти в качестве экранных страниц, попеременно включаемых в качестве среднего слоя экрана. В AZ можно любую область памяти использовать как экранную страницу. И в итоге бабуля бегает, спрайт не мигает, фон не затирается:
Вот так начнешь рассматривать старинные портреты… Оказывается, идею с выводом водопадов не постоянно, а путем однократного вывода и последующей анимацией потока только за счет переключения страниц экрана я так и не реализовал! Сегодня начал борьбу за общую оптимизацию и обнаружил это дело. Реализовал старую задумку, теперь водопады никак не влияют на общую скорость:
А также, сегодня доделал все, что связано с «пасхальной» локацией: вход, выход с возвратом в игру и на этом хватит терять на ней время.
Прописал скрипт демо-режима. Тут пришлось отрубать ИИ Шерифу (как и стражнику в демо-режиме Принца), т.к. Балбес-то ходил и прыгал по скрипту, а вот Шериф мог и не явиться на встречу, т.к. у него каждый раз могут быть разные соображения насчет того как и куда идти. Собрал вместе заставку и демо:
BUG: добавить звук огня в подвальных лабиринтах — добавил
BUG: подарки с жизнями и опытом не работают — теперь все работает, можно брать «мешки» с бонусами в виде очков, жизни, опыта
BUG: Балбес проваливается в 18-03, во втором через флаг в земле? — исправлено
Осталось:
BUG: кость + пуля = порча фона — это мне видится самым муторным
BUG: при отключенной музыке нет паузы после game over
BUG: нота сзади верхняя пролетела без урона
BUG: если Балбес получает толчок во время удара, то проваливается
BUG: мешок давит по новым координатам
BUG: скелет убит под землей?? boom был ниже!
Очередной прикол из серии «пусть об этом думает Тэд из будущего» — оказывается, после определения того, что Шериф верхом на глыбе доехал до потолка и должен быть раздавлен…. ничего не делается. Пришлось доделать.
Сегодня исправлено:
+BUG: шерифа давит мешком об потолок, но не давит. Потому что там и нет действия!
+BUG: скелет не запрыгивает? сцена 11-02, начало GOON DOCKS
+BUG: наискосок скелет летит странно
+BUG: увеличить угол нот, увеличить их скорость
+BUG: ноты при вопле выводить ближе
+BUG: скелет после появления в воздухе не сразу проваливается
В итоге Скелет перестал летать «странно», теперь он сразу падает, если возродился в воздухе (то самое убийство нечисти в полете), а также перестал исчезать, когда должен был запрыгнуть на уровень выше (там не было вообще такого кода движения, но кто их считает).
Что осталось исправить:
BUG: Балбес проваливается в 18-03, во втором черем флаг в земле?
BUG: кость + пуля = порча фона
BUG: подарки с жизнями и опытом не работают
BUG: при отключенной музыке нет паузы после game over
BUG: нота сзади верхняя пролетела без урона
BUG: если Балбес получает толчок во время удара, то проваливается
BUG: добавить звук огня в подвальных лабиринтах
BUG: мешок иногда давит по новым координатам
BUG: скелет убит под землей?? boom был ниже!
Начал я сегодня очередной раунд борьбы с багами. Часть поборол:
+BUG: для призрака координаты пересчитываются раз в пятилетку
+BUG: флаг Призрака не возвращается после его ликвидации
+BUG: в золотом нет призрака?
+BUG: призрак не поражает и в конце он красный
Потом взялся за это:
BUG: скелет в прыжке 137070 не вызывает FIGHT?
Это я заметил, когда пытался стукнуть прыгающего Скелета во время его пребывания в воздухе. И Скелет меня проигнорировал. Потом я проверил это на Шерифах и выяснил, что когда ноги Шерифа выше уровня земли, он игнорирует Балбеса и его удары. Соответствующий комментарий даже был в коде. То ли это было «пусть об этом думает Тэд из будущего», то ли я думал, что в прыжках нечисть сбивать будет только маньяк, т.к. там велика вероятность самому огрести. Попробовал я сделать это на оригинальной игре MSX и открыл для себя новость — оказывается, если поймать Шерифа во время полета и стукнуть, то он падает вниз, но после падения не бежит себе дальше, а именно валяется и дрыгает ногами. Т.е. эта ситуация была авторами предусмотрена. Мне и в голову не приходило охотиться на Шерифов и бить их на взлете — я старался держаться от них подальше. Ну… что делать, пришлось внедрять и мне такой же трюк. Теперь Шерифа можно бить в полете. Вот так это выглядит:
В процессе отладки этого механизма я поймал эпичный скриншот, когда за мной гонялись сразу ДВА Шерифа:
Список оставшихся багов (он пополнился):
BUG: Балбес проваливается в 18-03, во втором черем флаг в земле?
BUG: кость + пуля = порча фона
BUG: скелет не запрыгивает? сцена 11-02, начало GOON DOCKS
BUG: подарки с жизнями и опытом не работают
BUG: при отключенной музыке нет паузы после game over
BUG: ноты при вопле выводить ближе
BUG: кости вообще не набиваются!
BUG: нота сзади верхняя пролетела без урона
BUG: если Балбес получает толчок во время удара, то проваливается
Добавил необходимую фичу: растущая стена теперь давит как Балбеса, так и Шерифов/Скелетов. Для реализации пришлось допиливать функцию определения столкновения спрайтов, но это итак было нужно делать. До этого времени удары били нечисть весьма вольготно, а в оригинале по Мыши еще попробуй попади (не зря она синусоиды выписывает), да и прыгающий череп убивается в верхнем положении только если Балбес при этом тоже бьет в прыжке. Сейчас как раз это я и начал реализовывать. Попутно исправлен баг с некорректным завершением игры при задавливании мешком.
Реализовал сброс триггеров Мыши после ее уничтожения. Теперь Мышь появляется снова в том же окне, если снова пройти по триггеру. Добавил спрайты «лопания» врагов цвета самих врагов, а то раньше был один зеленый на всех. Спрайт «лопания» был последним, имеющим структуру байт+маска, так что процедуру поворота таких спрайтов удалось выкинуть.
Доделал (почти) Мышь — исправил глюк с маской, поправил движения. Мышь стала летать более плавно, перестала улетать за верхнюю границу экрана. Осталось сделать ей отдельный спрайт «лопания», ее цвета. А также сделать восстановление триггеров Мыши после ее уничтожения.
Свежие комментарии