LINUX.ORG.RU

Чем сжать JS файл?

 , , ,


0

1

Unity3D выдает мне JS файл(билд для WebGL) размером в 27 мб. Причем он не ужат, а выдается в чистом виде. Можно ли как-то сжать его так чтобы он работал в будущем, но размер был меньше? Вот он. Я его сжал в 7z и он стал размером 3.9 мб, что конечно же намного лучше.

Есть конечно вариант сделать подмену файлов, чтобы этот js файл качался в архиве на комп пользователя и распаковывался там же или вся папка Release качалась на комп пользователя и распаковывалась там же, благодаря чему мы получаем не 64 мб билд а около 25 мб, такое можно?.

Какие есть варианты?

Можно ли скриптом скачать во временную папку архив? Ибо меня еще интересует вариант качать файлы игры в архиве и распаковать их на компьютере пользователя.

Забыл упомянуть, что делаю игру для одного сайта, соответственно нет доступа к серверу, но есть лимит в 50 мб(а текущий билд 64 мб).

Перемещено Klymedy из talks



Последнее исправление: ozzee (всего исправлений: 4)

Какие есть варианты?

Обфускация?

trueshell ★★★★★
()

Во-первых, на уровне сервера какой-нибудь mod_deflate. Если не нравится такое решение, никто не мешает взять реализацию того же deflate на js и одним скриптом распаковать другой.

Sadler ★★★
()
Ответ на: комментарий от mystery

Мда

<--- JS stacktrace --->

==== JS stack trace =========================================

Security context: 0x21b4c9cb4629 <JS Object>
    1: /* anonymous */(aka /* anonymous */) [0x21b4c9c041b9 <undefined>:~2305] [pc=0x263124b094e] (this=0x21b4c9c041b9 <undefined>,ctor=0x118a520a1e9 <JS Function AST_Defun (SharedFunctionInfo 0x3553bf71eef9)>)
    2: /* anonymous */(aka /* anonymous */) [0x21b4c9c041b9 <undefined>:~2088] [pc=0x263124c3f3a] (this=0x21b4c9c041b9 <undefined>)
    3: block_(aka block_) [0x21b4c9c041b9 <undefined>:...

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - process out of memory
Аварийный останов (сделан дамп памяти)

ozzee
() автор топика

размером в 27 мб

Люблю веб. Регулярно полощу им горло когда хреново.
Ставь гулп и minify/uglify.

ritsufag ★★★★★
()

А как у Unity3D с WebGL? Или ты только пробуешь? Интересует сравнение с Blend4web.

Deleted
()
Ответ на: комментарий от ozzee

Эм... К папкам со своим же сайтом тоже? Ну или на крайняк паковать .htaccess с нужными параметрами в архив с файлами, если уж его на сервак за тебя заливают.

Valkeru ★★★★
()
Ответ на: комментарий от ozzee

Ну тогда он пускай и решает вопрос, не? К слову, в бубунте апач с параметрами по умолчанию ужимает сабж до 5.9 МБ

Valkeru ★★★★
()
Ответ на: комментарий от ritsufag

Галп зачем, лол?
Да даже если и хочется не напрямую вызывать, можно же Makefile написать

mystery ★★
()
Ответ на: комментарий от mystery

Увеличь heap

Как можно это сделать?

ozzee
() автор топика
Ответ на: комментарий от ozzee

Что в итоге получается, много ли ограничений, по сравнению с простой юнитей? Что с физикой? В Blend4web всё довольно скромно, очень многого не хватает (по сравнению даже с BGE в блендере). Вот и интересует, сильно ли ограничен ли разработчик в веб версии.

Deleted
()
Ответ на: комментарий от Deleted

много ли ограничений, по сравнению с простой юнитей?

Не заметил. Т.е. графика та же, физика та же, даже огромный исполняемый файл(сабж) такой же. Хотя больше хотелось бы веб плеер под линуксами, но это личные предпочтения. Буду тестировать дальше. К примеру вот одна из игр. Работает нормально, только в Vivaldi она тормозила жутко, в огнелисе работала кадров 30 в секунду.

ozzee
() автор топика
Ответ на: комментарий от ozzee

бе... страшненькая... никакого освещения, никаких анимациев... Твоя? :) Офигеть, через сколько всего с ноускриптом на это сайте продираться...

