Jump to content
Korean Random
SoprachevAK

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

Recommended Posts

Цитата

И вопрос сразу "gunPoint" это gunPoint или gunFire, а?

Ну раз почти совпадает с tracerStart, то наверное "gunPoint" это gunPoint

 

Прох3.jpg

Share this post


Link to post

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

tracerStart

 

В клиенте трассер от дульного тормоза строится gunFire, а не от опорной точки пушки gunPoint или gunPos

Edited by StranikS_Scan

Share this post


Link to post

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

И вопрос сразу "gunPoint" это gunPoint или gunFire, а?

Полагаю всё такие gunPoint
https://github.com/WOT-STAT/WOTMOD/blob/53d2189ba5ee8c8d442e8aaaf96b60e66c07e23d/WOTSTAT/res/scripts/client/gui/mods/wot_stat/logger/utils.py#L16

 

if player.vehicle and player.vehicle.isStarted and player.vehicle.appearance:
	return player.vehicle.appearance.compoundModel.node(TankPartNames.GUN).position
else:
	return player.getOwnVehiclePosition() + \
		player.vehicleTypeDescriptor.hull.turretPositions[0] + \
		player.vehicleTypeDescriptor.turret.gunPosition

 

Share this post


Link to post

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

Я вот что-то такое имел в виду

Левая верхняя - к-во выстрелов с попаданием по квадратам

Правая верхняя - к-во полученных попаданий по квадратам

Левая нижняя - разница между полученными и нанесёнными

Правая нижняя - карта

 На левой нижней как раз видно "квадраты смерти" (красные) и откуда безопаснее наносить урон (зелёные)

з.ы.: цифры могут быть неправильными, т.к. я вроде что-то лишний раз транспонировал, а переделывать ...

Прох2.jpg

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


 

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

image.thumb.png.a26fb2e488108e96bcdada63ed08a088.png

 

image.thumb.png.92b5187251a1c77274aaf01e3f71a1ba.png

@KPOT2338
Всё именно так. вот выстрел с координаты `gunPoint_x: -501.6194`. Если сгруппировать ещё по id, то можно вставлять прямо в URL и смотреть.
https://wotstat.info/session?shot=17074726357830000020080

Если я правильно понимаю, то за красную линию можно вжаться до центра танка, а пушка у шведов крепится к самому краю танка, вот он ей и выехал за пределы. Но ситуация любопытная
250474117_2024-03-0304_32_53.png.ade90a6a70dca7b085600e74839b068c.png

Edited by SoprachevAK

Share this post


Link to post

Short link
Share on other sites

Не люблю показывать недоделанные результаты, но раз уж начал, продолжу

Сегодня сделал немного, но добавил метрику эффективности, это функция, которая применяется к каждому выстрелу (а в последствии будет применяться внутри каждой клеточки тепловой краты)
Можно выбрать "своя" и туда вписывать выражение и границы
Некоторые интересные примеры:
- if(clientShotDispersion / gunDispersion < 5, -1, arrayMax(results. shotDamage) > 0) от 0 до 1. Карта вертух, где цветом выделены попавшие вертухи. Если поставить от 1 до 1, то будут только попавшие вертухи
length(arrayFilter(t -> t > 0, results.shotDamage)) от 2 до 5, арта нанесла сплешем урон нескольким игрокам
- arrayMax(results.shotDamage) / shellDamage карта урона ниже/выше среднего. Можно устанавливать границы от 0.75 до 1.25
- if(length(session.lastDmgPlace) < 5, -1, arrayMax(arraySlice(arrayReverse(session.lastDmgPlace), 5))), от 0 до X, выстрелы игроков, которые за прошлые 5 боёв были лучше чем ТОП X по урону

 

image.thumb.png.75ca3d914dbe2a2a7034de6353de9386.png

 

Результаты боя пока недоступны в этой метрике, надо подумать как их оптимизировать. Проблема в том, что результаты и выстрелы это разные и потенциально огромные таблицы, и просто тупо JOIN, возможно, плохая идея, надо пробовать, варианты есть. 


А ещё пока поставил по умолчанию первые 180 секунд боя. Потом оно будет сохраняться

Edited by SoprachevAK

Share this post


Link to post

Short link
Share on other sites

https://wotstat.info/session?nickname=Shadowbeast

Выстрелов "всего" меньше, чем выстрелов с видимым уроном

