Category: Разработка

26
Фев
2021

Маскарад и кровища

Продолжил править маски объектов. Наконец-то нормальную маску получили обломки. Раньше для них использовалась маска обычной плиты, и если в подвалах это было не особо заметно, т.к. там торец плиты черный, то в дворцах это очень бросалось в глаза, когда обломки лежали у стены. Они накладывались на стену или решетку и выглядело это ужасно. Теперь все как положено. К тому же и принц теперь бродит среди обломков правильно — отдельные камни закрывают ступни.

Выглядело это так:

 

Теперь вот так:

 

Сделал кровищу на пиле. Т.к. в палитре подвала нет красного цвета, пришлось сделать кровь черной.

21
Фев
2021

Ох уж эти персы со своими коврами

Взял очередную запись о баге: «в 10м лабиринте две решетки друг над другом и падающая плита при падении портит вторую решетку». Ок, посмотрим!

Итак, действительно, решетки две, одна над другой:

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

Надо быстро загуглить карту лабиринтов принца да и глянуть. Гуглю. Что-то карт досовского принца не попадается, только карты клонов. И что там в этом месте? А вот что:

Какая-то ересь, однако. Небось чуваки тоже столкнулись с этой проблемой и решили не заморачиваться с такой сложной комбинацией решеток, просто убрав ее. Может и мне выкинуть ее нафиг? Авось никто и не заметит )) А что там в оригинале-то?

 

Е-мое… Да как так-то??  В оригинале тоже нет решетки здесь! Ковер повесили! А почему я весь день мучаюсь с этими долбаными фонами?? Надо тоже поставить там ковер!

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

Вуаля:

Ну и дополнительно поправил пару багов:

  • вывод падающих плит и решеток был не в той последовательности.
  • буферы фона для шипов и падающих плит пересекались, в итоге они не могли быть одновременно на экране, если с ними одновременно взаимодействовал принц
  • принц застревал у решетки в определенных условиях
31
Янв
2021

И пилим!

Сегодня сделал кувшин левитации, ура! Попутно выяснилось, что решетки держат паузу перед опусканием слишком долго — в три раза дольше, чем надо. Исправил. Еще исправил:

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

    А также нашел еще несколько глюков:

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

 

30
Янв
2021

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

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

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

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

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

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

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

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

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

 

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

 

27
Янв
2021

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

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

27
Янв
2021

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

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

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

26
Янв
2021

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

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

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

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

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

 

26
Янв
2021

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

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

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

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

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

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