Ну, такую игру никаких проблем и на blend4web собрать не проблема, вопрос только в загружаемом количестве.

Вообще надо посмотреть и на тот и на этот. Хотя, в программировании я практически ноль, мне надо такое, чтобы как можно меньше иметь дела непосредственно с кодом, я моделить люблю.

И то, что я хочу сделать в blend4web жутко тормозит на планшетах,

Deleted
()
Ответ на: комментарий от Deleted

Твоя?

Моя игра(которая сейчас в разработке) хоть и говно но не на столько. Там они графику херят прилично. Есть один знакомый, скидывал мне билд десктопный своей игры и потом показал готовый на их сайте. Естественно они убили всю графику.

как можно меньше иметь дела непосредственно с кодом, я моделить люблю

Ну тогда Blend4Web и ждать когда они оптимизируют. Я же больше кодить люблю, нежели моделлить(что я не умею почти).

ozzee
() автор топика
Ответ на: комментарий от ozzee

Погоди. Так на том сайте с твоей игрой что-то ещё и делают? Не просто так? Офигеть.

На Blend4Web, кстати, без кодинга тоже не особо что сделаешь, но «прототипить» или 3D презентацию интерактивную - вполне. (это я так, поболтать нескем :) )

Deleted
()
Ответ на: комментарий от Deleted

Так на том сайте с твоей игрой что-то ещё и делают?

Да. Херят графику. А если не хочешь их плагин прикручивать сам, то отдаешь их кому-нибудь, и делишь с ним деньги(да, там платят, не особо много правда).

ozzee
() автор топика
Ответ на: комментарий от ozzee

не особо много правда

Ещё бы :)

Ну, удачи, только на хорошей площадке, а не где вместо графики адвари прикручивают :)

Эх, хотел бы этим серьёзно заняться, да вот, вижу, что это неподъёмно для меня.

Deleted
()
Ответ на: комментарий от Deleted

адвари

Ну я с одной такой работаю. Falcoware. Хорошая площадка, правда надо чтобы много игру качали. И там региональные ограничения, типа цены разные. За одну установку платят сколько-то-там, уже не помню. А сайт выше платит один раз за веб версию игры, все зависит то того насколько хорошо ее сделал.

Ну, удачи

Спасибо, надеюсь смогу с этим зарабатывать :)

Эх, хотел бы этим серьёзно заняться, да вот, вижу, что это неподъёмно для меня

Ну почему же. В Unity3D не надо особо много знать кода к примеру. Достаточно работу со звуками, анимацией, перемещение-поворот ну и по мелочи кое-что. Я модели либо качаю, либо делаю в MakeHuman(если это модели людей), анимации беру с Mixamo, звуки с FreeSound и т.д., ибо я умею только кодить.

ozzee
() автор топика
Ответ на: комментарий от ozzee

подёргай браузером с дебагером (Opera Dragonfly или хромог с f12) jsЫ с сервера. В большинстве случаев, если там стоит nginx впереди апача - сжатие js включено типовыми конфигами. Обращать внимание на Accept-encoding.

svr4
()
Ответ на: комментарий от svr4

Не, тот чувак посмотрит на размер папки с игрой и пошлет меня куда подальше. Он смотрит только на это, да.

ozzee
() автор топика
Ответ на: комментарий от ozzee

Не, всё это понятно. Хитростей никаких тут не вижу. Но заниматься всем этим на профессиональном уровне... Я тут в конкурсе поучаствовал и понял, чужой я в этой сфере, зоть и получается, но чтобы деньги начать зарабатывать - надо иметь поменьше совести и снизить планку на качество :)

Deleted
()
Ответ на: комментарий от anonymous

И в чём сакральный смысл постить ответ на сообщение в General в другом треде в том же General? Ладно бы ещё это в толксах было. И да, у сорримака был похожий ник когда-то. Поциент, о котором ты говоришь специально регистрировался с таким ником и постил тупняк для провокации, о чем сам потом и говорил. Так что в его бане ничего удивительного нет.

