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

03
Июн
2024

Снова вперед!

Итак, Таиланд посещен, возвращаюсь к разработке. Остановился я на том, что в при попадании в монстра нужно спрайт монстра целиком белым. Я собирался программно генерить белый спрайт из текущей фазы монстра, но Maxiol добавил в блиттер AZBK команду, позволяющую залить спрайт нужным цветом. В эмуляторе GID пока что не  заявлено поддержки этой фичи, так что я решил пока заняться процедурой разлетания кусков мяса убитого монстра.

Первым делом я, как обычно, стал изучать как это выглядит в оригинале. Сразу стало понятно, что куски, разлетающиеся от монстров, являются полноценными объектами, падающими в ямы, разворачивающимися от столкновений со стенами и т.д. От Бабуляторов разлетается два куска, от Зомби — четыре. Потом обнаружилось, что от Липучки ошметки могут лететь как в разные сторону, так и в одну (хотя Липучка никуда еще не прыгнула, а только целится). Видимо учитываются ее намерения.

Сдается мне, что авторами сначала была написана система разлетания мяса, а потом они стали думать, в какой игре это применить 🙂

13
Май
2024

Ножи полетели

Сегодня ножи, которыми кидаются Бабки, полноценно полетели по лабиринту — они находят стены и разбиваются о них:

Не обошлось без неожиданных глюков:

Теперь можно начать обрабатывать попадания в монстров. Тут две задачи:

  1. Спрайт монстра, при попадании пули, нужно превратить в целиком белый спрайт. Средствами блиттера этого не сделать, там нет таких фич. Палитрой этого тоже не сделать. Придется попробовать генерить новый, белый спрайт из текущего спрайта монстра.
  2. Разлетание ошметков мяса — та еще задачка. Надо поизучать, как эти куски разлетаются на самом деле. Влияют ли на это стены, чтобу будет, если кусок мяса падает в яму и т.д.

 

12
Май
2024

Достать ножи!

Итак, Бабки научились кидаться ножами. Применил такую же стереофонию, как в «Prince of Persia»: звук броска слева — воспроизводится в левом канале, звук броска справа — в правом. Однако, возник интересный глюк — при левом броске звук воспроизводится с искажениями, хотя массив играется один и тот же. Похоже, что-то я сломал в звуковом стерео-движке, пока переделывал его под Goonies:

 

 

10
Май
2024

Обучаем Бабуляторов

Создание интеллекта монстров — одна из интересных задач в ремейках игр. Кто-то вооружается дизассемблерами и ищет в коде оригинальной игры такие процедуры. У меня другой метод — я просто изучаю логику поведения этих самых монстров в оригинальной игре  и потом делаю свои алгоримы на основе этих наблюдений. Если в итоге мои монстры ведут себя также как в оригинале — значит мне удалось разгадать задумку автора.
Первым делом я обучил Бабок и Зомби обнаруживать ямы и стены, это само собой. Затем стал смотреть, как они реагируют на Дейва. Зомби — самые простые в этом плане. Они бродят от стены к стене, ожидая появления Дейва на своей горизонтали или ниже. Если Дейв появился на их горизонтали — Зомби сразу же поворачиваются в его сторону и бредут к нему. Если на пути им вдруг встретилась яма или стена, то Зомби поворачивают назад и делают от 1 до 5 шагов в обратном направлении, уже не обращая внимания на Дейва. Иначе монстр просто зациклится в бесконечных поворотах у стены — «Дейв в переди! Блин, стена, разворот. Но Дейв на этом уровне, поворачиваем  к нему! Блин, стена…»
Изначально, кстати, я по привычке сделал обнаружение стены между Дейвом и монстром, чтобы монстр не реагировал на Дейва, если между ними стена. Но оказалось, что в оригинале монстры видят Дейва сквозь стены и реагируют на него. Бабки даже ножи кидают в такие стены. Пришлось процедуру выкинуть пока.
Бабки ведут себя гораздо хитрее, чем Зомби. Во-первых, они не приближаются к Дейву, если есть такая возможность, а поворачивают назад, отходят и потом уже кидают нож. Но могут и не кинуть, тут уже явно применен генератор случайных чисел. Пришлось подбирать подбирать подходящее значение порога и для генератора случайных чисел, чтобы Бабка не кидалась ножами как пулемет, но и не делала это раз в пятилетку. Во-вторых, Бабка не сразу реагирует на то, что Дейв появился на ее горизонтали. Она вполне может пройти шагов пять и не обернуться, даже если Дейв идет у нее за спиной. Но при встрече с препятствием Бабуляторы поступают также, как Зомби — поворачивают назад и делают случайное количество шагов.
Таким образом, в алгоритме есть коллизия — если Бабка находится слишком близко к стене и при этом слишком близко к Дейву, то она тоже может зациклиться в своих попытках и от Дейва отойти на расстояние броска, и от стены удалиться после разворота. В оригинале такое происходит — Бабка начинает вертеться вокруг Дейва бесконечно на одном месте. Не думаю, что это стоит копировать, поможем Бабуле разобраться в ситуации 🙂
На данный момент Бабки уже почти все делают как надо и даже делают движения броска. Осталось выдать им ножи…
07
Май
2024

Бабуляторы!

Все время думал, что в Дейве ножами кидаются Бабки. Как оказалось, так думал не один я, но и многие другие игроки. В своем время Джона Ромера даже специально спрашивали об этом персонаже и оказалось, что это мужик-горбун, да еще и Игорь:

«Old lady»

The knife-throwing creature which is first encountered on upper floors of the first level was affectionately called «old lady» by many fans, though it is actually a male hunchback, similar to classical Igor from Frankenstein movies.

Итак, сегодня Бабуляторы появились и в моем ремейке Дейва:

Спрайты все еще мигают, так как фикса эмулятора пока еще нет. Честно говоря, они мигают куда мощнее, это я уже изголяюсь, чтобы ролик записать более-менее прилично 🙂 Когда-нибудь проблема будет пофикшена и сразу все перестанет мигать. А пока — пишу дальше так.

 

 

06
Май
2024

Зомби обзаводятся мозгами

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

 

30
Апр
2024

Накрылось видео — займусь пока звуками

Так как с выводом на блиттер возникли проблемы (подробно описанные в предыдущем посте), решил пока заняться звуками из Dave. Формат оригинальных файлов звука уже нашел, изучаю. В AZBK можно выводить звук и на AY и на 2AY и на Covox…

30
Апр
2024

Внезапные грабли

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

Читать далее