ARP - новый формат упаковки ресурсов
Вечерело. Кончалось пиво. За окном снежило. В чате молчало..
Тут я и решился рассказать о своём проекте.
Предыстория
Возникла задача портировать онлайн игру под мобильные платформы.
Android и iOS.
Под андроид первый тестовый apk был готов очень скоро, но для iOS возникли проблемы.
Эппловцы запрещают грузить внешние swf с кодом, а под кодом понимаются даже просто залинкованные в библиотеке битмапки, спрайты и мувиклипы.
Цитата:
Dynamically loading a ‘remote‘ SWF, that contains ActionScript code will continue to NOT work.
http://blogs.adobe.com/airodynamics/...r-apps-on-ios/
http://blogs.adobe.com/airodynamics/...r-apps-on-ios/
Но в логике контроллеров гуи, описаниях карт, описаниях миссий и т.п. уже прописано: бандл#имя ресурса.
Т.е. грузится бандл.swf и в нем берётся инстанс от "имя ресурса".
Перелопачивать всю эту груду кода и конфигов совершенно лень.
Я решил оставить существующую иерархию и придумал свой формат
ARP - Atf-based Resource Pack
Сделал для этого специальную тулзу, которая перегоняет swf в arp.
По сути это растеризованные мувики, спрайты, битмапы, битмапдаты сохраннённые в png а затем переконвертируемые в ATF и все опять собрано в один бандл и сериализовано в AMF3.
В тулзе есть различные опции по конвертированию png2atf + немножко ещё.
Я пока кратенько описал, так как проект, хотя уже и рабочий, но далёк от совершенства.
Если это кому-нибудь интересно напишу подробнее.
Собственно сам проект:
https://bitbucket.org/k0t0vich/arp
Подписывайтесь, ставьте лайки..
PS: отдельное спасибо Дикобразу за алгоритм упаковки и СлаваРа за поддержку.
PPS: пока версия arp - нулевая, т.е. альфа. Сам формат может поменяться (и, скорей всего, - поменяется)
Всего комментариев 21
Комментарии
10.02.2013 17:29 | |
Я так понял асинхронной загрузки нет? Т.е. нельзя просто получить ссылку на ByteArray (точнее на FileStream в асинхронном режиме) и смещение, для предачи, например, в текстуру?
|
12.02.2013 22:18 | |
Асинхрона нет, не вижу надобности, кроме того, в старлинге тоже нет асинхронного декодирования ATF, а формат, в первую очередь, заточен под него.
|
12.02.2013 23:30 | |
В старлинге нет (пока нет?). Но не одним же старлингом живет Stage3D. Можно было бы запилить универсальную либу для упаковки ресурсов.
|
13.02.2013 14:12 | |
Кстати, при асинхронной загрузке больших текстур можно будет показать анимированный индикатор загрузки. Хотя я не пробовал, на предмет возникновения тормозов.
|
13.02.2013 16:59 | |
Я про старт приложения и писал.
|
14.02.2013 12:21 | |
Цитата:
я бы в Packer добавил проверку на дубликаты картинок простым BitmapData.compare (бывает такое что кадры совпадают)...
- Разборка до шейпов, битмап и/или анализ fla, тоже есть в планах (пробовал использовать flump и grapefrukt, но на моих ассетах почему-то ничего хорошего не вышло) - По поводу упаковки : сейчас несколько ресурсов упаковываются в одну текстуру и наоборот, один ресурс может быть упакован в несколько текстур, сама упаковка может и не оптимальна, работаю над этим. Если ты имеешь в виду упаковывать несколько swf в 1 arp, то это тоже возможно сделать, но для моего конкретного проекта это не нужно. Сам смысл был в соответствии bundle.sfw#ResClass -> bundle.arp#ResClass. В общем, сейчас я уже вижу, что сделать "универсальное" решение на все случаи жизни можно, но требует неоправданных усилий) Пока меня уже устраивает то, что есть. По мере поступления реальных задач, буду допиливать. Но вдруг кому-то пригодится моё решение.. |
|
Обновил(-а) Котяра 14.02.2013 в 12:41
|
16.02.2013 02:07 | |
Дим, да - приходится идти по стопам.
Но этот формат не для ВСЕХ swf ресурсов, а с некоторыми разумными ограничениями. |
|
Обновил(-а) Котяра 22.02.2013 в 00:52
|
19.02.2013 16:21 | |
Котяра, а не проще было написать парсер свф?
|
19.02.2013 17:55 | |
Так он же уже написан: https://github.com/claus/as3swf
|
Последние записи от Котяра
- Страх и ненависть в Нью-Дели или сборка мультипака для arm7 и x86 c Adobe AIR 14 в FB (16.06.2014)
- Нативный EventDispatcher в старлинге (27.11.2013)
- Нужны ошибки компиляции при создании экземпляра синглетона извне? Запросто! (13.09.2013)
- ARP - новый формат упаковки ресурсов (07.02.2013)
- DropShadowFilter и GlowFilter в Starling (16.01.2013)