Category: Баги

14
Окт
2023

Любимое (нет) занятие — фиксим баги

  • исправлен прыжок Балбеса в упор к стене
  • исправлены «дикие скачки», если потолок над Балбесом низкий и он ударяется головой
  • Шериф иногда неверно пересекал окно при уходе влево

Когда я исправлю все баги — игра будет готова. Останется только сделать финальный мульт и внедрить пасхалки.

Пасхалку в Принце никто пока не нашел. Но в первом DOOM последний секрет был взят только в этом году 🙂

 

 

12
Окт
2023

Отловлен древний баг!

Так как я вышел на тропу борьбы с багами, первым делом решил заняться самым надоевшим багом — Шериф периодически проваливался под землю в самых странных местах. Причем, выглядело это хитро — приходишь в какой-нибудь кусок лабиринта, а Шериф там провалился в «окоп» и бродит из угла в угол, запертый в «канаве». Как он туда попадал? Я пытался поймать его конкретно на этом месте «провала», он приходил и бродил без всяких проблем по этому самому месту, не проваливась. Т.е. дело было не в ошибочном обнаружении какой-то ямы вместо обстановки, он реально нырял в яму только если его никто не видел. У меня уже были мысли, что он смещается туда при какой-то нештатной ситуации, типа «попал под падающую глыбу и отскочил сразу в стену». Но как это выяснить?

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

Т.е. Шериф действительно проваливался, а не телепортировался от каких-то нештатных ситуаций. Осталось выяснить, почему он не находил там землю. Оказалось (как обычно) все просто. На заднем плане в этом месте «шкаф», а шкаф в сжатом лабиринте представлен всего двумя кодами — признаком шкафа и кодом его содержимого. Полноценным шкафом это становится тогда, когда шкаф выводится на экран. А когда он выводится? Когда в окно со шкафом (вот фразочка!) заходит Балбес. Вот и получается, что Балбес своим присутствием делает шкаф полноценным, со стенами и ЗЕМЛЕЙ, а бедные Шерифы и Скелеты вынуждены бродить по лабиринтам, где вместо шкафа нули… Вот они и проваливаются в тартарары то там, то сям…

Как я пофиксил этот глюк? Стал ли я полноценно распаковывать невидимые шкафы, чтобы Шерифы не ныряли в ямы? Нет, теперь упаковщик лабиринтов вместо нулей в нижней линии шкафа пишет код земли, да и все. Шерифы теперь видят землю вместо недораспакованного шкафа, а на сам шкаф им плевать 🙂

 

 

04
Сен
2023

Лунная походка!

Исправлял баг с летающими по воздуху черепами (не искались ямы под «хитрым» типом черепов) — в итоге придумал как упростить вообще поиск препятствий для всех типов черепов. Выкинул кучу кода, ставшего ненужным. Проверяю результат — все ок. Но вот вдруг Шериф в одном из случаев решил закосить под Майкла нашего Джексона:

С выкинутым кодом это никак не было связано, тут поймался редкий случай неправильной коррекции относительно земли при приземлении. Был исправлен. Но прикольно.

31
Авг
2023

Шерифы-Призраки

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

Перед этой глобальной задачей я решил починить Призрака, который поломался не так давно. Обнаружилось, что сломался он частично из-за ошибки в константе (1000000 вместо 100000), а частично потому что вывод Шерифов был переделан. При этом Призрак в оригинале помирает только от 5 ударов, с каждым полученным ударом меняя цвет. Появилась у меня идея, как реализовать эту смену 5 цветов для спрайта Призрака.

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

Итак, Вопящий Шериф теперь обзавелся своим цветом. А Призраком займусь завтра 🙂

Ну и забавный глюк с огнем:

27
Июл
2023

Правим баги, добавляем фичи

Исправлено:

  • скелет при рождении мог перенестись в соседнее окно, если перед этим убился у правого края окна
  • скелет убивался на краю при попытке спрыгнуть

Добавлено:

  • если были взяты кеды и ходьба стала ускоренной, то при рестарте игры такой она и оставалась
  • скелет теперь сам решает, прыгать ему в яму, перепрыгнуть или просто развернуться и уйти от края земли

24
Июл
2023

Баги и фичи

Исправлены баги:

  • наконец-то поправлен баг с неправильным спрыгиванием Балбеса с обрывов
  • стал возможен рестарт игры
  • при рестарте игры обнулялся рекорд очков
  • при переходе в новый уровень оставался ключ, если он не был использован

Добавлены фичи:

  • оптимизированы списки капель, газов и сталактитов — высвобождена память
  • заполнены таблицы окон второго лабиринта

 

18
Июл
2023

И снова баги

«Если уж начал править баги, то сложно остановиться…»

  • fixed рождающиеся черепа наносят урон, хотя еще не родились!
  • fixed монета проваливается сквозь пол раньше, чем должна спрыгнуть
  • fixed шериф не может сойти с мешка вправо при низком потолке
  • fixed монета должна просто исчезнуть, а не лопаться

А вот так (с помощью Spacedesk) можно использовать планшет в качестве второго монитора. Вывел на него часть окошек эмулятора со всякими дампами/дизасмами:

13
Июл
2023

Правим баги

Для дальнейшего развития игры необходимо избавиться от накопившихся багов, а то пытаешься тут испытать новую фичу, а где-то в невидимой части лабиринта Шериф неправильно убивается мешком и все виснет. Раздражает. Поэтому решил провести работу над ошибками:

  • fixed: на основной заставке при нажатии клавиши остается линия от головы шерифа
  • fixed: на промежуточной заставке может не быть рисунка собранных гномов
  • fixed: промежуточная заставка не должна прерываться клавишей
  • fixed: монета проваливается в пол — переделана работа со скрытыми триггерами
  • fixed: шериф неправильно спрыгивал влево при низком потолке
  • fixed: шериф неправильно залезал в окно выше текущего (остатки глюков от смены размера лабиринта на динамический)

Как обычно, встретились баги, которые вызывают мысль «как оно вообще работало??»