-----------------------------------------------------------------------------------

SELECT COUNT() FROM Event_OnShot
where  playerName = 'Shadowbeast'

Это даёт 2957

Edited by KPOT2338

Share this post


Link to post

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

https://wotstat.info/session?nickname=Shadowbeast

Выстрелов "всего" меньше, чем выстрелов с видимым уроном

Есть такое, особенность обрезания по версии. Исправлю при обновлении
Всего выстрелов берётся с версии 1.2, а попадания за все версии
Благодарю за находку 

Share this post


Link to post

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

Про средний относительно базового был не прав. Если int/int получается всё равно int, и надо явно приводить к Float64

Вот исправленный запрос

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

з.ы.: И такое ощущение, что количество учтённых событий за последние сутки удвоилось

номинал.jpg

Share this post


Link to post

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

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

з.ы.: И такое ощущение, что количество учтённых событий за последние сутки удвоилось

номинал.jpg

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


 

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

что количество учтённых событий за последние сутки удвоилось

Это так. Там мод добавили в модпак Jove, на удивление, я в этом вообще не замешан, они сами. 
Так что последние два дня экстренно исправляю все редкие ошибки. Сейчас уже 3к уникальных игроковimage.thumb.png.4e0e0a3f730f45cdb931ffb11e10e5ef.png
 

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

А можно добавить плашки с максимальными сериями побед и поражений?

----------------------------------------------------------------------------------------------------------------------------------

Не совпадает

 

не совпадает.jpg

Edited by KPOT2338

Share this post


Link to post

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

А можно добавить плашки с максимальными сериями побед и поражений?

Хорошая идея, добавлю

 

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

Не совпадает

А как вообще 39% получилось? 
Они должны различаться, но не так сильно 
График учитывает только выстрелы которые попали в круг, а процент с учётом улетевших за границы. Но 39 слишком мало

Share this post


Link to post

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

Хорошая идея, добавлю

 

А как вообще 39% получилось? 
Они должны различаться, но не так сильно 
График учитывает только выстрелы которые попали в круг, а процент с учётом улетевших за границы. Но 39 слишком мало

https://wotstat.info/session?mode=comp7

Режим "Натиск"

Share this post


Link to post

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

https://wotstat.info/session?mode=comp7

Режим "Натиск"

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

Share this post


Link to post

Short link
Share on other sites

Мод размножил себя по папкам..
И ошибку выдал:
2024-03-11 10:20:04.073: INFO: -1.0 [MOD_WOT_STAT]: import crypto
2024-03-11 10:20:04.073: INFO: [WOTSTAT] LOGGER ERROR. Call before init
2024-03-11 10:20:04.080: INFO: -1.0 [MOD_WOT_STAT]: version 1.2.0.8
2024-03-11 10:20:04.080: INFO: [WOTSTAT] LOGGER ERROR. Call before init
2024-03-11 10:20:04.080: INFO: ('[WOTSTAT LOGGER]: Init server logger to: %s', 'https://loki.wotstat.info/loki/api/v1/push')
 

Share this post


Link to post

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

Мод размножил себя по папкам..

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

 

3 часа назад, Scharfhobel сказал:

2024-03-11 10:20:04.073: INFO: -1.0 [MOD_WOT_STAT]: import crypto
2024-03-11 10:20:04.073: INFO: [WOTSTAT] LOGGER ERROR. Call before init
2024-03-11 10:20:04.080: INFO: -1.0 [MOD_WOT_STAT]: version 1.2.0.8
2024-03-11 10:20:04.080: INFO: [WOTSTAT] LOGGER ERROR. Call before init
2024-03-11 10:20:04.080: INFO: ('[WOTSTAT LOGGER]: Init server logger to: %s', 'https://loki.wotstat.info/loki/api/v1/push')

Это нормально. Я собираю свои логи на сервер, чтоб фиксить баги потом, но первые несколько логов печатаются ДО инициализации отправщика. Я конечно могу сделать там обходной путь, но как будто бы не надо, там при загрузке и так куча бесполезных логов

Share this post


Link to post

Short link
Share on other sites
11.03.2024 в 00:14, KPOT2338 сказал:

https://wotstat.info/session?mode=comp7

Режим "Натиск"

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

Наверное надо график показывать вот как на скрине, чтоб было меньше вопросов. Хотя вылеты за пределы это явно статистическая погрешность, которую надо отбрасывать. 

