Jump to content
Korean Random
SoprachevAK

[WOT STAT] Мод для анализа подкруток

Recommended Posts

14 часов назад, KPOT2338 сказал:

Народ переживает, что что-то не работает

http://forum.tanki.su/index.php?/topic/2140364-подкрутка/page__st__49440__pid__56851469#entry56851469

Спасибо за наводку, как то думал что форум мёртв, а он жив)
Создал там тоже отдельную тему

Вообще должен работать, просадок по игрокам не наблюдал, скорее всего у него индивидуальная проблема

Share this post


Link to post

Short link
Share on other sites

Тут поступило предложение собирать инфу о том, что выпадает из контейнеров. Методом тыка я сходу попал в нужную функцию https://github.com/StranikS-Scan/WorldOfTanks-Decompiled/blob/a073ff6fab4bdb9a915560cb3c774e645ea9ed64/source/res/scripts/client/gui/shared/gui_items/processors/loot_boxes.py#L25 

И она в ctx имеет следующий результат для получения другого контейнера и 40к кредитов

{
  'bonus':
    [
      {
        'tokens':
        {
          'lootBox:310032': {
            'count': -1, 'expires': {}
          },
          'lootBox:310031': {
            'count': 1, 'expires': { 'at': 2524608000L }
          }
        },
        'credits': 40000
      }
    ],
  'extData': {}
}

Вот результат для кофе с выпечкой 

{
 'bonus': 
   [
     { 
       'tokens': { 'lootBox:310032': { 'count': -1, 'expires': {} } },
       'items': { 16123: 3 } 
     }
   ],
   'extData': {} 
}


Подскажите, как превратить 16123 в кофе с выпечкой? Скорее всего это опять какой нибудь дескриптор который надо как то кастануть к описанию
И ещё вопрос, как по id контейнера получить его описание?

Вроде бы можно через
itemsCache = dependency.descriptor(IItemsCache)
itemsCache.items.tokens.getLootBoxes()['lootBox:310031']['category']

Но насколько можно быть уверенным что они есть в кеше, и может у кого то уже есть готовая реализация)


___________

Ну судя по всему я нашел все интересующие меня ответы тут https://github.com/StranikS-Scan/WorldOfTanks-Decompiled/blob/a073ff6fab4bdb9a915560cb3c774e645ea9ed64/source/res/scripts/client/messenger/formatters/service_channel.py#L2691 и мне надо просто реализовать такую же парсер функцию, но не в стринги, а в свой словарь
Но хранить исходные результаты всё равно буду отдельно как JSON прямо в бд

Edited by SoprachevAK
  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Такс, готово.

В новой версии мода добавил сбор инфы о контейнерах. Постарался по максимуму распарсить что из них падает, но всё равно осталось несколько проигнорированных (dogtags, Enhancements, Tankmen, Entitlements). Всё кроме Tankmen я вообще хз что это такое. Всё основное распаршено 

Полный список, пока только SQL. В ближайшее время добавлю в инфографику
image.thumb.png.874effea65b2f6ee3b7ae033ad8f1d7f.png
Кроме того есть raw поле, куда сохраняется исходный json

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Добавил на сайт соответствующий раздел 
Выглядит немного перегруженным, но оно хорошо структурировано, а главное есть процентики всего, и даже нормализированные
https://wotstat.info/session/lootbox

 Шанс на Барона 0.039% это 2.5к коробок на танк, а открывать их можно только по 10, прикиньте как это запарно 

image.png

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Взялся значит я за 2к исключений в час на сервере, посмотреть что вообще и откуда
Оказалось, что проблема в моём баллистическом калькуляторе, который за скорость снаряда брал длину вектора скорости трассера, а оказывается, скорость трассера не постоянна по его траектории (кинетическая энергия переходит в потенциальную с повышением высоты -> скорость понижается), а снаряд в танках появляется на прямо из дула, а где то по траектории, у арты вот например обычно в середине траектории (там где он должен попасть в камеру игрока)

Получается, что мой баллистический калькулятор работал неправильно всё это время. Я его исправил, и пересчитал все 160 миллионов старых выстрелов
Жёлтое – до, красное – после. На арте.
image.thumb.png.d8799d7203db826bcf397b0ee5aa73b6.png

