Skip to content

Repository files navigation

Dizzy 3 — веб-ремастер

TypeScript Vite PixiJS WebGL Web Audio Vitest ZX Spectrum License

Браузерный ремастер Fantasy World Dizzy (ZX Spectrum, 1989) — по русской расширенной версии для 128K. Логика игры перенесена с оригинала, а не написана заново по мотивам: физика, головоломки, поведение персонажей и звук взяты из самой игры.

Собирается в один самодостаточный HTML-файл и публикуется через GitHub Pages из каталога docs/.

Что здесь сделано

Физика — та же. Такт логики 12.5 Гц, целочисленная арифметика, те же таблицы прыжка и гравитации, тот же порядок проверок в главном цикле. Движок сверяется с эталонными трассами покадрово: расхождение на кадре сразу показывает, какая подпрограмма перенесена неверно.

Два режима отрисовки, переключаются клавишей R на лету:

  • ZX — цвет по знакоместам 8×8, как на Spectrum: расцветка комнат воспроизведена вместе с тем, как объекты перекрашивают друг друга, накладываясь на одну клетку. Нужен как эталон сравнения;
  • Ремастер — цвет принадлежит объекту, а не экрану: наложения больше не перекрашивают соседей. У персонажей тёмный контур, чтобы не сливались со светлым фоном; у Диззи красные перчатки и сапоги — единственный цвет во всей игре, которого нет в палитре Spectrum.

Знаменитого клэша, когда герой на ходу перекрашивается от фона, нет ни в одном режиме: Диззи рисуется своими цветами попиксельно и в сетку атрибутов не пишет. Это сознательное отступление от оригинала — ради него всё и затевалось.

Плавное движение при любой частоте монитора. Логика по-прежнему тикает 12.5 раз в секунду, но между тактами и Диззи, и актёры показываются в промежуточных положениях, с учётом собственного ритма каждого: крыса шагает через такт, лифт идёт с дробной скоростью, плот качается на волне — и качку, в отличие от движения, сглаживать нельзя, иначе она исчезает.

Звук из оригинального драйвера. Музыка и эффекты не переписаны нотами: сам драйвер прогнан в симуляторе, и с него сняты потоки регистров AY-3-8912 по кадрам. Порт чипа проверяется по эталонным сценариям, а не на слух.

Современный обвес. Рюкзак с иконками и подсказкой, что перед тобой; диалоги отдельным окном; сохранения в localStorage; хардкор без сохранений, но с автопродолжением; поддержка экранов высокой плотности.

Немного подробностей

Столкновения читаются из самой картинки. Проходимость нигде не задана таблицей: комната рисуется в буфер, и физика щупает его пиксели вместе с битом яркости атрибута — ровно как в оригинале. Поэтому лифт держит Диззи просто потому, что он нарисован, а не потому, что кто-то описал ему платформу.

Такт логики учащать нельзя. Физика совпадает с оригиналом только на своих 12.5 Гц: шаг ходьбы, дуга прыжка и пределы падения выражены целыми числами именно для этой частоты. Поэтому плавность даёт не более частый расчёт, а показ промежуточных положений между тактами — ломаная прыжка при этом воспроизводится точно, потому что внутри такта она и есть прямая.

Выключается отдельной клавишей (P): тогда видно, как игра шагала на самом деле — по четыре пикселя двенадцать с половиной раз в секунду.

Служебные сочетания клавиш в игре есть. Какие именно — пусть останется на самостоятельное открытие.

Управление

или A D — идти, Space W — прыжок, E — взять или применить, 14 — предмет из слота (коротко — применить, удержать — выбросить). M — звук, - + — громкость, P — плавность, R — отрисовка, F5 / F9 — быстрое сохранение и загрузка.

Сборка

npm install
npm run dev      # разработка
npm run build    # docs/index.html — один файл, без внешних запросов
npm test         # тесты движка, включая сверку с эталонными трассами

Права

Все права на оригинальную игру Fantasy World Dizzy принадлежат их владельцам: игра создана The Oliver Twins и издана Codemasters в 1989 году. Русская расширенная версия — Dr. Titus, 2023.

Этот ремастер сделан исключительно в образовательных целях — как упражнение в разборе и переносе игровой логики — и не преследует коммерческих целей. Никакой связи с правообладателями не имеет и ими не одобрен. Собственный код проекта распространяется по лицензии MIT, данные и графика оригинальной игры под неё не подпадают — см. LICENSE.

About

Fantasy World Dizzy

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages