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

25
Дек
2020

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

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

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

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

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

 

21
Дек
2020

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

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

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

18
Дек
2020

И снова стражники

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

В первых двух лабиринтах стражники расставлены на своих местах и смотрят в свои стороны. Завтра продолжу.

17
Дек
2020

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

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

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

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

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

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

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

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

P.S.

12
Дек
2020

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

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

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

 

08
Дек
2020

Да будет звук!

Задолбавшись обучать принца скучной науке падать в ямы и не лезть на стены, я решил отвлечься и попробовать добавить фоновое воспроизведение музыки на музыкальном процессоре AY-3-8910. Добрые люди на канале БКшников снабдили меня инфой и всякими исходниками проигрывателей, но застрял я на процессе загрузки этого самого файла с музыкой в память СМК-512. Все файлы данных принца читались отлично на нулевую страницу СМК, а вот музыку надо было уже грузить на другую. И тут при загрузке стало все виснуть, заполнять память и экран всяким мусором. Причем каждый раз приколы были разные. Пару раз даже загрузилось! Я уже и на эмулятор грешил, и на прошивку СМК и совместимость режимов памяти с БК10/11. оказалось все проще — грузить данные с винта можно только в нулевую страницу, потому что на ней и сам контроллер HDD хранит свою служебную область. А подключаешь другие страницы — все накрывается медным тазом. Так что надо грузить данные в какую-то БКшную область памяти,  а потом уже вливать уже в СМК.

Поборов проблему с СМК, я начал пытаться воспроизвести в принце музыку. Сначала, конечно, принц издавал нечленораздельные звуки, но Владимир ‘KUVO’ Кутяков подсказал в чем проблема и помог встроить свой блок воспроизведения, за что ему огромное спасибо!

Вопрос «насколько затормозится принц, если в фоне играть музыку», который периодически меня мучал, теперь прояснен 🙂 Можно возвращаться к всяким пилам, ямам и шипам…

06
Дек
2020

Маленький шаг для принца…

Сегодня сделал несколько вещей:

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

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

05
Дек
2020

Двигаемся!

Много чего сегодня сделал:

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

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

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

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

Что вообще осталось доделать:

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

Глобальные доработки, которые можно сделать:

  • сделать маски ко всем спрайтам принца и стражников, перестать их вычислять на лету и надеяться на ускорение
  • грузить сразу все спрайты в память СМК и больше не обращаться к диску при фехтовании

 

 

04
Дек
2020

Прыжки

Обрабатывал напильником прыжок с места. Обратил внимание, что если прыгнуть через яму, тут же развернуться на месте и прыгнуть назад, то принц не долетает до старого места! Что за ерунда? Неужели прыжок вправо длиннее, чем прыжок влево?

Искал, искал ошибку — вроде все ок. Решил проверить длину прыжка в оригинале.

И вдруг:

Значит так и должно быть 🙂

P.S. AdamBazaroff подсказал, что так и должно быть — после прыжка принц делает шажок, потому в обратную сторону и не долетает. Что я могу сообщить по этому поводу? Ночью надо спать, а не править баги 🙂