|
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
Цитата:
Конечно, если данных там сильно меньше чем весит флэшка, можно и заэмбедить их. Кстати, еще один плюс подгрузки ресурсов по мере надобности -их можно освободить как только надобность пропадет. |
|
|||||
Регистрация: Jan 2012
Сообщений: 836
|
undefined но ведь есть средняя статистика по памяти, как на андройд так и на пк. Занимается ведь оперативная память, верно? И если например 300мб памяти занято чем-то, это ведь вполне нормально, сейчас на девайсах 1гб+, ну про пк ваще молчу.
Цитата:
|
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
Цитата:
Цитата:
Это общепринятая практика. Прикинь что бы было если бы старкрафт на старте грузил сразу все ассеты. И держал их всегда в памяти |
|
|||||
Цитата:
Godwarlock, я не встречал еще ни одной игры, где ассеты были бы хорошо защищены. Как-то попадалась игра, в которой ассеты были зашифрованы, а меня попросили их вытащить. Я даже не стал заморачиваться с поиском ключа. Просто запустил эту игру, дождался когда она загрузится в браузере, и сделал дамп памяти для процесса плеера. Этот дамп потом просто декомпилировал и вытащил все, что было нужно. Вообще, даже в эйр графику мало кто реально шифрует. В основном попадаются (да я и сам так делаю) файлы уже в формате Bitmap, сохраненные в файл через ужатый методом compress, алгоритмом lzma. И делается это потому, что они в таком виде весят меньше png. Бывает встречаются файлы зашифрованные XOR'ом. Там просто байты местами поменены. Расшифровывается за несколько минут даже не очень продвинутым хакером. Подобные темы поднимаются здесь с завидной регулярностью. Шифровать что-то или нет, дело твое. Скорее всего твоя графика нафиг никому не нужна, и ты просто потеряешь время на все эти шифрования. Но самое главное, для расшифровки требуется много процессорных ресурсов. Дело даже не в памяти. Твоя игра просто подвиснет, на время расшифровки, потому что флеш - однопоточный.
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
Регистрация: Jan 2012
Сообщений: 836
|
caseyryan
Цитата:
Цитата:
Цитата:
Цитата:
Последний раз редактировалось Godwarlock; 31.03.2018 в 23:41. |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
Да.Только не надо приводить пустой аргумент что 100% защиты не существует, это и так всем известно.Речь о том,как усложнить жизнь таким деятелям,при хранении данных на сервере возможностей это сделать много больше.
|
|
|||||
Цитата:
п.с. На счет пустого аргумента. 100% защита существует) Не выкладывай файлы никуда, и никто у тебя их не сопрет) Цитата:
Вот набор методов, позволяющих это сделать (использую на андроиде. Позволяет сэкономить до 30 - 40% объема файла, в сравнении с png). Вместе с распаковкой, по времени получается примерно так же, как загрузка простых PNG и декодирование их в Bitmap. Так что выигрыша или проигрыша во времени работы нет. Есть только выигрыш по памяти устройства public function saveBitmapData(bitmapData:BitmapData, path:String):void { var byteArray:ByteArray = new ByteArray(); byteArray.writeUnsignedInt(bitmapData.width); byteArray.writeUnsignedInt(bitmapData.height); byteArray.writeBytes(bitmapData.getPixels(bitmapData.rect)); byteArray.compress(CompressionAlgorithm.LZMA); saveByteArray(byteArray, path); } public function loadBitmapData(imagePath:String):BitmapData { var byteArray:ByteArray = null; var bitmapData:BitmapData = null; var width:uint = 0; var height:uint = 0; byteArray = loadByteArray(imagePath); byteArray.uncompress(CompressionAlgorithm.LZMA); width = uint(byteArray.readUnsignedInt()); height = uint(byteArray.readUnsignedInt()); bitmapData = new BitmapData(width, height); bitmapData.setPixels(bitmapData.rect, byteArray); byteArray.clear(); return bitmapData; } public function saveByteArray(bytes:ByteArray, path:String):void { //var file:File = File.applicationStorageDirectory.resolvePath(path); var file:File = new File(path); var fileStream:FileStream = new FileStream(); fileStream.open(file, FileMode.WRITE); fileStream.writeBytes(bytes); fileStream.close(); bytes.clear(); } public function loadByteArray(path:String):ByteArray { //imagePath = File.applicationDirectory.resolvePath(imagePath).url; path = File.applicationDirectory.resolvePath(path).nativePath; var file: File = new File(path); var fileStream: FileStream = new FileStream(); var byteArray: ByteArray = new ByteArray(); fileStream.open(file, FileMode.READ); fileStream.readBytes(byteArray); fileStream.close(); return byteArray; }
__________________
Ко мне можно и нужно обращаться на ты) |
|
|||||
Регистрация: Jan 2012
Сообщений: 836
|
caseyryan спасибо) На днях попробую твой метод
|
|
|||||
Регистрация: Dec 2014
Адрес: Санкт-Петербург
Сообщений: 479
|
caseyryan, очень круто. Прямо то что доктор прописал Сохранить бы это добро куда-нибудь, чтобы потом не забыть. У меня единственный вопрос. Выходит, что для использования твоих решений нужно сначала свои ассеты загружать в программу, а затем уже из BitmapData сохранять на диск в виде сжатых ByteArray-ев, правильно? Или специальную сервисную прогу написать, которая это будет делать?
__________________
Не сломано - не чини! |
|
|||||
Цитата:
__________________
Ко мне можно и нужно обращаться на ты) |
Часовой пояс GMT +4, время: 19:52. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|