В общем то, сказ о потерянном времени) На обычных танках там вообще разницы нет. Зато теперь на душе спокойно и есть навык обновления 160 миллионов строк. 

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

А вот график плотности распределения выстрелов по кругу сведения, интересно откуда эта ступенчатость
image.thumb.png.987fcfe03375263527c118270ed1dc0f.png

  • Upvote 1

Share this post


Link to post

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

А вот график плотности распределения выстрелов по кругу сведения, интересно откуда эта ступенчатость
image.thumb.png.987fcfe03375263527c118270ed1dc0f.png

Это для tracerStart или gunPoint?

А то даже round((tracerStart_x-gunPoint_x) ступенчатая

Edited by KPOT2338

Share this post


Link to post

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

Это для tracerStart или gunPoint?

А то даже round((tracerStart_x-gunPoint_x) ступенчатая

это round(ballisticResultServer_r * 500) / 500 расстояние от центра круга сведения, до места где снаряд его пересёк

Share this post


Link to post

Short link
Share on other sites

а можно сделать вариант мода который бы не создавал папки с номером будущих патчей и свои копии в них?

Share this post


Link to post

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

а можно сделать вариант мода который бы не создавал папки с номером будущих патчей и свои копии в них?

А нужно?


Как минимум нужно убрать версию 2.0.0.0, это я конечно был слишком оптимистичным) Ещё можно на будущие версии не добавлять, а перезаписывать мод, чтоб не было кучи разных версий мода в папке 1.26.0.0

 

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

Share this post


Link to post

Short link
Share on other sites
8 minutes ago, SoprachevAK said:

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

Прям таки любой апдейт? Даже апдейт питона до 3 версии? :smile:

Share this post


Link to post

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

Прям таки любой апдейт? Даже апдейт питона до 3 версии? :smile:

Эх, если бы)

Но на самом деле, возможно ничего страшного не случится. 
Мод либо не запустится и ничего не хукнет, либо хукнет, но внутренний код будет обёрнут в try catch, что в любом случае не остановит логику игры. Циклов которые могут бесконечно зациклиться тоже нет. 

Share this post


Link to post

Short link
Share on other sites
13.04.2024 в 21:29, SoprachevAK сказал:

А вот график плотности распределения выстрелов по кругу сведения, интересно откуда эта ступенчатость
image.thumb.png.987fcfe03375263527c118270ed1dc0f.png

Оно и от угла зависит

(угол в градусах)

select     floor(ballisticResultServer_theta*180/pi()/5)*5 as ugol,
        floor(ballisticResultServer_r*100) as radius,
        count() 
from Event_OnShot
where battleMode = 'REGULAR'
  and ugol = 90
group by ugol,radius
Order by radius

разброс от угла.jpg

Edited by KPOT2338

Share this post


Link to post

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

Оно и от угла зависит

(угол в градусах)

select     floor(ballisticResultServer_theta*180/pi()/5)*5 as ugol,
        floor(ballisticResultServer_r*100) as radius,
        count() 
from Event_OnShot
where battleMode = 'REGULAR'
  and ugol = 90
group by ugol,radius
Order by radius

разброс от угла.jpg

На самом деле, сам факт того, что распределение угла неравномерно – это немного странно
Я как то ожидал другого
image.thumb.png.d1c24815c18e63a52f4f71d7ec919aaa.png
 

select floor(ballisticResultClient_theta * 10) / 10 as ugol,
       count()
from Event_OnShot
where battleMode = 'REGULAR'
group by ugol;

 

Окружность классическая тригонометрическая, 0 и 180 на горизонтали, 90 и -90 на вертикали.

Получается, что вверх/вниз летит на 30% реже. Думаю это где нибудь ошибка в расчетах, но странно конечно

Edited by SoprachevAK

Share this post


Link to post

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

На самом деле, сам факт того, что распределение угла неравномерно – это немного странно
Я как то ожидал другого
image.thumb.png.d1c24815c18e63a52f4f71d7ec919aaa.png
 


select floor(ballisticResultClient_theta * 10) / 10 as ugol,
       count()
from Event_OnShot
where battleMode = 'REGULAR'
group by ugol;

 

Окружность классическая тригонометрическая, 0 и 180 на горизонтали, 90 и -90 на вертикали.

Получается, что вверх/вниз летит на 30% реже. Думаю это где нибудь ошибка в расчетах, но странно конечно

