Jump to content
Korean Random
SoprachevAK

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

Recommended Posts

@SoprachevAK наверно решили не писать очевидное. Конечно, невозможно делать запросы с клиентского приложения не засветив в нём ключ.

Share this post


Link to post

Short link
Share on other sites
5 hours ago, StranikS_Scan said:

рейкаст

Так в физических движках называют поиск пересечения луча и любого коллайдера сцены. Тоже самое что и BigWorld.wg_collideDynamicStatic у ВГ.
 

5 hours ago, StranikS_Scan said:

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

А сколько у тебя было узлов чтоб это не сильно влияло на производительность? И как давно ты это делал, там же вроде бы относительно недавно вынесли физику на отельное ядро 

Share this post


Link to post

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

А сколько у тебя было узлов чтоб это не сильно влияло на производительность? И как давно ты это делал, там же вроде бы относительно недавно вынесли физику на отельное ядро 

 

Ну понятие "не сильно влияло" оно очень растяжимо. Например, на ноуте с i7 цикл с обстрелом сетки в 150-200 точек и баллистикой укладывается в 0,1-0,2 сек без видимых тормозов. На более слабой машине может тормозить. Кулькуляторы зафризят при такой сетке. Коллайды нативные, сами они быстрые, а вся обвязка и вызовы на пайтоне же, вот отсюда и тормоза. Так что ядра-физика это всё не влияет.

18 минут назад, yepev сказал:

Конечно, невозможно делать запросы с клиентского приложения не засветив в нём ключ.

 

Все верно. Все запросы с компа априори можно посмотреть какой-нибудь "монитор"-программой. Однако я не очень понимаю чего такой кипишь вокруг токена. В использовании чужого токена нет никакого смысла.

Edited by StranikS_Scan

Share this post


Link to post

Short link
Share on other sites

1698313171_.thumb.jpg.8b84319fe91fce48bb870072241d1671.jpg

На Промзоне маршрут и выстрелы отображаются неправильно. Предположительно со сдвигом на одну клетку вправо (или даже больше)

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

На других картах такой ошибки вроде нет

Share this post


Link to post

Short link
Share on other sites
14 hours ago, KPOT2338 said:

1698313171_.thumb.jpg.8b84319fe91fce48bb870072241d1671.jpg

На Промзоне маршрут и выстрелы отображаются неправильно. Предположительно со сдвигом на одну клетку вправо (или даже больше)

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

На других картах такой ошибки вроде нет

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

Share this post


Link to post

Short link
Share on other sites

А можно где-нибудь (в заголовке, в стартовом посту, добавить пост в конце) написать предупреждение, что сейчас нужно ставить восьмую версию?

А то на сайте подряд больше десятка моих реплеев, т.е. народ не в курсе

И я бы не узнал, если б не заметил, что семёрка не работает

 

Share this post


Link to post

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

А можно где-нибудь (в заголовке, в стартовом посту, добавить пост в конце) написать предупреждение, что сейчас нужно ставить восьмую версию?

А то на сайте подряд больше десятка моих реплеев, т.е. народ не в курсе

И я бы не узнал, если б не заметил, что семёрка не работает

 

Я 0.0.8 выкатил сегодня часов в 7 утра, и она в автоапдейте. То есть 0.0.7 сама обновится до 0.0.8 при входе в игру. И после перезапуска запустится уже 0.0.8

То есть на переход надо 2 запуска игры.

Так что потихоньку обновятся дня за 2-3

Edited by SoprachevAK

Share this post


Link to post

Short link
Share on other sites

Вопрос 1. 
Как лучше получать информацию о нанесённом уроне, чтоб была возможность связать её с выстрелом (как это сделано в моде просмотра попаданий выстрел-результат-урон)?
Я пока нашел ивент sessionProvider.shared.feedback.onPlayerFeedbackReceived в котором есть в том числе и событие нанесения урона выстрелом

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

Сейчас жизненный цикл события выстрела такой PlayerAvatar.shoot -> PlayerAvatar.showTracer -> (Vehicle.showDamageFromShot ИЛИ PlayerAvatar.explodeProjectile) -> ProjectileMover.killProjectile. Было бы круто знать информацию о нанесённом уроне на этапе showDamageFromShot

 

Вопрос 2.

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

Анализ реальной точки попадания это конечно круто, но в пограничных случаях (+-25% пробития) он может портить точку попадания. Мне кажется, что лучше анализировать ровно ту информацию, которую сервер отправляет игроку. Если рикошет нарисовался там, где должно было быть пробитие, то для игрока это негативные эмоции и «открутка». 

 

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

Edited by SoprachevAK

Share this post


Link to post

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

Кто как, но я в такое пока не готов поверить

1072543769_26.thumb.jpg.22b8e4a13cbe762a91c19784c3942544.jpg

