Tagged: видео

21
Июн
2024

Мясо!

Добавил анимацию разлетающихся кусков мяса, пока без обработки обстановки:

На самом деле эти куски должы реагировать на окружающую среду — отлетать от стен, падать в ямы и на всякие там ящики. Завтра буду этим заниматься.

20
Июн
2024

Продвигаемся дальше

После долгого перерыва на отпуск, послеотпускной завал работы, простуду, я наконец-то вышел на рабочий режим, въехал в собственный код и проект «Dangerous Dave для БК0011М+AZBK» начал двигаться.
Первым делом я столкнулся с тем, что Maxiol и Gid внесли изменения в железо AZBK и его реализацию в эмуляторе GID. Изменения, собственно, я сам и запрашивал, сталкиваясь с проблемами видеовывода то в железе, то в эмуле. Эти изменения притащили с собой новый формат команд и новые команды блиттера. Пришлось долгое время переписывать все процедуры Дейва, связанные с выводом на экран, под нововведения в параметрах команд блиттера. Было много глюков — спрайты рисовали не там, где надо, весь экран начинал покрываться рябью и все таком стиле. Постепенно это все ушло в небытие и Дейв начал снова бегать по лабиринту (первый уровень мне уже порядком надоел).
Но он не просто начал снова бегать, он начал снова глючить — момент перехода рулона через ноль и переключения в этот момент страниц видеопамяти вызывает дергание экрана. Все потому что движок Дейва не всегда успевает подготовить новый кадр за 1/60 секунды, чтобы вывести новые данные в момент обратного хода луча. А если не ждать этого момента — манипуляции с экраном становятся видны. На данный момент я еще не придумал, как это побороть.
Так что я решил пока двигаться дальше — какой смысл впихивать текущую подготовку кадра в 1/60 сек, если еще не все механизмы готовы? Еще нет разлетающихся кровавых ошметков от монстров, не все монстры задействованы и т.д.
Первым делом я занялся попаданиями пули по монстрам. Тут было два варианта решения:
1.  При трассировке траектории пули на каждом шагу сверяться с массивом координат монстров и определять совпадение монстра и пули.
2. Завести слой лабиринта, по «знакоместам» которого двигать коды монстров (точнее, сразу указатели на записи о монстрах) при их передвижении по лабиринту. Тогда для проверки совпадения не нужно пробегать всех врагов, можно просто сразу получить указатель на того, что попался в этом «знакоместе» лабиринта.
Первый вариант не накладывает новых расходов на движок, зато грозит долгой обработкой кучи данных при стрельбе. Второй вариант делает стрельбу скоростной, но нужно двигать лишние данные на каждом движении монстров. Я выбрал второй путь. Это потребовало памяти, но, т.к. я использую AZBK, то памяти у меня вагон. Да и к тому же, как оказалось, страницы 5 и 6 (экраны БК0011М) теперь тоже можно использовать как обычные страницы памяти, ведь  они больше не используются для вывода на экран.
Метод был успешно реализован, теперь надо было сделать визуализацию попадания пули в монстра. В Дейве это реализовано выводом текущего спрайта монстра полностью залитым белым цветом. Я собирался генерировать такой спрайт программно, но Maxiol сказал, что это можно легко заставить делать блиттер. В итоге в новой версии блиттера (и в эмуле GIDа) к моему приезду как раз появилась такая команда. Я воспользовался ей и все сразу заработало, что удивительно. Спрайты «блымкают» белым как надо, это сразу добавило энтузиазма, как и любое продвижение вперед.
В прилагаемом ролике видны дергания экрана, это как раз те глюки при переключении страниц, которые меня вгоняют в тоску. Также там видно, что Зомби пока что слезают со ступенек раньше, чем дойдут до пола, но это все ерунда. Хуже то, что при большом количестве Зомби на экране Дейв начинает притормаживать, но я утешаю себя тем, что в реальной игре Дейв просто не может пройти через такое количество врагов, они его сожрут раньше. Но в целом, конечно, надо искать узкие места и оптимизировать.
13
Май
2024

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

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

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

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

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

 

12
Май
2024

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

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

 

 

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

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

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

 

17
Апр
2024

Среда разработки

Все очень просто:

  • Превосходный эмулятор БК11М https://gid.pdp-11.ru/
  • В нем запускаю ANDOS.
  • Код пишу во встроенном редакторе оболочки ANDOS или редакторе Vortex, если текст очень длинный.
  • Компилию старым добрым micro1103.
  • Собираю все линковщиком link Евгения Пашигорова с помощью батников.
  • Если надо перенести какие-то спрайты с PC — пишу их сразу в образ диска с помощью BKDE, а там превращаю в .obj с помощью утилиты 2obj (Е. Пашигоров)

И никаких проблем.