Pull to refresh
21
0
Филипп Филиппак @xenohunter

Data scientist

Send message

Читал про это, но решил не использовать, так как потом всё равно в zip-архив нужно упаковать, а я сомневаюсь, что PNG бы сильно сжался. К тому же, только в этом году разрешили эту фичу использовать.

Для этого не нужно устанавливать дополнительных программ, все уже есть в базовом наборе операционной системы.

В Arch по умолчанию нет bc.

Возможно, организаторы решили, что 13 Кб исходников — слишком мало для интересных игр. А было бы намного интереснее. Вон, люди пишут замечательные демки на JS в пределах 1 Кб.

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

В процессе минификации self превратится в s. То есть, полная цепочка будет выглядеть так:


this.x = 0; this.y = 1; this.w = 2; this.h = 3; // код с this
var self = this; self.x = 0; self.y = 1; self.w = 2; self.h = 3; // this заменили на self
var s=this;s.x=0;s.y=1;s.w=2;s.h=3; // при минификации self стал одним символом

Да, очень красивая игра. Но мой фаворит — Super Chrono Portal Maker.

В комментарии выше есть пример; self при минификации кода становится односимвольной переменной.

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


this.x=0;this.y=1;this.w=2;this.h=3;
var s=this;s.x=0;s.y=1;s.w=2;s.h=3;

Вариант с переменной короче на один символ при четырёх обращениях к объекту. Каждое следующее обращение будет экономить ещё по три символа.

Такие условия слишком сложны для проверки. Нужно держать каждую игру запущенной (и играть в неё) довольно длительное время, чтобы удостовериться в объёмах используемой памяти. Что касается deflate, на сайте выкладывается разархивированная версия, так что в браузер попадает просто html-файл.

Важен размер именно zip-файла.

Да, я тоже думаю, что без архиватора, чистым текстом, было бы интереснее. Но — таковы правила, ничего не попишешь. Пробовал через packer, он сжимает до ~21 Кб, но с ошибками. Разбираться было некогда, да и есть опасения, что с такими наворотами может начать тормозить.

Если честно, вообще не понял, что за ModuleName_setSomeProp(itemObj, '..value..').

Да, возможно. Я об этом не подумал, так как интуитивно полагал, что архиватор просто создаёт словарь для сжатия, а уменьшение длины слов в этом словаре никак не повредит. В следующий раз попробую для эксперимента посжимать архиватором разные сборки: с подобными микрооптимизациями и без них.
Там и не используется gzip, финальный файл пакуется в zip-архив. Я написал в посте, что размер index.html был 31.9 Кб, а в виде архива занял 10.1 Кб.
Спасибо! Да, в минификации модулей есть и свои особенности. Здесь я, конечно, модули не использовал, чтобы не тратить место на require или что-то подобное: было ощущение, что каждый байт на счету.
Кстати, на эту тему есть неплохая статья, правда, совсем «лёгкая».
Моя цитата не об этом, хотя и в такой ситуации я предпочту правду «счастью».
Всё, что может быть разрушено правдой, должно быть разрушено.
Гениальные бизнесмены полностью проваливают личную жизнь.

Так и у Бэтмена всё плохо с личной жизнью, а богатство досталось от родителей.
Он умный, сильный и благородный — но к этому можно стремиться и без огромного наследства.
Тогда ясно, почему так, спасибо!

Information

Rating
Does not participate
Date of birth
Registered
Activity

Specialization

Frontend Developer, Chief Technology Officer (CTO)
TypeScript
JavaScript
React
Redux
Node.js
Python
Pytorch
Keras
Computer Science