Может сделаю ещё одну секцию с расширенной аналитикой распределения снарядов, где можно будет смотреть только статистически точные данные (неподвижно, на дистанции) 

image.thumb.png.61063ffd84faf59767e91f06320147ac.png

Share this post


Link to post

Short link
Share on other sites
08.03.2024 в 12:37, KPOT2338 сказал:

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

з.ы.: И такое ощущение, что количество учтённых событий за последние сутки удвоилось

номинал.jpg

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

Share this post


Link to post

Short link
Share on other sites

Немного апдейтов

  • 18к уникальных пользователей, данные будут расти, а я буду сражаться с оптимизацией)
  • выкатил апдейт лейаута сайта, он теперь разделён на странични, чтоб А. слишком далеко не скроллить, Б. не отправлять миллион бесполезных запросов на сервер
  • перенёс сервер на другой хостинг, теперь могу ядра накручивать слайдером в любой момент времени. Пока поставил 4 ядра (было 2), посмотрим завтра в праймтайм, если что повышу, а то последние дни бд прям медленно работала

image.thumb.png.334269f0784e8d4cc06ada4602042a55.png

Ещё на сайте обновил график распределения снарядов: Добавил общий график, чтоб сравнивать себя со среднесерверным, и перестал обрезать по кругу сведения. Теперь большие циферки совпадают с графиком, но 100% графика не совпадают со 100% снарядов. В случайных боях примерно 10% улетают за пределы сведения. Скрин из натиска
 image.thumb.png.54d5bdb557c40d6794c1d5b4c6ee2add.png

 

10.03.2024 в 17:17, KPOT2338 сказал:

плашки с максимальными сериями побед и поражений

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

А ещё, как будто бы уже достаточно игроков, чтоб можно было искать пересечения игроков по боям, и вычислять мясо подставушников

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Заходишь на сайт. А по умолчанию графики не показывает. Нужно тыкать.

 

image.thumb.png.521a562c9d2a55b9a608677683f309ae.png

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

Немного апдейтов

 

Тебе нужно ввести разделение статистики по версии игры. Потому что в каждом новом патче игра по сути новая. И это кстати существенно снизить нагрузку на БД. Ибо все данные в кучу - это средний винегрет на Луне в вакууме.

 

И еще вдогонку - нужно от обобщенных статистик, которые один раз посмотрел и все на этом, переходить к динамическим статистикам. Нужно выводить и смотреть динамику, что и как происходит с игроками/танками/.... в разрезе боёв, дней, недель, месяцев, патчей игры. Это кстати имеет хоть какую-то практическую пользу. Например можно в клиенте игры в ангаре например выводить инфу, на каком танке например сегодня или сейчас лучше выйти в бой.

 

-----------------------------------------------

 

Ниже исправленная и отредактированная версия текстов для страницы, а то читать местами сложно и не сразу понятно.

 

Расширенное распределение урона

Выберите один вид урона
Учитываются выстрелы ББ, БП и КС снарядами по танкам с ХП, превышающим максимальный урон снаряда

 

Описание

График расширенного распределения строится исключительно для одного вида урона, поскольку в игре урон принимает только целочисленные значения. Округление урона до целых значений приводит к тому, что при одном и том же разбросе получаются разные графики относительного распределения при разных видах урона.

 

Например, для базового урона в 11 единиц граничные значения

  • 11 - 25% = 8.25 => 8 (минимальное значение в игре)
  • 11 + 25% = 13.75 => 14 (максимальное значение в игре)

 

Это значит, что урон может принять любое значение из дискретного ряда [8, 9, 10, 11, 12, 13, 14], или же [-3, -2, -1, 0, +1, +2, +3] относительно базового урона. Если выполнить нормализацию значений относительно базового урона, то получим ряд [-27%, -18%, -9%, 0%, +9%, +18%, +27%], в котором всего 4 промежуточных значения -18%, -9%, +9%, +18%, а крайние значения -27%, +27% выходят за рамки исходного разброса в 25%. Слияние такого дискретного ряда с графиком, построенным для другого вида урона, например 390, приведет к возникновению аномальных пиков и провалов, что естественно для дискретных случайных величин, но совершенно не характерно для величин с непрерывным распределением. Поэтому для каждого вида урона строится индивидуальный график распределения вероятностей.

 

Граничные значения

 

