SoprachevAK Posted July 17 Author Share Posted July 17 Эх, в танках поддерживаются charSet'ы только unicode и utf-8, которые не позволяют закодировать произвольные массив байт А кто нибудь знает, как до DAAPI реализовывалась связь Python->Flash ? @ Quote Link to comment Short link Share on other sites More sharing options...
Valberton Posted July 17 Share Posted July 17 3 часа назад, SoprachevAK сказал: А кто нибудь знает, как до DAAPI реализовывалась связь Python->Flash ? https://kr.cm/f/t/28160/ 2 @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted July 18 Author Share Posted July 18 21 час назад, Valberton сказал: https://kr.cm/f/t/28160/ Действительно) Читал там только про DAAPI. Спасибо Но к сожалению оно тоже не поддерживает передачу байтиков( @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted July 18 Author Share Posted July 18 (edited) К чему я пришел: 1. Из питона во флеш через DAAPI передаю Array (из uint, но во флеше они нетипизированные) 2. Через глобальную нативную функцию Vector превращаю массив в типизированный вектор 3. Записываю Vector в ByteArray через нативный сериализатор AMF3 4. Обрезаю заголовки формата и получаю точные байтики которые хотел передать. Этот костыль в 5 раз быстрее чем пустой цикл на длину массива. И в 10 раз быстрее чем декодинг из Base64. Моего процессора всё равно хватает только на 250-300 кбайт png файла. Дальше основное ядро забивается и игра начинает лагать. В идеале можно вынести в Worker, которые во флеше есть, но хз как в танковом. Быстрее не станет, но лагать будет только виджет, а танки не будут. (конечно правильно было бы через d3d, но я не готов) Edited July 18 by SoprachevAK 1 @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted July 19 Author Share Posted July 19 Woker'ов в танках судя по всему нет, либо нужно как то с бОльшими правами запускать, может через ViewSettings какие нибудь хитрые ERROR: [Scaleform] ReferenceError: Error #1065: Variable Worker is not defined. @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted July 19 Share Posted July 19 @SoprachevAK да просто используй dx overlay 1 @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted July 19 Author Share Posted July 19 10 часов назад, SkepticalFox сказал: @SoprachevAK да просто используй dx overlay Да по хорошему да, но как то совсем не просто Там тоже будут некоторые проблемы, в плане что оно будет поверх всего интерфейса, и скорее всего даже курсора. Скорее всего пока оставлю как есть, в крайнем случае можно с потерями сжимать. Упираюсь то именно в трансфер во флеш @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted July 19 Author Share Posted July 19 (edited) А есть где нибудь актуальные примеры по добавлению флешки в боевой интерфейс? Вроде бы он уже тоже на AS3 и как будто бы должно быть как с ангаром app.loadView(SFViewLoadParams(...)), а потом во флеше extends AbstractView и addChild. Но как то не работает. Посмотрел Полироидовский флеш, там всякие его common либы с абстрактными BattleDisplayable и инжекторами, которые динамически регистрируют компоненты уже из флеша. Оно только так и работает, или можно попроще? ______ UPD: Всё сильно проще, ровно как и с ангаром. Просто я импортировал ангарные зависимости) Edited July 19 by SoprachevAK 1 @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted July 22 Author Share Posted July 22 Знаете какого цвета эта цифра 5? – Абсолютно белая с 50% прозрачности А знаете почему она выглядит серой? – А потому что CEF отдаёт картинку в PRGBA, а OBS её юзают как RGBA У меня в моде будет корректно) 1 @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted July 24 Author Share Posted July 24 Оказалось что Python тоже медленный язык, и просто так пройтись по всем пикселям картинки, и каждый цвет RGB поделить на прозрачность и умножить на 255 тоже очень медленная операция, а numpy весит 100мб На этом я пошел попробовал скомпилить c++ на винду из под не винды, ничего не вышло, вернулся к питону. Заменил функцию на сишную, которую вызываю через ctypes, вроде бы быстро, а работает или нет узнаем когда сервера включат после обновы. 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Solution SoprachevAK Posted July 25 Author Solution Share Posted July 25 Ну как то так. Будем считать что отображение виджетов доделано. Поддерживается: Добавление виджетов по URL и из локальных файлов DevTools для открытых виджетов (нужно прописывать в конфиге и перезапускать игру) Изменение размера в двух режимах, зависит от мета тега страницы Произвольное изменение высоты/ширины Изменение ширины, а высота подстраивается под высоту страницы Блокировка виджета – не даёт его случайно сдвинуть, делает прозрачным для кликов Перезагрузка страницы с отключенным кешем страницы Минимизация виджета – виджет всё ещё выполняется, но не отправляется на клиент (почти не тратит ресурсов компа) Возможно накликать разные размеры/позиции для боя и ангара Виджеты сохраняются при перезапуске игры LocalStorage сохраняется между сессиями https://github.com/WOT-STAT/cef-widget Следующий шаг – Data Provider, который будет через WebSocket расшаривать для виджетов какие нибудь данные по типу результатов боя. Будет отдельным модом и встроенным в этот 5 @ Quote Link to comment Short link Share on other sites More sharing options...
Pbody_iwnl Posted July 31 Share Posted July 31 Это гениально! А ещё это упростит жизнь для некоторых стримеров. Моё почтение @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted July 31 Author Share Posted July 31 2 часа назад, Pbody_iwnl сказал: Это гениально! А ещё это упростит жизнь для некоторых стримеров. Моё почтение Ну для стримеров сомнительно, у них и OBS есть, а вот игрокам да Я сейчас ещё делаю DataProvider и WidgetSDK для JS, чтоб данные из игры в виджеты гнать 2 @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted August 19 Author Share Posted August 19 Ну в общем кому интересно, доделал Исходники https://github.com/WOT-STAT/wotstat-widgets 2 @ Quote Link to comment Short link Share on other sites More sharing options...
Mixaill Posted August 23 Share Posted August 23 19.07.2024 в 08:12, SkepticalFox сказал: @SoprachevAK да просто используй dx overlay В идеале конечно как клиентский CEF делать: кормить CEFу хендл на текстуру Scaleform, но максимально нетривиально в исполнении. 2 @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted August 24 Author Share Posted August 24 15 часов назад, Mixaill сказал: В идеале конечно как клиентский CEF делать: кормить CEFу хендл на текстуру Scaleform, но максимально нетривиально в исполнении. Ну это определённо было бы идеально, но учитывая, что Scaleform живёт в нативной части движка, это действительно будет сложнее, чем я готов ..так ещё и на винде @ Quote Link to comment Short link Share on other sites More sharing options...
SoprachevAK Posted August 24 Author Share Posted August 24 Попробовал ещё один способ передать байты во флеш – через URL запрос к локальному http серверу Забавно, что Loader.load(new URLRequest(url)) память утекает, а URLLoader.load(new URLRequest(url)) |> Loader.loadBytes() всё норм Но ничего не работает, байты доходят, но дальше обработка занимает больше одного кадра, и успевает придти следующих кадр и честно говоря дебажить это энтузиазма не осталось В завершения скажу, что глобально CEF модом – эксперимент скорее неудачный, несмотря на то, что что то из него получилось @ 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.