358

Ответ на пост «Разработчик за месяц сделал шутер в духе Quake, который весит всего 13 КБ»

В коментах было много вопросов про эти 13 кб, с учетом того, что всякие картинки и ассеты весят намного больше, а сам выкачанный гитхаб весит под пол мегабайта. Давайте попробуем разобраться правда ли он смог уместить свою игру в заданном правилам размере.


Первым делом запустим файл, который предоставляет сам разработчик - build.sh

Помимо всего прочего вывода, команда выводит список файлов из папки build

Окей, у нас есть куча файлов, но что теперь? Вон есть index.html. Запускаем его и видим в браузере игру. Что же происходит при этом в консоли?

На данном скрине нас интересует только самая правая колонка - это размер подгружаемого элемента. Можно даже не пользоваться калькулятором, ведь и невооруженным взглядом видно, что 9.6 + 4.8 уже больше 13. А там еще и шрифты на целый ценный килобайт. А ведь это еще только размер передаваемый от сервера браузеру, а реальный размер того же индекса - 12 кб

Хотя, строго говоря, подгрузив все вот эти файлы на ~20кб игра полноценно функционирует что на мой взгляд очень неплохо. Но недостаточно хорошо для js13k.


Что, кстати, говорят его правила на этот счет?


All your code and game assets should be smaller than or equal to 13 kilobytes (that's exactly 13,312 bytes, because of 13 x 1024) when zipped. Your .zip package should contain index.html file in the top level folder structure (not a subfolder) and when unzipped should work in the browser

Ваш код и игровые ресурсы должны быть меньше 13 кб в сжатом виде. Ваш zip пакет должен содержать index.html и после распаковки работать в браузере.


Мало того, что мы


1. Прогнали обе карты запаковщиком, написанным на C. (файл l на 1 и 2 скринах)

2. Запаковали все текстуры запаковщиком, написанным на php (файл m на 1 и 2 скринах). Я кстати, так и не понял почему один запаковщик реализован на C, а другой на php. В гитхаб тоже подвезли требование разнообразия?

3. Прогнали весь код компрессором UglifyJS. (73 кб -> 26 кб)

4. После этого весь код прогнали специальной тулзой, которая специально была разработана для js13k - https://lifthrasiir.github.io/roadroller/ (26 кб -> 12 кб)


Так еще и запаковали зипом.


И на выходе получаем следующее (см 1 скрин)

Как видно, размер получившегося архива - 13296 байт. А 13кб это 13312 байт а не 13000. Об этом кстати в правилах написано :)


Вот так вот у нас и получаются те самые 13 кб.


По сути в данном соревновании разработчики меряются своими инструментами архивации. Но это не умаляет того, что https://github.com/phoboslab/ написал относительно неплохую игруху, которая без сжатия весит тоже не слишком много.


Да, раньше писали игры на ассемблере. Да, раньше играм для запуска не нужны были тонны оперативки. Да, раньше сахар был слаще, а вода мокрее. Но теперь у нас есть простые маленькие игрушки, в которые можно скачать и запустить за пару кликов без до оборудования.

Показать полностью 4
1520

Разработчик за месяц сделал шутер в духе Quake, который весит всего 13 КБ

В него можно сыграть прямо в браузере.

Разработчик за месяц сделал шутер в духе Quake, который весит всего 13 КБ

Автором проекта под названием Q1K3 выступил программист Доминик Саблевски (Dominic Szablewski). В шутере есть два уровня, которые вдохновлены картами E1M1 и E1M3 из оригинальной Quake. Игрок может использовать три вида оружия, а противостоят ему пять типов противников, в том числе собаки.


Разработчику удалось уместить в Q1K3 звуковые эффекты, динамическое освещение, а также оригинальный саундтрек.


Саблевски сделал игру на JavaScript, а для дизайна уровней воспользовался редактором TrenchBroom, предназначенном для создания кастомных карт для игр на движке Quake. Автор также сделал собственный инструмент, позволяющий создавать оптимальные по качеству и размеру файла текстуры


Работа над Q1K3 заняла месяц. Программист разработал шутер для конкурса Js13kGames, в рамках которого участники должны разработать игры на JavaScript весом не более 13 КБ. Победители получат денежные призы, а также другие награды.


Попробовать игру можно здесь

https://js13kgames.com/entries/q1k3


Текст стырил с ДТФ

Показать полностью
Отличная работа, все прочитано!