Category: Dangerous Dave 2
Разлетайтунг ошметков готов!
Сегодня сделал разлетание ошметков с учетом обстановки — они падают в ямы, отлетают от стены и все такое:
Мясо!
Добавил анимацию разлетающихся кусков мяса, пока без обработки обстановки:
На самом деле эти куски должы реагировать на окружающую среду — отлетать от стен, падать в ямы и на всякие там ящики. Завтра буду этим заниматься.
Продвигаемся дальше
Так что я решил пока двигаться дальше — какой смысл впихивать текущую подготовку кадра в 1/60 сек, если еще не все механизмы готовы? Еще нет разлетающихся кровавых ошметков от монстров, не все монстры задействованы и т.д.
1. При трассировке траектории пули на каждом шагу сверяться с массивом координат монстров и определять совпадение монстра и пули.
2. Завести слой лабиринта, по «знакоместам» которого двигать коды монстров (точнее, сразу указатели на записи о монстрах) при их передвижении по лабиринту. Тогда для проверки совпадения не нужно пробегать всех врагов, можно просто сразу получить указатель на того, что попался в этом «знакоместе» лабиринта.
Новый вариант блиттера
Переписываю вывод всей графики на новый формат команд блиттера. Помимо изменения способа задания размеров спрайта, добавился и новый способ позиционирования спрайтов на экране — теперь блиттеру можно указать координату Y в виде номера строки. Раньше это был 24-битный адрес. Так что переделывать пришлось много чего. Но уже почти все получилось.
Из-за длительного перерыва (отпуск на море!) дело шло со скрипом. Все-таки пока целиком погружен в проект — пишется легко, вся структура в голове. А немного отвлекся и приходится въезжать заново 🙂
Снова вперед!
Итак, Таиланд посещен, возвращаюсь к разработке. Остановился я на том, что в при попадании в монстра нужно спрайт монстра целиком белым. Я собирался программно генерить белый спрайт из текущей фазы монстра, но Maxiol добавил в блиттер AZBK команду, позволяющую залить спрайт нужным цветом. В эмуляторе GID пока что не заявлено поддержки этой фичи, так что я решил пока заняться процедурой разлетания кусков мяса убитого монстра.
Первым делом я, как обычно, стал изучать как это выглядит в оригинале. Сразу стало понятно, что куски, разлетающиеся от монстров, являются полноценными объектами, падающими в ямы, разворачивающимися от столкновений со стенами и т.д. От Бабуляторов разлетается два куска, от Зомби — четыре. Потом обнаружилось, что от Липучки ошметки могут лететь как в разные сторону, так и в одну (хотя Липучка никуда еще не прыгнула, а только целится). Видимо учитываются ее намерения.
Сдается мне, что авторами сначала была написана система разлетания мяса, а потом они стали думать, в какой игре это применить 🙂
Ножи полетели
Сегодня ножи, которыми кидаются Бабки, полноценно полетели по лабиринту — они находят стены и разбиваются о них:
Не обошлось без неожиданных глюков:
Теперь можно начать обрабатывать попадания в монстров. Тут две задачи:
- Спрайт монстра, при попадании пули, нужно превратить в целиком белый спрайт. Средствами блиттера этого не сделать, там нет таких фич. Палитрой этого тоже не сделать. Придется попробовать генерить новый, белый спрайт из текущего спрайта монстра.
- Разлетание ошметков мяса — та еще задачка. Надо поизучать, как эти куски разлетаются на самом деле. Влияют ли на это стены, чтобу будет, если кусок мяса падает в яму и т.д.
Достать ножи!
Итак, Бабки научились кидаться ножами. Применил такую же стереофонию, как в «Prince of Persia»: звук броска слева — воспроизводится в левом канале, звук броска справа — в правом. Однако, возник интересный глюк — при левом броске звук воспроизводится с искажениями, хотя массив играется один и тот же. Похоже, что-то я сломал в звуковом стерео-движке, пока переделывал его под Goonies:
Свежие комментарии