English version (README_EN.md)
Утилита для сжатия и распаковки веб-билдов Godot с использованием формата gzip. Позволяет уменьшить размер файлов и ускорить загрузку игры в браузере.
-
Сжатие файлов
-
Скрипт
compress_and_update.pyнаходит все файлы с расширениями.pckи.wasmв указанной директории. -
Каждый файл сжимается в формат
.gz.
-
-
Обновление HTML и JS
-
В файл
index.htmlавтоматически добавляются теги<script>для подключения:-
decompress.js— скрипт распаковки -
fflate.js— JS-библиотека для распаковки в браузере
-
-
Файл
decompress.jsобновляется с актуальным списком файлов для перехвата и распаковки.
-
-
Распаковка в браузере
-
decompress.jsперехватывает вызовыfetchк.pckи.wasmфайлам. -
Сначала производится попытка загрузить соответствующие
.gzверсии. -
Если браузер поддерживает
DecompressionStream, используется он. -
В противном случае применяется библиотека
fflateдля распаковки вручную. -
Если сервер уже распаковал файл (
Content-Encoding: gzip), повторная распаковка не выполняется.
-
-
Если загрузка
.gzфайла или его распаковка завершилась с ошибкой (например, файл отсутствует или повреждён), скрипт пытается загрузить оригинальный несжатый файл. -
Это гарантирует, что игра всё равно загрузится, даже если сжатые ресурсы недоступны или не поддерживаются браузером.
git clone https://github.com/Lalolog/godot-web-compression
cd godot-web-compressionСкрипт compress_and_update.py поддерживает следующие параметры:
| Аргумент | Сокращение | Описание | Значение по умолчанию |
|---|---|---|---|
--source-dir |
-s |
Путь к папке с файлами .pck и .wasm |
. |
--decompress-js-path |
-d |
Путь к файлу decompress.js |
decompress.js |
--fflate-js-path |
-f |
Путь к файлу fflate.js |
lib/fflate.js |
--index-html-path |
-i |
Путь к файлу index.html |
index.html |
Пример запуска:
python compress_and_update.py \
-s game \
-d scripts/decompress.js \
-f lib/fflate.js \
-i index.html
Скрипт:
- Сожмeт
.pckи.wasmфайлы в.gz - Обновит список в
decompress.js - Добавит теги
<script>вindex.html
build/
├── compress_and_update.py
├── game/
│ ├── lib/
│ │ └── fflate.js
│ └── scripts/
│ └── decompress.js
│ ├── index.html
│ ├── index.pck
│ ├── index.pck.gz
│ ├── index.wasm
│ ├── index.wasm.gz