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

13
Апр
2021

Правим баги, любимое занятие

YellowRabbit с упорством откапывает такие глюки, которых я уже давно (и даже никогда) не видел, по причине того, что просто не занимался всеми возможными игровыми ситуациями. Этот же парень подошел к альфа-тестированию с упорством бульдога. Это похвально, конечно. Но то, что он постоянно что-то находит….  Читал я в книге Мекнера что-то типа «задрали уже эти парни из отдела качества!» Шутка, конечно))

Итого исправлено:

  • мелькание кусков спрайтов стражника через границу экрана
  • при помирании принца с одновременной со сменой экрана не включался флаг «стирать по маске»
  • меч не выводится в крайнем правом положении
  • не срабатывает кнопка открытия решетки при вызове мультика в 5-м
  • доставал меч после убегания двойника
  • надпись LOADING меняет цвет
  • если убитый принц вылетел вниз — в новом окне стирается несуществующий стражник
  • в одной из пропастей 3-го лабиринта нет дна!
  • слишком далеко смещается при выпивании кувшина и его рубит пила

 

 

11
Апр
2021

Стражники тоже будут вечны

Желтый Крол нарыл глюков, приходится их исправлять 🙂 Среди них такие, за которые браться надо было, конечно, но очень не хотелось. Со стражниками я знатно помучался, они стали хорошо драться, но вот на границе экрана вытворяли всякие странности. Убил на это два дня, но теперь стражники уже не впрыгивают в окно как черт из табакерки, а входят плавно, причем сначала постепенно появляется меч и т.д. Для этого пришлось сделать специальную процедуру поиска стражника в соседнем окне. Теперь на границе окна со стражником можно драться. Но еще есть артефакты — иногда вылезает все-таки спрайт на противоположную сторону. Будем с этим бороться.

Заодно добавил мигание последней жизни стражника. А также исправил баг с запилом пилой — счетчик пустых жизней принца не выводился.

10
Апр
2021

Новая музыка и старые баги

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

Поправил и другие баги, обнаруженные Желтым Кролом:

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

Добавил мелодию перехода в новый лабиринт:

07
Апр
2021

Шипят шипы

Желтый Крол заявил, что столб от решетки криво накладывается на принца. Маска имела по одному пикселу слева и справа от столба, чтобы создавать некий «бордюр». Перерисовал маску. Принц стал просвечивать в столбце шириной в 1 пиксел справа от столба, если решетка стоит в крайнем правом элементе окна. Расширил столб. Решетка стала некрасиво накладываться на столб, и ковры в дворцовых лабиринтах тоже прилипли к столбам. Перерисовал решетку, маску решетки, все углы решеток, все ковры. Заодно перерисовал маску арки в дворцовых лабиринтах — сделал ее тоньше. И с разгону сделал еще и маску для шипов. Теперь принц чинно-благородно гуляет между ними, а не затирает их собой:

Да, еще был исправлен высотомер, тоже по наводке YellowRabbit.

 

05
Апр
2021

Правим звуки

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

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

 

04
Апр
2021

Эта музыка будет вечной

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

02
Апр
2021

Плеер музыки в Принце заработал!

Сегодня внедрял плеер музыки в принца. Возникла странная проблема с проигрыванием упакованных psg — почему-то у одного файла был заголовок в 64 байта, а у других он в упор не создается. Т.е. звук выпивания большого кувшина играется нормально, т.к. у него есть заголовок, а звук для малого кувшина хоть убейся создается без такого заголовка. Плеер его, конечно, играть не хочет, потому что там первым делом пропускается 64 байта с начала звука. Ок, прицепил к нему эти 64 байта от звука большого кувшина — оба звука стали играться. Думаю, может он вообще нафиг не нужен? Убрал в плеере это смещение на 64 байта, подсунул ему звук малого кувшина без заголовка — играется! Отрезал заголовок и от мелодии большого кувшина — фигушки, не играется. Пока что неясно, будем разбираться.

Ну и ладно, прицепил к обоим звукам заголовки, встроил плеер в принца. Пришлось повозиться с процедурой начала воспроизведения музыки, ведь музыка выпивания кувшина должна начаться ПОСЛЕ окончания звука «Буль-буль-буль», а не вместо )) Хотя событие это одно. Сделал процедуру определения конца звука. Музыкальный плеер ждет, когда закончится какой-либо звук, потом выставляет максимальный приоритет во все каналы и начинает играть музон. Тут уже плеер звука ждет, когда закончится музыка. Ну и все получилось:

02
Апр
2021

А вот и музыку подвезли

Набрал музон выпивания большого кувшина в Vortex Tracker, пытаясь сделать его похожим на оригинальный. Затем сохранил его в формате pt3. Потом преобразовал его в PackedPSG с помощью утилит Владимира ‘KUVO’ Кутякова, за что ему огромное мерси. Потом взял исходник его же плеера psgplay, переписал его в формате micro1103, развернув макросы. Скомпилировал на БК. Прицепил к полученному плееру файл музона и вот результат:

 

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

 

 

01
Апр
2021

Стражники — это не только ценный мех

Пришло время убрать лишнее смещение стражника при блоке, которым я их пихал в пропасти и шипы для отладки. Шаг я убрал и тут поломался цикл «удар-блок-удар» которым можно было бесконечно обмениваться с крутыми стражниками. Я начал смотреть почему и выяснилось, что принц не всегда делает после блока шаг назад в оригинале, а только если за его блоком не следует удар. Сделал так же. Цикл «удар-блок-удар» начал получаться, НО ТОЛЬКО ОДИН РАЗ, на второй раз стражник почему-то не ставил блок и пропускал удар. Нашел две ошибки в программе определения расстояния между принцем и стражником. Стражник, оказывается, после первого блока оказывался ближе, чем раньше, и получал команду «делай шаг назад, принц слишком близко», не смотря на то, что принц наносил удар и потому и был близко, собственно. К тому же, решив проверить как ведет себя стражник 8-го лабиринта в оригинале, я с удивлением обнаружил, что он часто и вовсе не вступает в этот цикл «удар-блок-удар», а может просто назад отойти. И потому его можно там скинуть в пропасть. А у меня его невозможно было назад заставить идти, он сам всегда принца уталкивал в яму. Я добавил стражнику случайных чисел и теперь он иногда отскакивает. И стало очень похоже на оригинальное поведение 🙂 Ну, а визирь в итоге получил весь арсенал и вообще окрутел ))

Пофикшены баги:

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

Yellow Rabbit взялся за ежедневное тестирование принца, это отлично. Два первых бага из списка нашел именно он.

26
Мар
2021

Стерео!

Два дня правил звуки, расставил вызовы событий, в которых временно вручную указывал канал для воспроизведения (левый/центр/правый). Все звучало. И вот пришло время все-таки написать процедуру автоматического определения канала для звука. И тут мне в голову пришло, что все данные у меня уже есть — в любой точке вызова звука всегда известен адрес в экране того объекта, который издает звук. Просто надо передать его подпрограмме добавления нового звука в очередь, а та сама вычислит в какой канал этот звук разместить. Пришлось снова пройтись по всем исходникам и поменять при вызове звука номер канала на адрес в экране. И, конечно, добавить вычисление канала в саму подпрограмму добавления звука в очередь. И все зазвучало!