Bouncing Beholder — полноценный платформер, уместившийся всего в 1024 байта

Отличная физика, красочное окружение и рандомные уровни

1 мин.
Текст: Леся
Bouncing Beholder — полноценный платформер, уместившийся всего в 1024 байта

Если большинство современных игр достигают гигантских размеров, то Bouncing Beholder, созданная Марейном Хавербеке, идёт в обратном направлении и помещается всего в один килобайт кода. Это JavaScript-платформер с классическими элементами жанра: плавной анимацией, цепляющей физикой, случайно генерируемыми уровнями и коллекционными предметами.

Особенность игры — прыгающий мяч, которым игрок управляет с помощью клавиш со стрелками, стараясь собрать как можно больше монет и не угодить в ловушки. Случайная структура уровней делает каждый запуск уровня неповторимым.

Первоначально автор создал её для конкурса кодеров JS1K в далёком 2010 году. Но недавно о неё снова вспомнили, в частности, благодаря строгому ограничению на размер файла.

Чтобы вместить все эти возможности в 1024 байта, разработчику пришлось пойти на массу хитроумных ухищрений. Он сократил длинные имена переменных, представил игровые объекты через математические формулы вместо прямого хранения данных и даже добился того, что стандартные методы HTML5 Canvas API записываются в сокращённом виде, например qt() вместо canvas.quadraticCurveTo().

Монеты также расставляются по особому принципу. Они появляются только на платформах, высота которых делится на шесть. А если взять монету, она исчезает вместе с частью платформы, слегка уменьшая её высоту. Такой подход к генерации позволяет обойтись без громоздких таблиц данных.

Интересно, что, несмотря на популярность инструментов сжатия кода, Bouncing Beholder устроена так, что они чаще вредят, чем помогают: современные программы вроде Closure Compiler в итоге увеличивают размер итогового файла, а не уменьшают его.

Сам программист признаётся, что подобная разработка не предназначена для «производительного программирования», но открывает простор для фантазии и самых нетипичных хаков. Полный исходный код игры доступен в его блоге, а факт существования такого платформера ещё раз напоминает: гениальные идеи и умелые трюки способны поместить целый виртуальный мир в один крохотный килобайт.


Ещё по теме:

Мы в Telegram, на Дзен, в Google News и YouTube