Valkeru ★★★★
()
Последнее исправление: Valkeru (всего исправлений: 1)
Ответ на: комментарий от ozzee

ну, пожми гзипом и попроси его внести соответствующие изменения в конфиг nginx (курить маны по gzip_static).

svr4
()
Ответ на: комментарий от Deleted

надо иметь поменьше совести и снизить планку на качество :)

Ну не настолько прям. Надо делать качественную игру чтобы получать деньги. Не всегда конечно :)

на профессиональном уровне

А я сам занимаюсь этим не на профессиональном уровне. Конечно это мое основное занятие(ни работы, ни учебы, да, знаю что я идиот), но профессионально прям я этим не занимаюсь, а пока набираюсь опыта.

ozzee
() автор топика
Ответ на: комментарий от Valkeru

И в чём сакральный смысл постить ответ на сообщение в General в другом треде в том же General?

То собщение удалено, а твоего ника в том треде нет.

Ладно бы ещё это в толксах было.

В толксы я не могу постить.

И да, у сорримака был похожий ник когда-то.

Никогда не было, ты путаешь.

Поциент, о котором ты говоришь специально регистрировался с таким ником и постил тупняк для провокации,

То есть использовал этот ресурс по прямому назначению :D

anonymous
()

Вообще-то вся текстовая статика при правильной настройке сервера автоматом пакуется gzip-ом. Так что если 4 метра приемлимо, то зря переживаешь.

Vit ★★★★★
()
Ответ на: комментарий от ozzee

Ну не настолько прям

Настолько-настолько :) Или прибиться к хорошей студии, что трудно.

Вообще, мне кажется, сфера переполнена, от того так хреново. А так хотелось бы творить!!! Парить!!! А фактически разработчики и художники являются просто средством доставки рекламы и средств слежки клиентам. О как. (это я про отдельных, про публикацию вот на такихсайтах)

Deleted
()
Ответ на: комментарий от anonymous

Как минимум в одном из старых профилей он упоминался.

Valkeru ★★★★
()
Ответ на: комментарий от Deleted

А так хотелось бы творить

Ну много игр выходят творческих. Так что и ты можешь что-то такое сделать. А потом чтобы хоть немного за свой труд поиметь денег выложишь в стим/фалковаре/т.д..

ozzee
() автор топика
Ответ на: комментарий от ozzee

Не, я вряд ли сделаю, я стал полностью не спопобным к ведению самостоятельной осмысленной работы :) Мне надо в дворники.

Deleted
()
Ответ на: комментарий от Dron
/home/user/Рабочий стол/test/Release/test.js:1
(function (exports, require, module, __filename, __dirname) { Module["preRun"].push((function(){var unityFileSystemInit=Module["unityFileSystemInit"]||(function(){if(!Module.indexedDB){console.log("IndexedDB is not available. Data will not persist in cache and PlayerPrefs will not be saved.")}FS.mkdir("/idbfs");FS.mount(IDBFS,{},"/idbfs");Module.addRunDependency("JS_FileSystem_Mount");FS.syncfs(true,(function(err){Module.removeRunDependency("JS_FileSystem_Mount")}))});unityFileSystemInit()}));var MediaDevices=[];Module["preRun"].push((function(){var enumerateMediaDevices=(function(){var getMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia;if(!getMedia){return}function addDevice(label){label=label?label:"device #"+MediaDevices.length;var device={deviceName:label,refCount:0,video:null};MediaDevices.push(device)}if(typeof MediaStreamTrack=="undefined"||typeof MediaStreamTrack.getSources=="und

TypeError: Cannot read property 'preRun' of undefined
    at Object.<anonymous> (/home/user/Рабочий стол/test/Release/test.js:1:69)
    at Module._compile (module.js:410:26)
    at Object.Module._extensions..js (module.js:417:10)
    at Module.load (module.js:344:32)
    at Function.Module._load (module.js:301:12)
    at Function.Module.runMain (module.js:442:10)
    at startup (node.js:136:18)
    at node.js:966:3


И все так же падает UglifyJS.

ozzee
() автор топика
Ответ на: комментарий от ozzee

TypeError: Cannot read property 'preRun' of undefined

Не объявленно Module или не так объявленно, я хз я в js нуб ::)

Dron ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.