Приветствуем вас на форуме проекта WoW Circle. Если вы читаете это, значит не зарегистрировались у нас. Для того, чтобы получить доступ к расширенным возможностям нашего форума нажмите сюда и пройди регистрацию, которая не займет у вас много времени. После регистрации будут доступны новые, более расширенные, возможности.
[BACKPORT] aux-addon

Упомянутые в теме пользователи:

Показано с 1 по 12 из 18

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #6
    Почетный флудер Аватар для Artur91425
    Регистрация
    25.10.2012
    Адрес
    Россия
    Сообщений
    2,772
    Поблагодарил(а)
    339
    Получено благодарностей: 558 (сообщений: 391).
    Репутация: 1047
    Обновил аддон до версии 2.1.7-r4. Ссылка в первом посте обновлена.

    Исправление кэширования файлов! Довольно серьезное исправление, которое улучшит производительность.

    Для понимания требуется немного ввести в курс дела по функционалу аддона "под капотом".
    После загрузки аддона (входа в игровой мир), аддон запускает цикл по всем предметам в игре (от 1 до 40000) и начинает записывать в свой кэш все эти 40000 предметов в игре. Эти данные необходимы, чтобы в аддоне работал функционал автозаполнения и предложения вариантов в момент ввода названия предмета. Это разовая процедура. Как только кэш аддона заполнится, при каждом входе в игру будет просто осуществляться проверка полноты заполнения кэша.
    Небольшое дополнение:
    аддон записывает информацию о предметах в две таблицы:
    1. aux.account.items - таблица со всеми предметами в игре.
    2. aux.account.unused_item_ids - таблица со всеми неиспользуемыми ID предметов.


    К сожалению, в WOTLK используется "старая" система кэширования. Сервер не возвращает никакой информации для какого предмета получены данные и, самое важное, в какой момент времени они были получены. В более поздних версиях добавили специальное событие "GET_ITEM_INFO_RECEIVED" c этой информацией.

    В версии 2.1.7-r3 и ранее кэширование файлов работало только частично. Предметы, которые уже были в кеше игры добавлялись в кэш аддона, а которых не было в кэше игры соответственно не добавлялись и не было никакого функционала по запросу информации о некэшированном предмете у сервера (точнее был функционал, но он основан на информации от события "GET_ITEM_INFO_RECEIVED", которого в WOTLK просто не существует, соответственно этот код не работал). Это приводило к следующей проблеме:
    Например у вас в кэше клиента содержится информация о 10000 предметах из 40000. При входе в игру аддон записывает в кэш информацию об этих 10000 предметах в таблицу aux.account.items
    Остается еще 30000 предметов. Как я писал выше, функционал по запросу информации о некэшированном предмета у сервера не работал, соответственно таблица aux.account.unused_item_ids вообще не заполнялась.
    Поэтому при каждом заходе в игру аддон пытался получить информацию о всех необработанных ID (их оставалось 30000)!

    К слову, скорость обработки составляет всего 2-3 ID в секунду. Это необходимо для того, чтобы сервер успевал ответить на запрос и аддон обработал полученную информацию. Вот и считайте, сколько времени при каждом входе в игру аддон в холостую "пыхтел".

    Мои изменения, связанные с бекпортом или локализацией:
    • увеличен порог файлов кэширования с 40000 до 55000 (иными словами, добавил в кэширование предметы WOTLK). Взял с запасом в 1-2к так как точно не знаю какой ItemID в WOTLK последний.
    • исправлен функционал запроса у сервера информации по некэшированным в файлах игры предметам.


    Как я писал выше, так как в WOTLK используется "старая" система кэширования и сервер не возвращает никакой информации для какого предмета получены данные и в какой момент времени они были получены это пораждает некоторую проблему:
    Если после отправки запроса серверу и по прошествии времени ожидания (~250 мс) информация о предмете по-прежнему недоступна - этот ID записывается в таблицу aux.account.unused_item_ids.
    Но бывают случаи (очень редко), когда сервер просто не успел ответить. Таким образом часть валидных ID записывает в неиспользуемые и у аддона информации по этим предметам нет.

    Решением такой проблемы является банальное увеличение времени ожидания. Я его не увеличивал специально так как малейшее его увеличение резко и на много увеличит суммарное время выполнения цикла по всем 55000 предметам. Когда я это дело отлаживал, я засек время заполнения кэша аддона. При самом худшем варианте, кэш аддона полностью пустой (удален файл "aux-addon.lua" из папки WTF) и кэш игры полностью пустой (перед запуском игры удалена папка Cache) время заполнения составило 2,5 часа! При этом количество незаписанных предметов достигало примерно 1-2к (из ~50к).
    В дальнейшем я попробую исправить эту проблему вычислив методом "тыка" оптимальное время ожидания.

    Пока могу предложить 2 варианта по корректному заполнению кэша:
    [1 вариант]
    1. подождать ~3 часа, пока завершится первичное заполнение
    2. ввести в чат команду для очистки таблицы aux.account.unused_item_ids
    Код:
    /run aux.account.unused_item_ids = {}
    3. закрыть игру
    4. запустить игру и подождать завершения вторичного заполнения (оно в разы быстрее. Примерно час, может меньше. Со вторичного заполнения все предметы будут корректно заполнены.).

    [2 вариант]
    1. Скачать уже заполненный кэш
    2. переименовать файл в "aux-addon.lua"
    3. поместить в папку
    Код:
    <ДИРЕКТОРИЯ_ИГРЫ>\WTF\Account\<НАИМЕНОВАНИЕ_АККАУНТА>\SavedVariables

    Либо вы можете так не заморачиваться и ограничиться первичным заполнением, уверен, вы маловероятно, что заметите отсутствие какого-либо предмета в кэше.

  2. 2 пользователей сказали cпасибо Artur91425 за это полезное сообщение:

    Musly (04.08.2021),Star Wars (26.02.2023)

Похожие темы

  1. [BACKPORT] KillShot
    от Artur91425 в разделе Аддоны
    Ответов: 14
    Последнее сообщение: 14.03.2024, 00:08
  2. Dbm backport
    от Zikiprundoxx в разделе Аддоны
    Ответов: 1
    Последнее сообщение: 25.05.2021, 22:39
  3. [BACKPORT] ChatBar 8.3.0
    от Artur91425 в разделе Аддоны
    Ответов: 2
    Последнее сообщение: 14.05.2020, 23:18
  4. Pvp addon
    от Lolprogladzx в разделе Аддоны
    Ответов: 3
    Последнее сообщение: 14.12.2013, 03:00
  5. addon
    от Spikee в разделе Архив
    Ответов: 2
    Последнее сообщение: 22.08.2013, 12:07

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •