SerVB 35 Posted August 8, 2020 Привет! Хотелось бы разрешать конфликты атласов не вручную, например, с помощью спец инструментов типа CCAtlas, а в рантайме с помощью спец мода. Как бы он мог работать: Мод бы мог вводить некий стандарт объявления замены картинок в других модах. Например, другие моды должны позвать этот мод, сказав нужное число раз "хочу вот эту картинку X в атласе Y заменить на свою картинку по пути Z". Когда все сторонние моды об этом сказали (видимо, нужно потребовать проделать эти действия в момент загрузки игры), разрешитель конфликтов вытаскивает исходники атласов из самой игры, делает в них запрошенные изменения, и отдает их игре. Это облегчит текущую работу по перепаковке атласов. А еще в модах не надо будет хранить полные атласы, а только изменения к атласам, что существенно уменьшит размер таких модов. Наконец, это рискует стать очередным стандартом :) Не было ли такой идеи? Есть ли реализация? Если реализации нет, видете ли подводные камни в реализации (например, пока что я не знаю, есть ли у модов возможность подменять файлы в момент загрузки игры, чтоб реализовать пункт 2)? Есть ли сомнения в удобстве использования? Quote Share this post Link to post Short link Share on other sites
DraugDM 17 #486736 Posted August 8, 2020 (edited) было бы не плохо!!! но, похоже не выполнимо(( бетл атлас идет общий одной ддс(( Edited August 8, 2020 by DraugDM Quote Share this post Link to post Short link Share on other sites
SerVB 35 #486742 Posted August 8, 2020 Так вот именно, что мод при запуске танков: вытаскивает эту одну большую DDS из оригинальных файлов в клиенте, применяет изменения, которые просят сделать другие моды, и получает итоговую большую DDS, которую и отдает в качестве финальной клиенту. Эра хранения полных DDS в файлах модов должна пройти в таком случае. P. S.: можно запилить оптимизацию: запоминать последнюю сгенерированную DDS, и если команды на изменение поступили те же и исходник не изменился, то пропускать процесс генерации. Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #486753 Posted August 8, 2020 1 час назад, SerVB сказал: и получает итоговую большую DDS, которую и отдает в качестве финальной клиенту. А эта DDS когда и как грузится клиентом? 5 часов назад, SerVB сказал: например, пока что я не знаю, есть ли у модов возможность подменять файлы в момент загрузки игры, чтоб реализовать пункт 2 Делается перезапуск клиента игра. Что в сумме придает еще больше геморроя при реализации всего этого. Quote Share this post Link to post Short link Share on other sites
SerVB 35 #486770 Posted August 8, 2020 (edited) 55 minutes ago, StranikS_Scan said: Делается перезапуск клиента игра. Что в сумме придает еще больше геморроя при реализации всего этого. Перезапуск действительно очень не хотелось бы делать. Я бы даже сказал, что если делать, то без перезапуска) 55 minutes ago, StranikS_Scan said: А эта DDS когда и как грузится клиентом? Вот это как раз и открытый вопрос. Надо поисследовать. Пока что я только смотрел на документ о пакетах модов, там есть вот это: К сожалению, документ довольно скупо рассказывает, что представляет из себя получаемая файловая система. "Пакеты сначала добавляются и обрабатываются конфликты, а только потом запускается код модов" – полезная информация, но на самом деле не очень понятно, что имеется в виду под "добавлением" всех пакетов. Какие варианты навскидку могут сработать, если оформлять мод как wotmod: Можно поставлять мод с фиктивными файлами атласов, например с пустыми. И при загрузке мода изменять свой wotmod файл, заменяя атласы на сгенерированные. Кажется рабочим, если клиент при "добавлении" пакета только запоминает ссылку на бинарные файлы, а подгружает файлы только по необходимости уже в процессе игры по запомненным ссылкам. Предыдущий вариант не сработает, если клиент заранее куда-нибудь копирует бинарное содержимое wotmod файлов и использует потом это скопированное содержимое. На самом деле, кажется, что такого не может быть, потому что клиент довольно большой и в оперативку не влезет, а на диск копировать было бы странно) Но клиент вполне может копировать какие-то определенные файлы – если атласы туда попадают, то печаль. Или например он может считать хэш от файлов, и если в процессе игры он поменялся, то игра вылетает – тоже кажется не очень реалистичным сценарием, потому что уж больно быстро загружается клиент, чтобы все хэши просчитать. Могут быть конечно и какие-то другие причины, почему первый вариант не сработает. В таком случае сходу варианты не придумываются; нужно будет смотреть на декомпилированный клиент (как всегда благодарствую) и пытаться понять, можно ли там как-то подвязаться к загрузке файлов и изменить уже загруженные файлы. Edited August 8, 2020 by SerVB Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #486788 Posted August 9, 2020 7 часов назад, SerVB сказал: Вот это как раз и открытый вопрос. Надо поисследовать. Это уже ответ на вопрос. Грузится нативно, еще до пайтона. Всё. Значит только через перезапуск клиента игры. Quote Share this post Link to post Short link Share on other sites
SerVB 35 #486797 Posted August 9, 2020 @StranikS_Scan , а что означает "грузится"-то? Копируется в оперативку? Quote Share this post Link to post Short link Share on other sites
Kapany3uk 948 #486840 Posted August 9, 2020 (edited) Как-то менял атлас (с иконками) прямо будучи в ангаре: изменения "подхватились", след-но "читка" атласа происходит как минимум один раз при загрузке боя... Edited August 9, 2020 by Kapany3uk 1 Quote Share this post Link to post Short link Share on other sites
SerVB 35 #486843 Posted August 9, 2020 @Kapany3uk, спасибо, отличная новость! Идея просто взять и заменить файл мода с атласом мне в голову не приходила. Я попробовал это сделать в проводнике, но файл заблокирован клиентом и перезаписать его нельзя. Возможно, этого не будет происходить, если модифицировать файл прям из клиента. Надо будет проверить. А Вы каким образом "меняли атлас"? Quote Share this post Link to post Short link Share on other sites
Slava7572 1,685 #486846 Posted August 9, 2020 2 часа назад, SerVB сказал: А Вы каким образом "меняли атлас"? обычным,с помощью ССатлас,иконок из TankIconMaker и кое каких своих,это уже ритуал ежепатчевый Quote Share this post Link to post Short link Share on other sites
SerVB 35 #486847 Posted August 9, 2020 1 hour ago, Slava7572 said: уже ритуал ежепатчевый Не, тут вопрос скорее к @Kapany3uk: как получилось сменить атлас в ангаре? Даже если вручную какие-то действия были сделаны, все равно интересно Quote Share this post Link to post Short link Share on other sites
BuSH 174 #486885 Posted August 10, 2020 Блокируются .wotmod пакеты которые уже смонтированные куда-то там. Файлы с res_mods прочитаны и разблочены. Думаю, если добраться до этого "куда-то там" — их так же можно перезаписывать. И всё что клиент перечитывает будет подтянуто заново. У клиента есть 2 стадии работы battle и lobby(читай ангар). При загрузке боя, выгружается куча всего с lobby и после окончания боя многое выгружается загружая ангар. Между этими стадиями можно много чего подкидывать. Вот например допилили в xvm значки мастеров в дереве исследования, я не обновляя весь xvm закинул только res_mods\mods\xfw_packages\xvm_lobby где ангарные флешки и после боя появилось обновленное дерево с мастерами. Ну а всякие pyc файлы всегда закидую или обновляю без перезапусков делая просто новый импорт. Та и иконмейкер вроде юзал как-то среди боя и в следующем бою всё как надо. Не помню точно, но удивился бы если бы не прокатило. Проблема только с .wotmod из-за эмуляции. 1 Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #486886 Posted August 10, 2020 16 минут назад, BuSH сказал: из-за эмуляции. файловой системы. Quote Share this post Link to post Short link Share on other sites
BuSH 174 #486888 Posted August 10, 2020 Опасаюсь заумных слов ) Как-то бродя по дереву папок из клиентского питонапайтона натыкался на эти все залежи, но что-то другое искал и не заморачивался. 1 Quote Share this post Link to post Short link Share on other sites
Kapany3uk 948 #486889 Posted August 10, 2020 15 часов назад, SerVB сказал: как получилось сменить атлас в ангаре? 16 минут назад, BuSH сказал: Проблема только с .wotmod выкладываю/меняю/удаляю файлы атласа (dds + xml) в папке C:\Games\World_of_Tanks_RU\res_mods\1.10.0.0\gui\flash\atlases\ (никаким боком не .wotmod) при отсутствии файлов атласа подхватываются дефолтные-клиентские, при наличии - пользовательские. 1 Quote Share this post Link to post Short link Share on other sites
BuSH 174 #486891 Posted August 10, 2020 (edited) 2 минуты назад, Kapany3uk сказал: подхватываются дефолтные-клиентские, при наличии - пользовательские. ну вот! 25 минут назад, BuSH сказал: удивился бы если бы не прокатило Народ топит за wotmod'ы не понимая их сути. А в иконках, с переходом на атласы, в упаковке нет надобности. А вот раньше это значительно замедляло загрузку боя. На всяких калькуляторах, десяток секунд можно было выиграть и начать успевать в бой до старта. Edited August 10, 2020 by BuSH 1 Quote Share this post Link to post Short link Share on other sites
Kapany3uk 948 #486892 Posted August 10, 2020 (edited) 19 часов назад, SerVB сказал: А Вы каким образом "меняли атлас"? 17 часов назад, Slava7572 сказал: обычным,с помощью ССатлас,иконок из TankIconMaker и кое каких своих,это уже ритуал ежепатчевый именно так )) готовые, сформированные атласы копирую в папку с игрой (res_mods\х.х.х.х\gui\flash\atlases\) - независимо запущен клиент или нет - при следующем бое все подхватывается. Edited August 10, 2020 by Kapany3uk Quote Share this post Link to post Short link Share on other sites
Slava7572 1,685 #486895 Posted August 10, 2020 42 минуты назад, BuSH сказал: раньше это значительно замедляло загрузку боя т.е. пакеты быстрее читаются? Quote Share this post Link to post Short link Share on other sites
StranikS_Scan 4,210 #486897 Posted August 10, 2020 (edited) 12 минут назад, Slava7572 сказал: т.е. пакеты быстрее читаются? Обычно да. 20 часов назад, SerVB сказал: Я попробовал это сделать в проводнике, но файл заблокирован клиентом и перезаписать его нельзя. О не просто заблокирован, к нему идёт нативный доступ. Попытки влезть туда извне в винде будут приводить к крашам игры. А чего не устраивает перезапуск клиента игры командой в пайтоне? Edited August 10, 2020 by StranikS_Scan Quote Share this post Link to post Short link Share on other sites
BuSH 174 #486898 Posted August 10, 2020 1 минуту назад, Slava7572 сказал: т.е. пакеты быстрее читаются? нет!!! Проблема была в количестве файлов, которых иконками было... ну за тыщу емнип. Без замера это будет очень голословно, но оооочень грубо говоря клиенту обратиться к одному файлу иконки не на много затратнее чем обратится к файлу-архиву где тысяча этих иконок. ССД очень сильно решает, но никак не полностью, как многие считают. Ты вот не помнишь ту обнову где лянчер запаковывал файлы в packages/*.pkg? 0.7.1.1 емнип, которая сразу же после 0.7.1 как-то резко вышла. Сидишь и втыкаешь час-второй как лянчер собирает паки. ЧТо-то около 20-30к файлов клиента превратились в пару десятков pkg. Но что тогда случилось?! Бои стали стартовать секунд на 15+ раньше. У меня самые частые файлы загрузок были раскиданы на 3 физических харда тупыми симлинками. Отсчёт в боях я ждал по 15-20 секунд. Сам отсчет 30 сек, который начинался когда загрузится половина игроков. А после упаковки в pkg. У всех до единого игроков бой стал грузится в несколько раз быстрее из-за разгрузки файловой системы. 5 минут назад, StranikS_Scan сказал: Обычно да. Это "обычно" касается только твоего мода MCTCreator, в xvm там может десятую секунды выиграет... Остальные wotmod содержат по пару файлов, которые, некоторые из них, может быстрее и загрузятся, но без специального софта замеряющего миллисекунды не заметишь даже с хардом. Quote Share this post Link to post Short link Share on other sites