Начинаем открывать двери
Интересный прикол в оригинале — алмаз появляется раньше, чем открывается сама дверь:
Блог разработчика
Интересный прикол в оригинале — алмаз появляется раньше, чем открывается сама дверь:
Недавно в эмуле GIDа появились «Точки остановки с условиями» — можно задать условие остановки, когда, к примеру, произойдет обращение к интересующей ячейке памяти по чтению или записи (на выбор). Крутая штука! Благодаря ей я нашел сейчас причину одного из глюков — время от времени скролл экрана уезжал неведомо куда. Оказалось, причина была в неверном развороте Дейва в падении. Эта процедура была расчитана на первоначальный вариант падения, а этих вариантов уже стало четыре. Как обычно возникает вопрос — как оно вообще работало? 🙂
GIDу огромное спасибо за шикарный инструмент разработки и отладки!
Итак, я добавил проверки на горизонтальные препятствия, коррекцию «полетов» при столкновении с этими препятствиями. Теперь Дейв уже не проходит сквозь стены и не пролетает. Поправил свойства некоторых объектов. Вообще, прикольный механизм придумали Ромеро с Кармаком, конечно, для обработки обстановки — у каждого тайла есть свойства «можно пройти объект справо налево», «можно пройти объект сверху вниз» и т.д. Обработка столкновений проще при этом. Но зато приходится эти свойства обдумывать и назначать.
В целом, Дейв стал двигаться уже похоже. Теперь надо с длиной и высотой этих прыжков разобраться, чтобы не прыгал слишком далеко. И можно переходить к стрельбе!
Дейв научился определять потолок. Ну и традиционное развлечение — найди край препятствия, ведь персонаж должен стоять на ящике ногами, а не краем спрайта, где ружье торчит. Квадратно-гнездовой метод тут не годится.
Сделал коррекцию приземления, добавил вертикальное перемещение Дейва по лабиринту, добавил прыжки на ходу. Похоже, прыжки слишком дальнобойные, надо свериться с оригиналом. Теперь Дейв полноценно перемещается, буду добавлять обнаружение стен, потолков и прочей мебели.
Итак, сегодня Дейв научился прыгать на разную высоту, в зависимости от того, когда будет отпущена кнопка «прыжок». А также впервые начал распознавать под собой землю при приземлении. Так что сегодня Дейв самостоятельно залез на дерево.
Собрал анимацию и механизм прыжков, а также переделал анимацию бега. Прыжки управляемые, как и положено в Дейве — на лету можно повернуть в другую сторону, уж не знаю, что за физика такая 🙂 Анимация работает успешно, теперь надо проверить, получаются ли при прыжках такие же расстояния в длину, как в оригинале. А потом можно и обстановку задействовать — пора побродить по этажам 🙂
Сегодня Дейв перешел на новый уровень — это уже не разрозненные демки, а заработавший движок. Первые движения — разворот на месте и бег вправо-влево. Управление обрабатывается от джойстика и клавы. После того, как Дейв побежал по экрану, я попробовал добавить и горизонтальный скроллинг. Он заработал, но нужно регулировать зону «люфта», а также хитро менять смещения спрайтов Дейва, когда двигается слой фона, чтобы этот самый Дейв не дергался. Но главное, что он теперь управляется и готов учиться новым движениям!
Разобрал тайлы первого и второго уровней, прописал им свойства. В Дейве своя система обработки обстановки — каждый тайл имеет свойства «проходимости», т.е. признаки того, что через этот тайл можно пройти справа налево, слева направо, сверху вниз, в него может попасть пуля, по нему можно спрыгнуть вниз и т.д. К примеру, сквозь ступеньки лестницы можно свободно проходить справа-налево и обратно, и прыгать вверх сквозь них тоже можно, а вот провалиться сквозь них нельзя. Но можно спрыгнуть по ним вниз. В оригинале каждое свойство это байт, у меня это будут (уже есть) биты в слове. Номер тайла умножаем на два, получаем смещение в таблице свойств и по нужным битам видим, можно ли проваливаться и т.д.
Так что скоро буду запускать Дейва в лабиринт 🙂
Свежие комментарии