Category: Блог

29
Окт
2023

Заставка переделана

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

29
Окт
2023

Пилим по-немногу

  • Исправил баг с хождением по воздуху в одном из нестандартных мест последнего лабиринта.
  • Перерисовал один элемент обстановки — левый нижний край телепорта. В одном из мест оказалось, что отсутствует правильный край полки. Я подумал, что ошибся, посмотрел как там в оригинале — а там тоже полка у телепорта обрывается без «правильного» левого края. Но там спрайт сам сделан так, что позволяет завершать полку только с помощью него одного. Перерисовал свой спрайт, теперь все также.

25
Окт
2023

Двигаемся дальше!

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

И это радует.

 

24
Окт
2023

Мелкие нудные фиксы

Был загруженный работой день, но удалось  немного продвинуться:

  • выровнены по высоте все варианты прыжков вверх — при отскоках, при столкновении со стеной и продолжении смещения вверх при этом и т.д.
  • исправлена проверка на землю при приземлении из прыжка вперед — Балбес пролетал через край полки слишком вольготно там, где в оригинале все-таки зацеплялся за ее край
21
Окт
2023

О, сколько нам открытий чудных…

В процессе разборок с особенностями прыжков Балбеса в разных услових выяснилось, что в оригинале существует еще один хитрый прыжок! Если стоять в упор к небольшому возвышению и нажать «прыжок вперед», то Балбес двигается сначала только вверх, пока не преодолеет это препятствие по высоте, а потом сдвигается вперед на  эту полку. Буквой «Г» прыгает, короче говоря. У меня, конечно, он так не умеет. Придется обучать…

 

17
Окт
2023

Допиливаю движения

Исправляю движения Балбеса:

— раньше он не реагировал на нажатие клавиш «Прыжок наискосок», если стоял, упершись в стену и ему некуда было прыгать вперед. Теперь Балбес при этом прыгает вверх, как и в оригинале. Если же стена встретилась уже во время прыжка, то он продолжает оставшееся движение уже только по вертикали, но все-таки вверх, как и в оригинале. Раньше просто сразу падал вниз.
— увеличил скорость при падении «наискосок», теперь падение выглядит более естественно.

Еще нужно исправить движение «вперед», если Балбес уперся в препятствие. У меня сейчас он просто не реагирует (идти-то некуда), а в оригинале занимается ходьбой на месте.

16
Окт
2023

Очередная порция багов

  • неверно вычислялся BX при широком спрайте
  • при вертикальном прыжке с ударом о потолок происходил переход в базовую стойку, а нужно сразу падать вниз. Это было незаметно, пока к низкому потолку не добавлялась рядом стена — тогда срабатывало еще и обнаружение стены, что вело к неверному отскоку снова вверх
14
Окт
2023

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

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

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

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

 

 

12
Окт
2023

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

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

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

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

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