yepev Posted July 3 Share Posted July 3 @SoprachevAK как говорится, в любой непонятной ситуации, смотри в исходники XVM Кейворд: sixthsense.png @ Quote Link to comment Short link Share on other sites More sharing options...
Valberton Posted July 3 Share Posted July 3 3 часа назад, SoprachevAK сказал: А кто нибудь может мне подсказать как во флеше превратить png картинку в проекте в картинку в коде (Bitmap или что угодно другое) Попробуй использовать элемент Image, не помню в каком из guiControls* он находится. Изображение посасываться через атрибут source. public var image: Image; override protected function onPopulate (): void { super.onPopulate(); image.source = "relative_path_to_image" } @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted July 3 Author Share Posted July 3 (edited) 19 часов назад, yepev сказал: @SoprachevAK как говорится, в любой непонятной ситуации, смотри в исходники XVM Кейворд: sixthsense.png На самом деле именно от туда и начал, я от туда вообще стащил скрипт для билда через CLI, но картинки у них грузятся супер неочевидно каким то своим инжектором. Вообще, как я понял, картинки грузятся вот так ```as [Embed(source="lock.png")] [Bindable] public var lockImgClass:Class; ``` Но оно требует каких то других флешевых либ (Adobe Flex SDK), которые xvm вообще тащит как либы, но у меня с ними тупо игра крашится, хотя файлы либ взял прямо из xwm, наверное неправильно готовлю, да и как будто бы должен быть более нативный способ. А ещё я потыкал декомпилятором все флешки которые нашел в xwm, и в них нет картинок, честно говоря я не представляю куда они кладут эти PNG ________ 18 часов назад, Valberton сказал: Попробуй использовать элемент Image, не помню в каком из guiControls* он находится. Изображение посасываться через атрибут source. public var image: Image; override protected function onPopulate (): void { super.onPopulate(); image.source = "relative_path_to_image" } Это я тоже находил, но это неизвестно на этапе компиляции, и непонятно как объяснить компилятору, что ему нужна эта картинка Или там наверное можно просто в /flash положить, а не внутри .swf Edited July 3 by SoprachevAK @ Quote Link to comment Short link Share on other sites More sharing options...
Valberton Posted July 4 Share Posted July 4 5 часов назад, SoprachevAK сказал: Это я тоже находил, но это неизвестно на этапе компиляции, и непонятно как объяснить компилятору, что ему нужна эта картинка Или там наверное можно просто в /flash положить, а не внутри .swf Так я тебе буквально код кинул. Просто путь к картинке прописываешь и все. 1 @ Quote Link to comment Short link Share on other sites More sharing options...
yepev Posted July 4 Share Posted July 4 8 часов назад, SoprachevAK сказал: А ещё я потыкал декомпилятором все флешки которые нашел в xwm, и в них нет картинок, честно говоря я не представляю куда они кладут эти PNG А прямо куда удобно, файликом. Хоть локально, хоть на сервер. Во флешки не зашивают - это было бы слишком сложно для юзеров, которые через XVM подменяют картинки) 1 @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted July 4 Author Share Posted July 4 7 часов назад, yepev сказал: Во флешки не зашивают - это было бы слишком сложно для юзеров ну вот потому что да, xvm подразумевает, что юзеры менять будут, а мне то нужно чисто спрайты для кнопочек, которые ну вот максимально очевидно внутрь флеша И если бы я не смотрел на моды Полироида, где спрайты внутри флешки, я бы и не парился, но ведь можно же как то запихнуть внутрь @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted July 4 Author Share Posted July 4 10 часов назад, Valberton сказал: Просто путь к картинке прописываешь и все Так путь к картинке то не внутри флеш файла, а во внешнем мире Мне там на самом деле этот подход ещё и не совсем удобен, мне нужно синхронно в BitMap, иначе бы я и через Loader смог Но возможно есть смысл просто пайплайн изменить и лепить на экран эту танковую Image, пусть сама там загружается когда захочет @ Quote Link to comment Short link Share on other sites More sharing options...
yepev Posted July 4 Share Posted July 4 5 минут назад, SoprachevAK сказал: а мне то нужно чисто спрайты для кнопочек, которые ну вот максимально очевидно внутрь флеша А зачем? Положи их просто в .wotmod вместе с остальными файлами мода. Распространять всё-равно сможешь как один пакет. @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted July 4 Author Share Posted July 4 4 часа назад, yepev сказал: А зачем? Положи их просто в .wotmod вместе с остальными файлами мода. Распространять всё-равно сможешь как один пакет. Перфекционизм) Но вообще, скорее всего, они подгружаются асинхронно, и не всегда это удобно. Но в принципе я сделал через Image как советовал @Valberton, и для моих задач подошло, картинки в wotmod, но и ладно, там и похуже костыли с этим cef'ом @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted July 5 Author Share Posted July 5 Забавный факт, если в коллбеке на сокета ProgressEvent.SOCKET_DATA читать socket.readBytes(buffer, 0, socket.bytesAvailable), то время от времяни (раз в 4-20 чтений) случается EOFError: AS3 Net Socket: Failed to read Bytes, а если делать тоже самое, но читать автоматически до конца, что по сути тоже самое socket.readBytes(buffer, 0, 0), то работает стабильно хорошо. Видимо у флешевого сокета кривая буфферизация В первом случае игра крашится без логов но с краш-репортом примерно через 20-30 секунд, во втором случае через 10-15 минут. Танковый краш репортер ворует репорт спустя пару секунд после краша, так что пока я не знаю что в нём) 1 @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted July 6 Author Share Posted July 6 (edited) А кто нибудь мне подскажет, что такое ByteArray.compress и ByteArray.uncompress в танковом флеше. Оно определённо компрессит и декомпроссит, но я не понимаю во что Выглядит как zlib, но с какими то странностями —— Разобрался, это обычный zlib, а странности были в одном пропущенном байте в моём кастомном буфферизаторе) Edited July 7 by SoprachevAK 1 @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted July 7 Author Share Posted July 7 Йоу. Работает) output.webm 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Valberton Posted July 8 Share Posted July 8 7 часов назад, SoprachevAK сказал: *футаж с донатом* А вот это прикольная тема. Владельцам только одного монитора будет полезно. @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted July 8 Author Share Posted July 8 6 часов назад, Valberton сказал: А вот это прикольная тема. Владельцам только одного монитора будет полезно. Ну вообще не только, это скорее для разных игровых виджетов например для всяких турниров. Я хочу ещё провайдер данных сделать, чтоб в виджет поступала какая нибудь информация об игре: результаты боя, урон, хп но это если оно мне перестанет игру крашить, иначе затея впустую @ Quote Link to comment Short link Share on other sites More sharing options...
yepev Posted July 8 Share Posted July 8 3 минуты назад, SoprachevAK сказал: но это если оно мне перестанет игру крашить, иначе затея впустую Ну не впустую, ведь есть план Б: выкинуть флеш и рисовать через D3D @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted July 8 Author Share Posted July 8 6 минут назад, yepev сказал: Ну не впустую, ведь есть план Б: выкинуть флеш и рисовать через D3D Ну вообще конечно такой вариант есть, а флеш оставить чисто для кнопочек с настройками, но я там полистал, выглядит страшно Хотел было я сказать, что танковый браузер скорее всего так и сделан, но чёт нашел https://github.com/IzeBerg/wot-src/blob/RU/sources-as3/gui_lobby/scripts/net/wg/gui/lobby/browser/Browser.as вот это, где они просто картинку по url грузят. Но я сомневаюсь, что это они в 60фпс грузят скриншоты. Учитывая, что там даже ютуб неплохо работает, то скорее всего оно на аппаратном ускорители, а значит выводится сразу на экран. @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted July 9 Author Share Posted July 9 Попробовал минимальный пример, реально крашится из-за сокета. Когда данные по нему ходят, со временем случается рандомная ошибка. Пока данные не ходят, всё норм. Если сокетов одновременно несколько, ошибки случаются чаще чем линейно. Могу предположить, что сборщик мусора собирает что то лишнее. Потыкал DAAPI, не нашел в нём способа передать ByteArray, зато можно передать String любой длины и как будто бы даже быстро (без лагов), так что завтра повтыкаю в кодировки, и попробую сокеты слушать в танковом питоне, а во флеш отправлять уже картинку (png байты) ps. Самому страшно от количества костылей, через которые картинка проходит между процессором и монитором) 1 @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted July 9 Author Share Posted July 9 А есть какой нибудь питоновский коллбек на каждый кадр (который fps)? @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted July 10 Author Share Posted July 10 Сделал передачу картинки из питона во флеш по DAAPI, кодирую в base64, потому в utf8 и передаю как стрингу, потом во флеше крайне неоптимально декодирую обратно в байты. Оно работает, не крашится, и даже 60фпс тянет без особых проблем. Нужно конечно сильно порефакторить, но способ рабочий. Скорее всего, будет оптимальнее передавать через массив uint’ов, как будто бы оно по байтам оптимальнее будет, да и декодирование быстрее получится. Но это уже вопрос кодека. 1 @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted July 16 Author Share Posted July 16 (edited) Картинка танкового сайта весит 250к интов Превращаю байты в инты в питоне, передаю во флеш, декодирую обратно Вот кодирование и передача мгновенные, но ПУСТОЙ ЦИКЛ во флеше до 250к выжирает весь мой процессор (одно ядро, на котором основной поток танков) Вот буквально пустой цикл. Как будто бы надо мучать всякие нативные декодеры, пусть и менее оптимальные по памяти. Есть надежда на writeMultiByte(value:String, charSet:String):void, но надо будет подобрать charSet который фиксированной ширины и полностью её покрывает PS. С моими wotstat виджетами работает супер хорошо (скорее всего они очень хорошо сжимаются), а вот какой нибудь видос открыть с высоким битрейтом уже проблема Edited July 16 by SoprachevAK 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.