Короче, в новой версии открою ишъю, и это к более опытным мододелам, человек играл с пингом 200, и клиентский прицел разбрасывался, а информация от сервера о выстреле ещё не приходит
То есть я в момент лкм если МОЖНО СТРЕЛЯТЬ запоминаю координаты прицела, и когда приходит выстрел, я создаю событие
Но почему то у него видимо это "можно стрелять" не работает, и сведение разбрасывается, а стрелять всё ещё можно, и я записываю сведение после того как оно разбросалось
Не знаю что с этим делать
Новая версия будет писать и клиентский и серверные прицелы и можно будет посмотреть оба

Share this post


Link to post

Short link
Share on other sites
On 9/27/2021 at 4:29 AM, SoprachevAK said:

Вопрос 1. 
Как лучше получать информацию о нанесённом уроне, чтоб была возможность связать её с выстрелом (как это сделано в моде просмотра попаданий выстрел-результат-урон)?
Я пока нашел ивент sessionProvider.shared.feedback.onPlayerFeedbackReceived в котором есть в том числе и событие нанесения урона выстрелом

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

Сейчас жизненный цикл события выстрела такой PlayerAvatar.shoot -> PlayerAvatar.showTracer -> (Vehicle.showDamageFromShot ИЛИ PlayerAvatar.explodeProjectile) -> ProjectileMover.killProjectile. Было бы круто знать информацию о нанесённом уроне на этапе showDamageFromShot

 

Вопрос 2.

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

Анализ реальной точки попадания это конечно круто, но в пограничных случаях (+-25% пробития) он может портить точку попадания. Мне кажется, что лучше анализировать ровно ту информацию, которую сервер отправляет игроку. Если рикошет нарисовался там, где должно было быть пробитие, то для игрока это негативные эмоции и «открутка». 

 

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

Есть ещё

def onVehicleHealthChanged(self, vehicleID, newHealth, attackerID, attackReasonID)

Туда приходят данные, когда танк видимый, в круге отрисовки и у него по какой-то причние(attackReasonID) изменилось количество ХП

список attack reason можно найти в константах

ATTACK_REASONS = (
 ATTACK_REASON.SHOT,                  #0
 ATTACK_REASON.FIRE,                  #1
 ATTACK_REASON.RAM,                   #2
 ATTACK_REASON.WORLD_COLLISION,       #3
 ATTACK_REASON.DEATH_ZONE,            #4
 ATTACK_REASON.DROWNING,              #5
 ATTACK_REASON.GAS_ATTACK,            #6
 ATTACK_REASON.OVERTURN,              #7
 ATTACK_REASON.MANUAL,                #8
 ATTACK_REASON.ARTILLERY_PROTECTION,  #9
 ATTACK_REASON.ARTILLERY_SECTOR,      #10
 ATTACK_REASON.BOMBERS,               #11
 ATTACK_REASON.RECOVERY,              #12
 ATTACK_REASON.ARTILLERY_EQ,          #13
 ATTACK_REASON.BOMBER_EQ,             #14
 ATTACK_REASON.MINEFIELD_EQ,          #15
 ATTACK_REASON.NONE,                  #16
 ATTACK_REASON.SPAWNED_BOT_EXPLOSION, #17
 ATTACK_REASON.BERSERKER,             #18
 ATTACK_REASON.SPAWNED_BOT_RAM,       #19
 ATTACK_REASON.SMOKE)                 #20

PS гг, помню когда эти ризоны заканчивались на 6 :D

  • Upvote 1

Share this post


Link to post

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

def onVehicleHealthChanged(self, vehicleID, newHealth, attackerID, attackReasonID)

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

 

1 час назад, MoD сказал:

PS гг, помню когда эти ризоны заканчивались на 6 :D

Игра развивается, обилки добавляются 

Share this post


Link to post

Short link
Share on other sites
Цитата

Мне кажется, что лучше анализировать ровно ту информацию, которую сервер отправляет игроку. Если рикошет нарисовался там, где должно было быть пробитие, то для игрока это негативные эмоции и «открутка». 

 

Так не получится. Сервер не присылают клиенту игры точку попадания. Сервер кодирует точку попадания, предварительно разбивая модель не кубики по 256 частей по каждой из трех осей. А затем высылает адрес кубики в пределах, которого была точка попадания, и высылает результат попадания. Клиент получает адрес кубика, получает результат и дальше рисует шлепок. В зависимости от результат он выбирает текстуру шлепка - пробитие, рикошет, непробитие.

 

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

 

Однако, если действительно идти по пути - берем только то, что прислал сервер. То, тогда надо оперировать не точкой попадания, а "кубиком" в пределах которого было то попадание. С этой точки зрения будет правильно поступать именно так. Ведь сервер присылает координаты кубика.

 

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

Edited by StranikS_Scan
  • Upvote 2

Share this post


Link to post

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

Однако, если действительно идти по пути - берем только то, что прислал сервер. То, тогда надо оперировать не точкой попадания, а "кубиком" в пределах которого было то попадание. С этой точки зрения будет правильно поступать именно так. Ведь сервер присылает координаты кубика.

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

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

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

Share this post


Link to post

Short link
Share on other sites

