Category: Баги

10
Янв
2021

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

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

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

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

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

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

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

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

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

 

08
Янв
2021

Стражники 2021

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

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

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

 

 

31
Дек
2020

Стражники

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

30
Дек
2020

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

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

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

25
Дек
2020

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

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

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

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

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

 

21
Дек
2020

Все фигуры расставлены

Как заявляли в сериале «Тьма», все фигуры расставлены. Все стражники поставлены на свои места, все заимели полагающееся количество «жизней» и смотрят в нужные стороны 🙂 Попутно обнаружилась, конечно, кучка багов. Теперь буду бороться с ними. Два уже поправил — принц не мог достать меч, стоя на краю пропасти (падал в эту самую пропасть) и мог висеть на уже упавшей плите, нагло болтая ногами. Обнаружились неверно управляемые решетки, а одна и вовсе отсутствовала.

Неприятная новость — похоже, утеряны спрайты дворцовой обстановки в виде отдельных файлов. Придется выковыривать их из уже собранного блока данных palace, чтобы перерисовать.

17
Дек
2020

В башку сапог!

Сегодня сделал «в башку сапог» — падение плиты на голову.

Хотя в процессе было и  так:

Так-с, посмотрим на недавний список:

Что осталось сделать из обработки препятствий:

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

Неплохо! Переходим, значит, к этому:

  • новый формат данных о стражниках, т.к. все-таки надо изначально задавать в какую сторону смотрит каждый стражник
  • в 8-м лабиринте сразу ДВА разных по интеллекту стражника, а пока что подразумевался только один алгоритм боя на лабиринт
  • в третьем лабиринте скелет вернуть на место и сделать все, что связано с его подлым возникновением
  • распилить движение начала бега на два, т.к. принц в оригинале может остановиться быстрей, чем у нас
  • сделать «левитацию»
  • реализовать кровищу на пиле?
  • перерисовать спрайты дворцов для другой палитры
  • звук на AY
  • исправить маски обломков и арки

P.S.

14
Дек
2020

Вычищаем баги

Чистил мелкие баги:

  • не работал прыжок вправо при управлении от джойстика (дело было в починке «кривляния на краю»)
  • при шаге вперед во время боя нажимаемые плиты сразу снова поднимались (уровень ног)
  • включил мультик в 6-м лабиринте
  • починил наконец-то прыжок через зеркало (в нем иногда оставался мусор) — надо было обеспечить принцу чистый фон перед вызовом мультика

Но багов, конечно, еще полно. Читал новости про уйму багов в Cyberpunk 2077 — чуваки не заморачивались))

 

13
Дек
2020

Стражник, летящий на крыльях ночи

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

 

12
Дек
2020

Долой спагетти!

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

Новая система работает шустрей и куда проще отлаживается. «Спагетти» канули в лету.