Category: Баги

19
Янв
2021

Неплохая охота

Сегодня исправил много глюков:

  • BUG: принца спиной можно запихать влево в решетку
  • BUG: стражника спиной можно запихать в кирпич
  • BUG: при переключении окна вниз и повисании на нижней fly-плите, она должна становиться верхней
  • BUG: один стражник на шипах убился, а совершенно другой труп показывается тоже «зашипленным»
  • BUG: при фехтовании принц, отскакивая от решетки, переходит в base
  • BUG: стражник жмет крайний правый fly и он рисуется на полную ширину
  • BUG: принц приседает и теряет меч пропуская удар на краю пропасти

А также добавил корректную потерю жизни стражником при падении с различной высоты.

18
Янв
2021

Байки из склепа

Начал делать потерю «жизни» стражником при падении его с большой высоты. Т.е. если стражника спихнуть вниз, то он должен потерять одну «жизнь» или вообще убиться, если высота была слишком большой. Сделал примерно, решил проверить как это работает. Нашел удобное место в 9-м лабиринте, иду к нему. По пути попадаются другие стражники, одного просто убил, другого запихнул в пилу. Прохожу обратно мимо «просто убитого», а он почему-то лежит в виде запиленного, хотя пилы рядом нет. Записал в список глюков, требующих исправления «не сохраняется тип трупа».  Иду дальше, попадается еще стражник. Скидываю его на шипы. Захожу в нужное окно — и все виснет. Хмм… Давненько такого не было.

Начинаю все снова. Иду, расправляюсь со стражниками, опять вижу, что надо исправить эту фигню с не тем видом трупов. В оригинале, кстати, трупы вообще просто исчезают, и я начинаю понимать почему. Но это потом, сначала надо понять, почему все виснет в том окне. Дохожу до проблемного окна — ничего не виснет. Интересно. С чем же был связан глюк? Неужто с новой обработкой падения стражника? Проверяю — вроде ничего там криминального.

Ок, иду снова. Убиваю стражников, скидываю одного на шипы, т.к. шипы глубоко внизу и, может быть, в процессе полета новая обработка падения портит память? Вроде осталось все в норме. Только вот эти трупы несовпадающего вида… Но это потом.

Дохожу до проблемного окна. Не вхожу в него, сохраняю состояние памяти, чтобы сравнить. И тут вижу, что внизу торчит башка стражника. А чего он там торчит? Там был убитый стражник, но почему он забит в землю? А потому что спрайт «нормального трупа» лежит на плите, а тот, что на шипах — он гораздо выше над плитой выводится… И так как адрес вывода этого «обычного трупа» сохранен, а «вид трупа» — нет, то тупо берется состояние последнего убитого стражника. А последний был на шипах. И вот «заколотый на шипах» стражник выведен в самом низу в полную высоту, вместо обычного спрайта, затирая память.

Т.е. всю дорогу я наблюдал причину того самого глюка с зависанием, который хотел исправить и это было именно отсутствие сохранения «типа трупа». Но оставлял на потом 🙂

В оригинале все нелогично — исчезают все трупы, кроме тех, что лежат на плитах, управляющих решетками. Потому что лежание на плите оставляет решетку открытой.

14
Янв
2021

Кстати о замыливании глаза

Внезапно обнаружил, что факелы горят неверно )) Выводится только половина пламени по высоте. Поломал я их, видимо, пару месяцев назад и во всех роликах это теперь конечно видно) Починил.

И наконец-то научил стражника не проходить сквозь решетки аки жидкий терминатор!

 

10
Янв
2021

Немного о стражниках и решетках

Недавно я обнаружил, что некоторые решетки открываются не в том порядке, в каком должны. Точнее, не теми плитами управляются. Загнал нужный лабиринт в редактор и понял, что редактировать привязку решеток к управляющим плитам невозможно. Можно только задать все связи заново. Ошибся — задавай все снова. Почему так сделано и как я умудрился все их связать? Ведь никаких записей на этот счет я не делал, это точно. Видимо, по памяти. И это неудивительно: чтобы перенести лабиринты на БК, мне приходилось заходить в КАЖДЫЙ экран каждого лабиринта. Буквально в каждый. Это означает, что я падал во все пропасти, на лету нажимая паузу и печатая экран на матричном принтере (бжжж…бжжжж..). А если по пути попадались падающие плиты? Надо было выяснить, какие падают, а какие нет. Это тоже добавляло повторных проходов. Конечно у меня все эти решетки отпечатались в памяти, ведь я прошел их по сто раз. Но некоторые связи были неочевидны — если по пути ты нажимал несколько открывающих плит, то уже не был уверен, какая именно плита какую решетку открыла, ведь одна плита может открыть их сразу несколько.