Так может вылеты за круг и объясняются дискретностью получаемых данных?57176305_.jpg.472d47ed97920dc3f307e673d810444d.jpg

Edited by KPOT2338

Share this post


Link to post

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

Так может вылеты за круг и объясняются дискретностью получаемых данных?57176305_.jpg.472d47ed97920dc3f307e673d810444d.jpg

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

Share this post


Link to post

Short link
Share on other sites

Пусть рассинхрон.

Но мне интересно насколько отклонился снаряд от точки прицеливания?

1305041559_.thumb.jpg.adbd166e43cfe8a8f06e0a68d3e02db3.jpg

Share this post


Link to post

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

Пусть рассинхрон.

Но мне интересно насколько отклонился снаряд от точки прицеливания?

1305041559_.thumb.jpg.adbd166e43cfe8a8f06e0a68d3e02db3.jpg

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

 

или, если прошаренный, можешь открыть консоль хрома, и в момент «выделения» конкретного выстрела в консоль печатается достаточно подробная инфа о нём. Тебя интересует markerPos (координата маркера в 3д) и analytics/worldPoint (координата в которой трассер пересёк полоскать маркера) 

Share this post


Link to post

Short link
Share on other sites

https://wotstat.soprachev.com/?battles=44385

{"shootId":481521,"battleId":44385,"shell":"_75mm_AP_HV_Mk1","shellType":"AP","baseDamage":0,"baseDispersionAngle":0.003599984591170225,"actualBaseDispersionAngle":0.0033533183333874375,"ping":0.035443362593650815,"isServer":true,"isAutoAim":true,"timeLeft":760.1018268058542,"gravity":6.278400421142578,"dispersionAngle":0.01822839304804802,"gunPos":{"x":334.980224609375,"y":86.43663024902344,"z":-6.800395965576172},"markerPos":{"x":333.53253173828125,"y":86.11581420898438,"z":15.738181114196777},"velocity":{"x":-407.3176574707031,"y":4.663791179656982,"z":-477.9691467285156},"tracerStartPos":{"x":335.3239440917969,"y":86.40988159179688,"z":-5.991321086883545},"dateTime":"2021-10-26T16:39:01.161724","analitics":{"shootDistance":22.587301617533434,"deflectionLength":864471350.5820576,"incidenceAngle":-90.76306277051344,"dispersionRadius":0.3974738199225665,"worldPoint":{"x":-4260987.480354331,"y":-343541827.81701577,"z":-5000478.687135363},"shootId":481521},"intersectPoint":{"x":-11512643.172120364,"y":864394687.063935},"relPolar":{"angle":-90.76306277051344,"length":864471350.5820576},"startDis":0.0033533183333874375,"arena":{"arenaTag":"spaces/101_dday","arenaName":"оверлорд","arenaId":9,"size":1000}} index.js:133:14

 

И чё с ними дальше делать?

Edited by KPOT2338

Share this post


Link to post

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

https://wotstat.soprachev.com/?battles=44385

{"shootId":481521,"battleId":44385,"shell":"_75mm_AP_HV_Mk1","shellType":"AP","baseDamage":0,"baseDispersionAngle":0.003599984591170225,"actualBaseDispersionAngle":0.0033533183333874375,"ping":0.035443362593650815,"isServer":true,"isAutoAim":true,"timeLeft":760.1018268058542,"gravity":6.278400421142578,"dispersionAngle":0.01822839304804802,"gunPos":{"x":334.980224609375,"y":86.43663024902344,"z":-6.800395965576172},"markerPos":{"x":333.53253173828125,"y":86.11581420898438,"z":15.738181114196777},"velocity":{"x":-407.3176574707031,"y":4.663791179656982,"z":-477.9691467285156},"tracerStartPos":{"x":335.3239440917969,"y":86.40988159179688,"z":-5.991321086883545},"dateTime":"2021-10-26T16:39:01.161724","analitics":{"shootDistance":22.587301617533434,"deflectionLength":864471350.5820576,"incidenceAngle":-90.76306277051344,"dispersionRadius":0.3974738199225665,"worldPoint":{"x":-4260987.480354331,"y":-343541827.81701577,"z":-5000478.687135363},"shootId":481521},"intersectPoint":{"x":-11512643.172120364,"y":864394687.063935},"relPolar":{"angle":-90.76306277051344,"length":864471350.5820576},"startDis":0.0033533183333874375,"arena":{"arenaTag":"spaces/101_dday","arenaName":"оверлорд","arenaId":9,"size":1000}} index.js:133:14

 

И чё с ними дальше делать?

Интересный бой, большинство выстрелов выглядит так

(Куб и сфера -- танк, пунктир -- куда целился, прямая -- трассёр, зелёная линия -- отрезок в плоскости круга сведения до точки пересечения с трассёром)

image.thumb.png.d300029a1954abef213a94463dea8136.png

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

 

Вот ещё его выстрелы

image.thumb.png.44200444d8d2fcef4255e5be18a3aa6a.png

image.thumb.png.58ddb6e973d6eb1e9334fd3e69ea0225.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.

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