Project Serpo — графический роман для ZX Spectrum про инопланетян

Программист Хандер, он же Trixelab, недавно выпустивший новый редактор изображений для ZX Spectrum под названием Spectrum Experimental Image Editor, внезапно разродился первой игрой, в разработке которой активно использовалась эта софтина.

Впрочем, игрой Project Serpo называть неправильно — это скорее настоящий графический роман про контакт человечества с инопланетной расой. По мотивам реальной теории заговора, между прочим! «Геймплей» очень простой: знай любуйся красивыми картинками, читай небольшое количество текста да жми пробел, чтобы перейти к следующему слайду.

Для экономии места Хандер сделал все изображения векторными: в SEIE есть и такая возможность. Собственно, приём не новый — изрядная часть квестов на ZX Spectrum использовала именно векторную графику.

Увы, в Project Serpo изображения рисуются очень долго: некоторым из них требуется на это 20 секунд. Разумеется, обойти эту проблему можно, разогнав в эмуляторе процессор раз этак в десять. Но что делать тем, кто хочет насладиться Project Serpo на реальной машине?

Поскольку SEIE был написан с помощью ИИ, мы попросили исправить долгую отрисовку очень способную модель Claude Opus 5. Задача звучала так: «Возьми эту программу для ZX Spectrum, разберись, как она работает, и максимально ускорь отрисовку графики».

Можно сказать, что Opus 5 справился с задачей блистательно и в несколько заходов ускорил отрисовку в 4,26 раза! Теперь всю игру можно «проспидранить» ровно за 1 минуту, а не за 4 минуты с гаком, как раньше. Собственно, давайте дадим слово Клоду, пусть он и расскажет, что сделал:

  • Вычисления заменил таблицами. Адрес точки на экране, проверка выхода за края, зеркальное отражение, адрес цветовой клетки — всё это теперь считается один раз при старте игры, за 25 миллисекунд. Дальше вместо арифметики просто чтение из памяти: расчёт адреса точки подешевел с 260 тактов до 76.
  • Переписал рисование линии. Раньше рабочие переменные лежали в памяти, а не в регистрах процессора, и на каждую точку делалось шесть вызовов подпрограмм. Стало 95 тактов на точку вместо 1080 — в одиннадцать раз быстрее.
  • Убрал копирование 6 Кб перед каждой заливкой. Этих заливок в картинке бывало до полусотни. Теперь восстанавливаются только реально затронутые строки.
  • Перестроил заливку. Проверка соседей больше не делается честным перебором для каждой закрашенной точки, а поиск границ области перестал пересчитывать адрес на каждом шаге.
  • Починил забытые мелочи. Адрес цветовой клетки вычислялся циклом «прибавить 32» — до 23 повторов на клетку. Выбор действия по коду операции шёл цепочкой из 41 сравнения подряд.

Исходный код ускоренной игры мы скинем автору SEIE — может быть, ему захочется заменить процедуры отрисовки. Тогда при помощи этого графического редактора можно будет делать очень компактную и достаточно шуструю статичную графику. Хотя нельзя исключать, что если представить все картинки из этого графического романа в виде обычных пикселей и сжать их современными упаковщиками, получится тоже достаточно компактно.

💾 Скачать игру можно с itch.io или с «Идеального пикселя»: вот обычная версия, а вот ускоренная в 4 с лишним раза.

Only authorized users can leave comments.