Jump to content
Korean Random
SerVB

Мод для разрешения конфликтов атласов

Recommended Posts

Привет! Хотелось бы разрешать конфликты атласов не вручную, например, с помощью спец инструментов типа CCAtlas, а в рантайме с помощью спец мода.

 

Как бы он мог работать:

  1. Мод бы мог вводить некий стандарт объявления замены картинок в других модах. Например, другие моды должны позвать этот мод, сказав нужное число раз "хочу вот эту картинку X в атласе Y заменить на свою картинку по пути Z".
  2. Когда все сторонние моды об этом сказали (видимо, нужно потребовать проделать эти действия в момент загрузки игры), разрешитель конфликтов вытаскивает исходники атласов из самой игры, делает в них запрошенные изменения, и отдает их игре.

 

Это облегчит текущую работу по перепаковке атласов. А еще в модах не надо будет хранить полные атласы, а только изменения к атласам, что существенно уменьшит размер таких модов. Наконец, это рискует стать очередным стандартом :)

 

Не было ли такой идеи? Есть ли реализация? Если реализации нет, видете ли подводные камни в реализации (например, пока что я не знаю, есть ли у модов возможность подменять файлы в момент загрузки игры, чтоб реализовать пункт 2)? Есть ли сомнения в удобстве использования?

Share this post


Link to post

Short link
Share on other sites