Там зависимость и от угла и от расстояния

У меня особо нечем визуализировать, но то что кажется одинаковыми кривыми на первом рисунке, при нормировании глубину ям на +-90 

 

разброс%.jpg

разброс%норм.jpg

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

На самом деле, сам факт того, что распределение угла неравномерно – это немного странно
Я как то ожидал другого
Получается, что вверх/вниз летит на 30% реже. Думаю это где нибудь ошибка в расчетах, но странно конечно

Что вверх-вниз реже это понятно

В игре горизонтальная скорость встречается чаще, чем вертикальная

А значит ошибка по горизонтали (даже просто и-за пинга) встречается чаще

Больше интересно почему вверх летит больше, чем вниз

Share this post


Link to post

Short link
Share on other sites
14.04.2024 в 11:29, maxim23rus сказал:

а можно сделать вариант мода который бы не создавал папки с номером будущих патчей и свои копии в них?


Сделал возможность отключить это копирование в конфиге мода. Кроме того, папка 2.0.0.0 создаваться теперь не будет.
Если папка 2.0.0.0 уже существует, и в ней только мой мод, папка будет удалена.
Из папок на будущие версии будут удалятся старые неактуальные версии мода. Например у меня в папке 1.26.0.0 лежало пять разных версий wotstat'a, каждый себя когда то скопировал. Теперь старые удалятся и будет лежать только одна актуальная. Из текущей версии, к сожалению, удалять нельзя, тк они все используются процессом танков

По пути /mods/configs/wot_stat поместить текстовый файл config.cfg со следующим содержимым: 

{
	"disableAutoUpdate": true
}

 

Share this post


Link to post

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

В игре горизонтальная скорость встречается чаще, чем вертикальная

Да, действительно. Видимо всё таки стоит все эти вычисления проводить только для выстрелов с полным клиентским сведением, они автоматически неподвижны

 

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

Больше интересно почему вверх летит больше, чем вниз

Тоже построил подобные графики, если расстояние близкое к центру ещё можно списать на погрешность вычислений, то вот график для длины плеча > 0.2, и это уже не вычислительная погрешность
image.thumb.png.9e2aaf4ecd034b06120ed52af9a14507.png

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

select floor(ballisticResultClient_theta * 20) / 20 as ugol,
       count()
from Event_OnShot
where battleMode = 'REGULAR' and
      tankType != 'SPG' and
      ballisticResultClient_r > 0.2 and
      clientShotDispersion / gunDispersion between 0.99999 and 1.00001
group by ugol
order by ugol;

 

Share this post


Link to post

Short link
Share on other sites
21.04.2024 в 21:17, KPOT2338 сказал:

Там зависимость и от угла и от расстояния

У меня особо нечем визуализировать,

Вот, Экселем попробовал

Оси - угол(-180...+175гр, шаг 5 гр)/расстояние от центра (0...275%, шаг 1%)/количество 

 

graf1.jpg

graf4.jpg

graf5.jpg

Share this post


Link to post

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

Вот, Экселем попробовал

Оси - угол(-180...+175гр, шаг 5 гр)/расстояние от центра (0...275%, шаг 1%)/количество 

 

graf1.jpg

graf4.jpg

graf5.jpg

Выглядит красиво, но какие из этого сделать выводы, я не знаю
Но оно как минимум не очень симметрично

Share this post


Link to post

Short link
Share on other sites

@KPOT2338
Нашел как визуализировать ещё более наглядно

По всем выстрелам:
image.thumb.png.3d424cc848549810fb5391f8e6a4f18f.png



С полным сведением, дистанция 100+:
image.thumb.png.b9bd2dbea599234324e0dbe5509a625b.png





С полным сведением, дистанция 100+, нулевая скорость, пинг менее 30: 
image.thumb.png.1501483403e2fa885c9729c5161bb4a7.png



И тоже самое, но обрезанное снизу не по 0, а по минимальному значению, чтоб нагляднее были видны перепады:
image.thumb.png.0f049b6abc2125e7f2aef38b982e8a94.png




Тоже самое, но дистанция от центра между 0.4 и 1
 image.thumb.png.0f574cfcfb02233fa728328f8dbc15b2.png

Edited by SoprachevAK
  • Upvote 1

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...