Mixaill Posted January 9 Share Posted January 9 (edited) Всем привет Что случилось Для ускорения загрузки клиента в WoT 1.27.1 была реализована новая подсистема Persistent Data Cache, которая кэширует результат обработки XML файлов. В результате время загрузки клиента уменьшается вплоть до двух раз на ряде конфигураций ПК. Как это влияет на модификации Если модификация каким-либо образом меняет кэшируемые данные, то при наличии уже созданного кэша результат может быть не применен; После удаления модификации закэшированные данные могут негативно влиять на работу клиента. Как это работает Исходный код: https://github.com/izeberg/wot-src/tree/CT/sources/res/scripts/common/persistent_data_cache_common При первом запуске клиента после обновления игры или смены языка будет создан кэш, который включает в себя следующие компоненты: decal_map_config path_builder vehicles_list vehicles_cache tankmen_skills tankmen_nations arena_type personal_missions_season personal_missions_tile personal_missions_campaigns personal_missions_operations personal_missions customization_quests static_quests gui_items_params area_destructibles в дальнейшем список может быть расширен Кэш будет сохранен по пути <каталог клиента>/data.wgpdc. Для сброса кэша достаточно удалить этот файл. Что делать разработчикам модификаций Задача модификаций -- не изменять кэшируемые данные до того как кэш будет успешно записан на диск. Наиболее простой способ этого достичь -- не трогать кэшируемые данные до наступления состояния GameplayStateID.LOGIN Более сложный (и нерекомендуемый) путь -- дождаться пока DefaultPDCManager закончит сериализацию данных. Пример реализации подхода: https://gitlab.com/wot-public-mods/branded-tanks/-/commit/c9d7509f31c5db3e977130cd08ba5c32ed999559 Что делать разработчикам сборок модификаций Сборки модификаций (модпаки) могут очищать кэш в процессе установки и удаления. Для этого можно использовать библиотеку OpenWG.Utils (пример очистки кэша: https://gitlab.com/openwg/openwg.utils/-/commit/b4d220be9daccbe60d299dc9a914604bbcd9fd43 ) или же любым иным методом удалить файл кэша при его наличии. Edited January 9 by Mixaill 6 @ Quote Link to comment Short link Share on other sites More sharing options...
StranikS_Scan Posted January 10 Share Posted January 10 (edited) Это в новом патче будет? 09.01.2025 в 05:04, Mixaill сказал: Задача модификаций -- не изменять кэшируемые данные до того как кэш будет успешно записан на диск. Что имеется ввиду под словом "не изменять"? Перезапись значений переменных и констант игрового окружения? Или вообще не обращаться к этим данным до наступления события GameplayStateID.LOGIN? Edited January 10 by StranikS_Scan @ Quote Link to comment Short link Share on other sites More sharing options...
Kurzdor Posted January 10 Share Posted January 10 @StranikS_Scan если ты изменяешь кэши игры (к примеру - добавление стилей в Branded Tanks в vehicles.g_cache), не трогать их пока игра сама не создаст и сохранит его в кэшфайл. Иначе будут проблемы и вместо того чтобы использовать кэшированные данные и грузится за 10 секунд, игрок будет постоянно ждать полной прогрузки всех xml файлов. 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Mixaill Posted January 10 Author Share Posted January 10 (edited) 5 часов назад, StranikS_Scan сказал: Или вообще не обращаться к этим данным до наступления события GameplayStateID.LOGIN? Желательно да, иначе есть вероятность, что при наличии уже готового кэша твои данные не будут учитываться (их перетрет кэш) при отсутствии кэша твои данные попадут в кэш и после сноса мода все еще будут использоваться твои данные 5 часов назад, StranikS_Scan сказал: Это в новом патче будет? В 1.27.1 (со следующей недели релиз) Edited January 10 by Mixaill @ 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.