График распределения строится из центра, таким образом, чтобы базовый урон располагался строго по центру. По этой причине, на графике возможно только нечетное число значений урона в каждом из его столбиков. Из-за особенностей округления крайних значений иногда наблюдаются некратные интервалы. В таких случаях, крайний левый и крайний правый столбики графика могут содержать разное число значений урона. Если вы хотите оценить минимальный и максимальный урон, то выбирайте шаг графика равный 1.

 

Например, для базового урона в 390 единиц при 7 значениях на столбик

  • 390 - 25% => 293 (минимальное значение в игре)
  • 390 + 25% => 488 (максимальное значение в игре)

 

Следовательно, на графике, слева от базового урона будет 390-293=97 возможных значений, а справа 488-390=98, в сумме же будет всего 196 значений. Построить симметричный график относительного базового урона в этом случае невозможно, поэтому на графике центральный столбик будет состоять из 7 значений [387, 388, 389, 390, 391, 392, 393], крайний левый столбик из 3 значений [293, 294, 295], а крайний правый из 4 значений [485, 486, 487, 488].

 

Пример для урона в 360 единиц

  • 360 - 25% => 270
  • 360 + 25% => 450

 

Диапазон возможных значений урона [270; 450] и состоит из 181 значения, 90 из которых находится слева от среднего, а еще 90 справа от него, что позволяет построить зеркально симметричный график с шагом в 1 значение на каждый столбик. При распределении урона по столбикам с шагом в 5 значений, получается 17+1+17=35 центральных столбиков по 5 значений в каждом и два крайних столбика по 3 значения в каждом. В этом случае график сохраняет симметрию относительно центральной оси. При этом следует учитывать, что крайние столбики могут содержать меньше значений, чем остальные.

 

Расчет погрешности

Погрешность графика распределения зависит от:

  • базового урона BASE_DMG (разная величина ошибки округления)
  • количества выстрелов N с уроном (влияет на достоверность распределения)
  • числа уронов M на столбик (меняется форма дискретного графика)

 

Для определения погрешности искусственно генерируется серия из X «экспериментов» распределения при фиксированных значениях указанных выше параметров, и с их помощью определяется возможный диапазон отклонения значений для исходного графика.

 

Алгоритм расчета погрешности:

1.     Первоначально с помощью стандартного генератора псевдослучайных чисел math.random() в JavaScript генерируется N вещественных значений в диапазоне от 0 до 1, включительно.

2.     Сгенерированный ряд преобразуется в танковое распределение урона подобное Гауссовскому распределению с диапазоном значений от -1 до +1, включительно.

 

С помощью сплайн интерполяции по 100 значений к функции численно обратной функции распределения урона (CDF) для канонического нормального распределения с коэффициентами a = 0.02399886787b = -0.006796346129c = 0.4711312389 в формуле a*exp(-((x-b)/c)^2)

 

3.     Результирующий ряд умножается на 0.25, к каждому значению ряда прибавляется 1, и это все умножается на базовый урон BASE_DMG, после чего итоговые значения ряда округляются до ближайших целых чисел.

 

DMG = round((invCDF(RND) * 0.25 + 1) * BASE_DMG) - формула для расчета урона

 

4.     Значения, полученного ряда, размещаются по столбикам из расчета M значений урона на столбик.

5.     Алгоритм выше повторяется X раз, где X - количество «экспериментов», необходимых для расчета погрешности (параметр задается пользователем до начала расчета).

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

 

Доверительный интервал

 

Зная погрешность графика распределения урона, можно построить доверительный интервал с указанием уровня доверия P. Интервал отображается на графике в виде двух огибающих линий, обозначающих нижнюю и верхнюю границы доверительного интервала, между которыми находится P% «экспериментов» из X симуляций.

 

Карточки инфографики

Средний урон

Арифметическое среднее всех уронов в базе данных (сумма делить на количество)

 

Медианный урон

Значение урона, разделяющее все значения на две равные части. Если количество значений четное, медиана представляет собой среднее арифметическое двух центральных значений. Это означает, что половина значений урона меньше медианы, а другая половина — больше.

 

Выстрелов с уроном ниже среднего

Рассчитывается как процент выстрелов с уроном ниже среднего по сравнению с выстрелами с уроном выше среднего. Выстрелы с базовым уроном не учитываются. В идеальном распределении этот показатель должен составлять 50%.

 

 

 

 

Edited by StranikS_Scan
  • Upvote 2

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