Стражники
Стражники снова научились ставить блок и отучились по-дурацки подставляться под удар 🙂 Исправлен глюк со стражником, пролетающим более двух экранов. Исправлен глюк с нажатой плитой, на которую падают обломки.
Блог разработчика
Стражники снова научились ставить блок и отучились по-дурацки подставляться под удар 🙂 Исправлен глюк со стражником, пролетающим более двух экранов. Исправлен глюк с нажатой плитой, на которую падают обломки.
Исправил глюк с падением стражника в глубокую пропасть. Пофиксил запрыгивание на плиту, если над головой принца столб от решетки. Исправил вывод управляющей плиты перед решеткой в нажатом состоянии. Починил глюк с поднятием плиты, на которую упали обломки, и при этом на ней стоял принц. Сделал сохранение текущего количества жизней стражников. И теперь стражник не заходит в окно, если там уже есть другой стражник.
Но багов еще полно )
У стражников, конечно, еще полно багов и недоделок. Во-первых, стражник, падая вниз, не учитывает высоту и остается живым, если ему не попались внизу шипы. А в оригинале стражник теряет жизнь, если пролетел два этажа. И я даже видел, что стражник, теряя последнюю жизнь от падения, помирал. Во-вторых, в оригинальном принце невозможно получить двух стражников на экране одновременно, и для этого автор применил ухищрения. Как я не заманивал одного стражника в окно, где уже есть второй — он не хотел идти дальше. Знает, гад, что два стражника это перебор. У меня же пока стражник охотно бежит за принцем везде. Надо его отучать от этого. Во втором принце, кстати, стражники уже толпами бегают.
Сегодня исправил несколько хитрых глюков. Один состоял в том, что стражник мог нажимать плиту, открывающую решетку, сам при этом находясь в другом экране. Собственно, это правильно, почему бы ему не нажать, раз он на нее наступил. Только вот для стражника эта плита на границе окна имела координату Х=0, а в отображаемом окне Х этой плиты был равен 12. Это приводило к глюку. Второй глюк был как раз связан с несколькими стражниками в соседних окнах. Ну и еще мелочи исправил — для стражника не отображаются «пустые» значки жизней, как у принца.
Попытался переделать спрайты дворцовых уровней в другую палитру, но что-то ничего удобоваримого не получилось. Цвета получаются не менее вырвиглазные, чем сейчас.
Понемногу движемся 🙂
Как заявляли в сериале «Тьма», все фигуры расставлены. Все стражники поставлены на свои места, все заимели полагающееся количество «жизней» и смотрят в нужные стороны 🙂 Попутно обнаружилась, конечно, кучка багов. Теперь буду бороться с ними. Два уже поправил — принц не мог достать меч, стоя на краю пропасти (падал в эту самую пропасть) и мог висеть на уже упавшей плите, нагло болтая ногами. Обнаружились неверно управляемые решетки, а одна и вовсе отсутствовала.
Неприятная новость — похоже, утеряны спрайты дворцовой обстановки в виде отдельных файлов. Придется выковыривать их из уже собранного блока данных palace, чтобы перерисовать.
Постепенно программа росла и объем данных тоже. Процесс сборки занимал достаточно много времени. Если ты что-то менял в каком-то исходнике, надо было его скомпилировать в объектник и вручную слинковать все файлы в исполняемый модуль. Сначала это было не так страшно — штук пять объектников слинковал и все. Так как спрайты занимали много места и размещать их надо было в расширенной памяти, то их тоже слинковали в объектники. И тут вот уже от полученных объектников надо было отрезать таблицы меток, чтобы потом линковать их к исполняемому модулю. Женя написал для этого специальную утилиту.
Код рос и постепенно перестал помещаться в первые 16К. Придумали, как разместить код в расширенной памяти и вызывать эти подпрограммы из основной. Где-то в это время линковать проект с помощью micro1103 стало уже невозможно — таблицы меток всех исходников стали слишком большими. Все-таки, micro1103 был написан для БК0010. Тогда Женя написал линковщик, который умел использовать всю память БК11М. И мы продолжили проект.
Все это было хорошо, но процесс сборки стал напряжным — надо было строго по списку линковать файлы, указывать разные адреса линковки, в определенные моменты сохранять таблицы меток от одних блоков данных, чтобы потом использовать их при сборке других модулей… Обычно один из нас сидел и набивал все это вручную, а второй подсказывал по списку что делать. Если кто-то ошибался, то процесс надо было начинать заново. Нудное дело, скажу я вам. А если ошибка происходила, но никто этого не замечал, то потом, когда при запуске принца все висло, надо было сидеть и догадываться в чем же причина — было это из-за внесенных исправлений или при сборке что-то пошло не так?
И вот тогда Женя вдруг придумал как заставить монитор БК0010 вместо ввода с клавиатуры принимать текстовые команды из файла. Для этого он исправил сам монитор и написал программу «воспроизведения» таких текстовых файлов. Создали мы такой командный файлик, в котором записали последовательно все команды запуска линковщика, загрузки нужных объектников, сохранения промежуточных таблиц — в общем все, что делали вручную каждый раз. Запустили, увидели как все само собралось без участия человека и без ошибок. Далее были сцены поливания шампанским, запуска салютов, и что там еще в фильмах в случаях большой радости?
Научив принца заново ходить, возвращаемся к стражникам. В предыдущей версии формата лабиринтов обнаружилась проблема — нельзя было задать для каждого стражника в какую сторону он смотрит, вправо или влево. Я почему-то подумал, что достаточно будет стражника сразу разворачивать в сторону принца. Но потом оказалось, что стражник далеко не сразу разворачивается к принцу, а только когда он его видит или слышит шаги. Пришлось немного поменять формат лабиринта и добавить каждому стражнику такое поле. Заодно была решена проблема с разной высотой спрайтов разных стражников. Большинство из них одного «роста», но есть и длинные дылды и круглые толстые личности. А некоторые так вообще изначально являются грудой костей…
В первых двух лабиринтах стражники расставлены на своих местах и смотрят в свои стороны. Завтра продолжу.
Сегодня сделал «в башку сапог» — падение плиты на голову.
Хотя в процессе было и так:
Так-с, посмотрим на недавний список:
Что осталось сделать из обработки препятствий:
Неплохо! Переходим, значит, к этому:
P.S.
Сегодня реализовал обработку состояния решеток. Теперь по лабиринтам просто так не побегаешь…
Чистил мелкие баги:
Но багов, конечно, еще полно. Читал новости про уйму багов в Cyberpunk 2077 — чуваки не заморачивались))
Исправляя ошибки, иногда удивляешься, как оно вообще раньше работало. Вот и сейчас, при очередном бое со стражником, он улетел вниз и все зависло. Давно такого не было. Неужели последние переделки повлияли? Начал разбираться — оказывается, стражник-то верно пролетает через границу экрана, а вот меч стражника — нет. Исправил. И как же эти стражники раньше-то улетали в пропасти без проблем?
Свежие комментарии