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

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 подсказал, что так и должно быть – после прыжка принц делает шажок, потому в обратную сторону и не долетает. Что я могу сообщить по этому поводу? Ночью надо спать, а не править баги 🙂

03
Дек
2020

Начинаем приседания!

Приседания – это вам не просто так. Если игрок нажал клавишу вниз, это еще не значит, что принц должен просто присесть. Если он при этом стоит спиной на краю плиты, а сзади пусто – надо не садиться, а слезать. Если он стоит лицом к яме и на самом краю, то он тоже не должен садиться – он должен спрыгнуть вниз. А вот если не на самом краю, а чуть дальше от края – надо сесть. Но тут тоже есть нюанс: когда принц будет вставать, он наклонится над этой ямой и по его передним координатам определится пустота, но он не должен туда упасть, ведь под ногами есть опора. Но эта опора может и уйти из-под ног, если там падающий пол…

Вот сколько вариантов обработки простого нажатия кнопки “вниз”….

Но в целом, принц движется шустрее, чем на старом движке 🙂

28
Ноя
2020

И еще шаг

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

Долго не мог понять почему принц не хочет цепляться руками за опору при прыжке. И так и сяк крутил – вроде и опору видит и летит рядом. Чего ж не цепляется? Оказалось, все дело в счетчике высоты – если принц пролетел больше двух этажей, то он уже не должен цепляться за попавшуюся опору.  А счетчик показывал неверные данные.

Теперь цепляется 🙂