В итоге так и вышло — в нескольких решетках я ошибся. Исправляю теперь их прямо в дампе, так проще 🙂

Распечатанные листы А4 мы склеивали в огромные лабиринты, которые едва помещались на полу комнаты)) Долгое время одна такая распечатка в свернутом виде хранилась у меня. Но сейчас я ее не нашел. Наверное все-таки выкинул, или использовал при ремонте для закрывания пола…

Иногда память играла злую шутку — что-то запоминалось глобально, а какие-то вещи ускользали. Глаз замыливался. Я так привык проходить лабиринты на скорость, что только недавно узнал о том, что принц может и сам повторно доставать меч в бою, если сложил его. Клавишей «вверх». Или что стражник может делать шаг назад, а также может хитро защищаться. Еще стражники теряют жизнь при падении с высоты, так же как принц, и могут помереть от этого, если жизнь была последней. Стражники видят принца сквозь решетку, слышат его шаги и отслеживают где он там бродит. Знают, когда между ними и принцем есть падающие плиты и не наступают на них. Могут гоняться за принцем по лабиринту, прыгая при этом в неглубокие ямы. Но не всегда! Если принц сам сложил меч и сбежал — стражник не будет его догонять. Но если в соседнем окне тоже есть стражник, то второго туда никак не заманишь. Двух стражников на экране в первом принце не бывает, это во втором принце они бегают толпами.
Вот такие детали в поведении стражников придают игре реализма. Враги принца не тупые монстры какие-нибудь)) А я стражников просто лихорадочно убивал и бежал дальше) Но при работе над фехтованием это все всплыло. Делать надо было все, иначе это уже не то…

Возможно, это и стало причиной того, что в 200х году проект застопорился. Памяти к тому времени совсем не осталось, код уже вылезал в экран. Экономия шла жуткая. И тут вдруг выяснилось, что стражникам нужен гораздо более сложный интеллект. Да еще и оказалось, что нескольких спрайтов стражника не хватает, они как раз используются для хитрой защиты. Там такие странные позы принимает стражник…

Потом оказалось, что и у принца есть такая фаза…

Все эти спрайты было уже почти некуда размещать, и это не придавало энтузиазма.

Поэтому с появлением СМК весь энтузиазм вернулся! Дополнительная память позволила развернуть многие циклы, оптимизировать некоторые критичные алгоритмы с помощью таблиц и это все значительно увеличило быстродействие принца. И есть еще пара глобальных вещей, которые могут его еще ускорить. Правда, мне кажется что и так хорошо))

 

08
Янв
2021

Стражники 2021

Много исправлений в стражниках. Во-первых, это исправление самих алгоритмов боя, они стали более близки к оригиналу. Во-вторых, куча исправлений:

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

Но глюки еще есть, завтра продолжу охоту на них 🙂

 

 

31
Дек
2020

Стражники

Стражники снова научились ставить блок и отучились по-дурацки подставляться под удар 🙂 Исправлен глюк со стражником, пролетающим более двух экранов. Исправлен глюк с нажатой плитой, на которую падают обломки.

30
Дек
2020

Еще немного, еще чуть-чуть…

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

Но багов еще полно )

25
Дек
2020

Стражники и баги

У стражников, конечно, еще полно багов и недоделок. Во-первых, стражник, падая вниз, не учитывает высоту и остается живым, если ему не попались внизу шипы. А в оригинале стражник теряет жизнь, если пролетел два этажа. И я даже видел, что стражник, теряя последнюю жизнь от падения, помирал. Во-вторых, в оригинальном принце невозможно получить двух стражников на экране одновременно, и для этого автор применил ухищрения. Как я не заманивал одного стражника в окно, где уже есть второй — он не хотел идти дальше. Знает, гад, что два стражника это перебор. У меня же пока стражник охотно бежит за принцем везде. Надо его отучать от этого. Во втором принце, кстати, стражники уже толпами бегают.

Сегодня исправил несколько хитрых глюков. Один состоял в том, что стражник мог нажимать плиту, открывающую решетку, сам при этом находясь в другом экране. Собственно, это правильно, почему бы ему не нажать, раз он на нее наступил. Только вот для стражника эта плита на границе окна имела координату Х=0, а в отображаемом окне Х этой плиты был равен 12. Это приводило к глюку. Второй глюк был как раз связан с несколькими стражниками в соседних окнах. Ну и еще мелочи исправил — для стражника не отображаются «пустые» значки жизней, как у принца.

Попытался переделать спрайты дворцовых уровней в другую палитру, но что-то ничего удобоваримого не получилось. Цвета получаются не менее вырвиглазные, чем сейчас.

Понемногу движемся 🙂