было бы не плохо!!! но, похоже не выполнимо(( бетл атлас идет общий одной ддс(( 

Edited by DraugDM

Share this post


Link to post

Short link
Share on other sites

Так вот именно, что мод при запуске танков:

  1. вытаскивает эту одну большую DDS из оригинальных файлов в клиенте,
  2. применяет изменения, которые просят сделать другие моды,
  3. и получает итоговую большую DDS, которую и отдает в качестве финальной клиенту.

 

Эра хранения полных DDS в файлах модов должна пройти в таком случае.

 

P. S.: можно запилить оптимизацию: запоминать последнюю сгенерированную DDS, и если команды на изменение поступили те же и исходник не изменился, то пропускать процесс генерации.

 

Share this post


Link to post

Short link
Share on other sites
1 час назад, SerVB сказал:

и получает итоговую большую DDS, которую и отдает в качестве финальной клиенту.

 

А эта DDS когда и как грузится клиентом?

5 часов назад, SerVB сказал:

например, пока что я не знаю, есть ли у модов возможность подменять файлы в момент загрузки игры, чтоб реализовать пункт 2

 

Делается перезапуск клиента игра. Что в сумме придает еще больше геморроя при реализации всего этого.

Share this post


Link to post

Short link
Share on other sites
55 minutes ago, StranikS_Scan said:

Делается перезапуск клиента игра. Что в сумме придает еще больше геморроя при реализации всего этого.

 

Перезапуск действительно очень не хотелось бы делать. Я бы даже сказал, что если делать, то без перезапуска)

 

55 minutes ago, StranikS_Scan said:

А эта DDS когда и как грузится клиентом?

 

Вот это как раз и открытый вопрос. Надо поисследовать.

 

Пока что я только смотрел на документ о пакетах модов, там есть вот это:

 

image.png.0768685f70fd97e8ca27ffd03669ef0b.png

 

image.png.b2a6f609a5268b32ce72d031c1d910f2.png

 

К сожалению, документ довольно скупо рассказывает, что представляет из себя получаемая файловая система. "Пакеты сначала добавляются и обрабатываются конфликты, а только потом запускается код модов" – полезная информация, но на самом деле не очень понятно, что имеется в виду под "добавлением" всех пакетов.

 

Какие варианты навскидку могут сработать, если оформлять мод как wotmod:

  1. Можно поставлять мод с фиктивными файлами атласов, например с пустыми. И при загрузке мода изменять свой wotmod файл, заменяя атласы на сгенерированные. Кажется рабочим, если клиент при "добавлении" пакета только запоминает ссылку на бинарные файлы, а подгружает файлы только по необходимости уже в процессе игры по запомненным ссылкам.
  2. Предыдущий вариант не сработает, если клиент заранее куда-нибудь копирует бинарное содержимое wotmod файлов и использует потом это скопированное содержимое. На самом деле, кажется, что такого не может быть, потому что клиент довольно большой и в оперативку не влезет, а на диск копировать было бы странно) Но клиент вполне может копировать какие-то определенные файлы – если атласы туда попадают, то печаль. Или например он может считать хэш от файлов, и если в процессе игры он поменялся, то игра вылетает – тоже кажется не очень реалистичным сценарием, потому что уж больно быстро загружается клиент, чтобы все хэши просчитать. Могут быть конечно и какие-то другие причины, почему первый вариант не сработает. В таком случае сходу варианты не придумываются; нужно будет смотреть на декомпилированный клиент (как всегда благодарствую) и пытаться понять, можно ли там как-то подвязаться к загрузке файлов и изменить уже загруженные файлы.

 

 

Edited by SerVB

Share this post


Link to post

Short link
Share on other sites
7 часов назад, SerVB сказал:

Вот это как раз и открытый вопрос. Надо поисследовать.

 

Это уже ответ на вопрос. Грузится нативно, еще до пайтона. Всё. Значит только через перезапуск клиента игры.

Share this post


Link to post

Short link
Share on other sites

Как-то менял атлас (с иконками) прямо будучи в ангаре: изменения "подхватились", след-но "читка" атласа происходит как минимум один раз при загрузке боя...

Edited by Kapany3uk
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

@Kapany3uk, спасибо, отличная новость! Идея просто взять и заменить файл мода с атласом мне в голову не приходила. Я попробовал это сделать в проводнике, но файл заблокирован клиентом и перезаписать его нельзя. Возможно, этого не будет происходить, если модифицировать файл прям из клиента. Надо будет проверить.

 

А Вы каким образом "меняли атлас"?

 

 

Share this post


Link to post

Short link
Share on other sites
2 часа назад, SerVB сказал:

А Вы каким образом "меняли атлас"?

обычным,с помощью ССатлас,иконок из TankIconMaker и кое каких своих,это уже ритуал ежепатчевый:biggrin:

Share this post


Link to post

Short link
Share on other sites
1 hour ago, Slava7572 said:

уже ритуал ежепатчевый

 

Не, тут вопрос скорее к @Kapany3uk: как получилось сменить атлас в ангаре? Даже если вручную какие-то действия были сделаны, все равно интересно

Share this post


Link to post

Short link
Share on other sites

Блокируются .wotmod пакеты которые уже смонтированные куда-то там. Файлы с res_mods прочитаны и разблочены. Думаю, если добраться до этого "куда-то там" — их так же можно перезаписывать. И всё что клиент перечитывает будет подтянуто заново.

У клиента есть 2 стадии работы battle и lobby(читай ангар). При загрузке боя, выгружается куча всего с lobby и после окончания боя многое выгружается загружая ангар. Между этими стадиями можно много чего подкидывать. Вот например допилили в xvm значки мастеров в дереве исследования, я не обновляя весь xvm закинул только res_mods\mods\xfw_packages\xvm_lobby где ангарные флешки и после боя появилось обновленное дерево с мастерами. Ну а всякие pyc файлы всегда закидую или обновляю без перезапусков делая просто новый импорт.

Та и иконмейкер вроде юзал как-то среди боя и в следующем бою всё как надо. Не помню точно, но удивился бы если бы не прокатило. Проблема только с .wotmod из-за эмуляции.

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Опасаюсь заумных слов ) Как-то бродя по дереву папок из клиентского питонапайтона натыкался на эти все залежи, но что-то другое искал и не заморачивался.

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites
15 часов назад, SerVB сказал:

как получилось сменить атлас в ангаре?

 

16 минут назад, BuSH сказал:

Проблема только с .wotmod

выкладываю/меняю/удаляю файлы атласа (dds + xml) в папке C:\Games\World_of_Tanks_RU\res_mods\1.10.0.0\gui\flash\atlases\ (никаким боком не .wotmod)

при отсутствии файлов атласа подхватываются дефолтные-клиентские, при наличии - пользовательские.

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites
2 минуты назад, Kapany3uk сказал:

подхватываются дефолтные-клиентские, при наличии - пользовательские.

ну вот!

25 минут назад, BuSH сказал:

удивился бы если бы не прокатило

 

Народ топит за wotmod'ы не понимая их сути. А в иконках, с переходом на атласы, в упаковке нет надобности. А вот раньше это значительно замедляло загрузку боя. На всяких калькуляторах, десяток секунд можно было выиграть и начать успевать в бой до старта.

Edited by BuSH
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites
19 часов назад, SerVB сказал:

А Вы каким образом "меняли атлас"?

17 часов назад, Slava7572 сказал:

обычным,с помощью ССатлас,иконок из TankIconMaker и кое каких своих,это уже ритуал ежепатчевый:biggrin:

именно так ))

 

готовые, сформированные атласы копирую в папку с игрой (res_mods\х.х.х.х\gui\flash\atlases\) - независимо запущен клиент или нет - при следующем бое все подхватывается.

Edited by Kapany3uk

Share this post


Link to post

Short link
Share on other sites
42 минуты назад, BuSH сказал:

раньше это значительно замедляло загрузку боя

т.е. пакеты быстрее читаются?

Share this post


Link to post

Short link
Share on other sites
12 минут назад, Slava7572 сказал:

т.е. пакеты быстрее читаются?

 

Обычно да.

 

20 часов назад, SerVB сказал:

Я попробовал это сделать в проводнике, но файл заблокирован клиентом и перезаписать его нельзя.

 

О не просто заблокирован, к нему идёт нативный доступ. Попытки влезть туда извне в винде будут приводить к крашам игры.

 

А чего не устраивает перезапуск клиента игры командой в пайтоне?

Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites
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 содержат по пару файлов, которые, некоторые из них, может быстрее и загрузятся, но без специального софта замеряющего миллисекунды не заметишь даже с хардом.

Share this post


Link to post

Short link
Share on other sites

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...