Category: Блог

30
Янв
2021

Пилите, Шура, пилите

Сегодня доделывал «высотомер», который определяет как низко пал принц. Рано я вчера радовался — как выяснилось, не всегда высота измерялась правильно. Принц ведь умеет не только вертикально падать, он еще и со смещением вперед летает, если прыгнул с ускорением. Выкинул этот костыльный счетчик, сделал другой. И он работает.

В некоторых случаях принц вроде бы и убивался, но вставал, как ни в чем не бывало. При этом жизней у него уже не было и надпись «Press any key» выводилась. Но трупа не было. Оказалось, это последствия того, что труп все-таки ищет под собой яму или кнопку. В оригинале он ищет только кнопки, так что если там принц упадет на «ветхий» пол, то плита под ним упадет, а труп останется висеть в воздухе. А я когда делал определение кнопок под трупом (должен же он своим весом ее нажать), то стала срабатывать и проверка на яму. В итоге труп стал падать вместе с «ветхим» полом, потом еще может на шипах заколоться — такой затейник этот труп… Решил так и оставить. Но вот и последствия этих зомби-развлечений: труп иногда еще и вставал! Пришлось отучать.

Исправил баг с шипами, когда принц влетает в экран сверху прямо на шипы, а шипы еще не готовы. Теперь они его всегда рады встретить сразу по прилету.

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

Осталось что? Вот что:

  • сделать отдельную раскраску для стражника в 8-м
  • кровища на пиле
  • кувшин левитации
  • звуки
  • музыка
  • загрузка из любой БК-шной OS
  • заставки
  • демо-режим
  • задание управления от джойстика
  • сплясать в ластах на столе
29
Янв
2021

Yessss!!

Сегодня я отловил этот дурацкий глюк с проваливанием стражника в пол. Проявлялся он редко, потому я иногда думал, что он и вовсе «сам исправился». Фиг там! Он проявлялся только когда стражник стоял за плиту от края, но «задняя» нога следующего спрайта попадала над ямой. И тогда, найдя яму по задним координатам, он, какого-то фига, падал  в яму по ПЕРЕДНИМ координатам. А там, конечно, никакой ямы не было. И я исправил эту ересь!

А заодно я исправил еще один надоевший глюк с тем, что принц умудрялся влететь в стену, когда падал в узкие пропасти. Была перепутана ширина спрайта и координата, в которую корректировался принц. Пофикшено.

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

Эти три глюка давно и изрядно бесили меня.

28
Янв
2021

Скелет — читер!

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

 

Реализовал все это дело, теперь скелет (чуть не написал «мой скелет») в нашем принце тоже ждет принца где положено.

 

27
Янв
2021

Изворотливый скелет

Проявился-таки старый глюк с проваливанием под землю стражника, стоящего на краю. Все никак не могу отловить его в повторяемом виде. На этот раз уже скелет решил, что ему-то можно перемещаться под землей ))

27
Янв
2021

Конечно же стражники

  • Сделал загрузку стражника второго типа в 8-м лабиринте. Потому что первый стражник там круче других. Выглядят они пока одинаково. Надо крутому сделать другой прикид.
  • Сделал в третьем лабиринте альтернативное начало после прохождения дальней решетки, как и положено.
  • Установил скелета куда ему положено.
  • Отучил его помирать при падении с большой высоты.

    Теперь надо его научить вставать когда положено.

26
Янв
2021

Обучение стражника

Несколько месяцев назад стражник был обучен преследовать принца в бою. В том числе, прыгая для этого вниз. Но вот высоту стражник при этом не учитывал, потому норовил сигануть во всякие пропасти. Сегодня я решил его научить быть умнее. Сначала стражник вел себя так: пока принц был на два уровня ниже, стражник за ним не следовал. Но как только принц поднимался — стражник прыгал к принцу (ведь он ждет!), но пролетал мимо.

Я научил стражника оценивать высоту ямы, прежде чем прыгать в нее. И стражник стал останавливаться на краю, заглядывать вниз, говорить «Да ну нафиг!» и успокаивался. Что же будет если принц залезет на уровень стражника? А вот что:

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

Это никак не устраивало, конечно. Попытался добавить интеллекта стражнику. И тот нашел выход проще:

 

26
Янв
2021

Мальчик квадратный ковер выбивает

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

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

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

В процессе всех этих мытарств выяснилось, что два места в 5-м лабиринте сделаны неверно. Плиты обваливались не там, где должны. А где должны — не обваливались. Пришлось переделывать лабиринт, чтобы должны было там где должны. И наоборот, что характерно, тоже.

Ну и напоследок, я решил быстренько поправить обмен местами стражника и принца при фехтовании. А то там беспредел какой-то был: то отскочат друг от друга на три метра, то спинами друг другу повернутся. Хаос и аквадискотека, короче. Пришлось отучать.  «Быстренько» вылилось в три часа скрипения мозгами. Вроде получилось.

 

19
Янв
2021

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

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

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

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

18
Янв
2021

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

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

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

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

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

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

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