Jump to content
Korean Random
BMDer

WN8 (рейтинг): формула и обсуждение

Recommended Posts

@StranikS_Scan @StranikS_Scan ну да, твинков кучу создают. По сути игроков, играющих лучше, больше не становится, а вот аккаунтов с хорошей статистикой становится больше. И игроки, которые хотят себе определённый цвет в шкале XVM, не могут этого добиться... Очень логично, что вн8 выводится средний за все бои, но он не отражает умения играть у старых игроков. Он показывать настоящую игру твинков, а это - глупо... Почему об этом никто не подумал? Почему бы не сделать так, чтобы у старых игроков вн8 поднимался быстрее?

Share this post


Link to post

Short link
Share on other sites
4 часа назад, Ваня-ня сказал:

@StranikS_Scan @StranikS_Scan ну да, твинков кучу создают. По сути игроков, играющих лучше, больше не становится, а вот аккаунтов с хорошей статистикой становится больше. И игроки, которые хотят себе определённый цвет в шкале XVM, не могут этого добиться... Очень логично, что вн8 выводится средний за все бои, но он не отражает умения играть у старых игроков. Он показывать настоящую игру твинков, а это - глупо... Почему об этом никто не подумал? Почему бы не сделать так, чтобы у старых игроков вн8 поднимался быстрее?

 

Потому что ни какой проблемы нет. Статистика игрока складывается из статистики на отдельных танках. У игроков много танков, но на каждом из них мало боев. Следовательно, если игрок с годами стал играть хорошо, то он берет конкретный танк - и легко вытягивает стату на нем (если на этом танке не 1000 боев). Чтобы таких игроков было видно в бою, достаточно в конфиге XVM изменить, чтобы он выводил в ушах и при загрузке боя не стату по акканту, а стату по танку, на котором игрок вышел в бой. И всё. Проблема решается. Все так делают. 

Share this post


Link to post

Short link
Share on other sites
21 час назад, Ваня-ня сказал:

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

А с чего ты взял, что никто не подумал? Может это только ты подумал, что никто не подумал? :smile:

XVM использует аккаунты только активных игроков, которые играли вроде за последние 3 месяца или около того. 

Share this post


Link to post

Short link
Share on other sites

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

Share this post


Link to post

Short link
Share on other sites
10.11.2019 в 22:27, man266 сказал:

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

 

Никогда. Формула рейтинга неизменна, она остается и останется такой же какой ее задумал его автор.

 

10.11.2019 в 22:27, man266 сказал:

Есть хоть какие-то подвижки в этом направлении?

 

Пользуйся рейтингом WG (WTR).

  • Upvote 1

Share this post


Link to post

Short link
Share on other sites

Парни,скажите пожалуйста,недавно был перерасчет с существенными изменениями ВН8?Не играл буквально тройку дней,помню у меня было 2064(округленно),а сейчас 2067:amazed:Я понимаю,что рейтинг постоянно корректируется,но так существенно значения меняются нечасто.

Share this post


Link to post

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

Подскажите, можно ли вывести потанковый WN8 в бою?

ХВМ считает вн8 для аккаунта, по технике есть специальный рейтинг: xTE

 

Share this post


Link to post

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

Подскажите, можно ли вывести потанковый WN8 в бою?

Потанковый WN8 по идее не существует. Хотя некоторые его считают по танкам, это уже не совсем WN8 по сути. Лучше xTE тогда уж.

Share this post


Link to post

Short link
Share on other sites
13.02.2018 в 15:14, sirmax сказал:

 

CREATE OR REPLACE FUNCTION wn8.wn8(p_player_id bigint)
RETURNS int
LANGUAGE plpgsql
AS $$
BEGIN
    RETURN (
        SELECT
            980 * r_dmg_c + 210 * r_dmg_c * r_frg_c + 155 * r_frg_c * r_spo_c + 75 * r_frg_c * r_def_c + 145 * LEAST(1.8, r_win_c) as wn8
        FROM (
            SELECT
                *,
                GREATEST(0, LEAST(r_dmg_c + 0.2, ((r_frg - 0.12) / (1 - 0.12)))) as r_frg_c,
                GREATEST(0, LEAST(r_dmg_c + 0.1, ((r_spo - 0.38) / (1 - 0.38)))) as r_spo_c,
                GREATEST(0, LEAST(r_dmg_c + 0.1, ((r_def - 0.10) / (1 - 0.10)))) as r_def_c
            FROM (
                SELECT
                    *,
                    GREATEST(0, (r_win - 0.71) / (1 - 0.71)) as r_win_c,
                    GREATEST(0, (r_dmg - 0.22) / (1 - 0.22)) as r_dmg_c
                FROM (
                    SELECT
                        (dmg / e_dmg) as r_dmg,
                        (frg / e_frg) as r_frg,
                        (spo / e_spo) as r_spo,
                        (def / e_def) as r_def,
                        (win / e_win) as r_win
                    FROM (
                        SELECT
                            sum(x.dmg) as dmg,
                            sum(x.frg) as frg,
                            sum(x.spo) as spo,
                            sum(x.def) as def,
                            sum(x.w * 100) as win,
                            sum(e.dmg * x.b) as e_dmg,
                            sum(e.frg * x.b) as e_frg,
                            sum(e.spo * x.b) as e_spo,
                            sum(e.def * x.b) as e_def,
                            sum(e.win * x.b) as e_win
                        FROM cur.players p
                        JOIN LATERAL jsonb_each(p.v) v ON TRUE
                        JOIN LATERAL jsonb_to_record(v.value) AS x(b float8, w float8, dmg float8, frg float8, spo float8, def float8) ON TRUE
                        JOIN wn8.exp e ON e.tank_id = (v.key)::int
                        WHERE player_id = p_player_id
                    ) totals
                ) rstat
            ) rstatc_1
        ) rstatc_2
    );
END;
$$;

 

Подскажите, пожалуйста: считаю по этой формуле для $account_id = '156204959', ожидаемые значения беру из Таблицы ожидаемых значений WN8, статистику аккаунта — из апи вг, получаю WN8 — 3560.2109460778, однако и в модах, и на modxvm.com вижу WN8 — 3501 (на 22.05.2022 01:00 МСК). Проверял и на других аккаунтах, всегда получаю отклонение в какую-то сторону. Смущает, что также пробовал воспользоваться табличными значениями с кктс и результат полностью совпал с отображаемым WN8 там же. В чем может быть дело?

 

    foreach($out->data as $account_id) {
        foreach($account_id as $section) {
            $tank_id = $section->tank_id;
            foreach($section as $tankStat) {
                $battles = $tankStat->battles;
                $dmg += $tankStat->damage_dealt;
                $frg += $tankStat->frags;
                $spo += $tankStat->spotted;
                $def += $tankStat->dropped_capture_points;
                $win += $tankStat->wins * 100;
                $e_dmg += $wn8exp[$tank_id]->expDamage*$battles;
                $e_frg += $wn8exp[$tank_id]->expFrag*$battles;
                $e_spo += $wn8exp[$tank_id]->expSpot*$battles;
                $e_def += $wn8exp[$tank_id]->expDef*$battles;
                $e_win += $wn8exp[$tank_id]->expWinRate*$battles;   
            }    
        }      
    }
    $r_dmg = $dmg / $e_dmg;
    $r_frg = $frg / $e_frg;
    $r_spo = $spo / $e_spo;
    $r_def = $def / $e_def;
    $r_win = $win / $e_win;
    
    $r_win_c = max(0, ($r_win - 0.71) / (1 - 0.71));
    $r_dmg_c = max(0, ($r_dmg - 0.22) / (1 - 0.22));
    $r_frg_c = max(0, min($r_dmg_c + 0.2, ($r_frg - 0.12) / (1-0.12)));
    $r_spo_c = max(0, min($r_dmg_c + 0.1, ($r_spo - 0.38) / (1-0.38)));
    $r_def_c = max(0, min($r_dmg_c + 0.1, ($r_def - 0.10) / (1-0.10)));
    
    $wn8 = 980 * $r_dmg_c + 210 * $r_dmg_c * $r_frg_c + 155 * $r_frg_c * $r_spo_c + 75 * $r_frg_c * $r_def_c + 145 * min(1.8, $r_win_c);

 

Edited by knrs

Share this post


Link to post

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

@ktulho, огромное спасибо! Но на аккаунте из примера нет ротных боев. Получается из апи отдаются разные данные?

Edited by knrs

Share this post


Link to post

Short link
Share on other sites

Дело точно не в этом, аккаунт зарегистрирован в 2021 году, а ротные бои убрали уже много лет назад.
 

5 минут назад, knrs сказал:

Получается из апи отдаются разные данные?

Есть только один способ узнать это. Сравните, что вы получаете из API c данными со страницы на сайте XVM. Может вы используете разные методы.

 

И ещё учтите, что статистика аккаунта https://stats.modxvm.com/ru/stats/players/156204959 обновлялась 03.02.2022 (это видно по графикам).


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

https://modxvm.com/ru/таблицы-ожидаемых-значений-wn8-по-датам/

Share this post


Link to post

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

Есть только один способ узнать это. Сравните, что вы получаете из API c данными со страницы на сайте XVM. Может вы используете разные методы.

Да, уже сравнил. Получаю статистику, идентичную с https://stats.modxvm.com/ru/stats/players/156204959. При этом вн8 различается.

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

И ещё учтите, что статистика аккаунта https://stats.modxvm.com/ru/stats/players/156204959 обновлялась 03.02.2022 (это видно по графикам).


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

https://modxvm.com/ru/таблицы-ожидаемых-значений-wn8-по-датам/

Вот это крайне интересно. Т.е. рассчитанное на момент обновления значение вн8 хранится в бд? Вижу, что в таблице за 03.02.2022 отсутствует танк с айди 38401 (T-44-100 I). Тут писали, что в этом случае стата отсутствующего танка не учитывается в расчете, так ли это? Потому что, исключая этот танк, получаю вн8 — 3233.344017449, что все равно не соответствует значению на сайте XVM.

Edited by knrs

Share this post


Link to post

Short link
Share on other sites

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

 

Правильно ли я понимаю что нужно подсчитать wn8 по каждому танку, и вывести среднее значение?

 

Заранее прошу прощение за столь глупый вопрос, если таким он является

Share this post


Link to post

Short link
Share on other sites

@miner98 в первом сообщении темы подробно расписано как считается WN8.

Share this post


Link to post

Short link
Share on other sites

@yepev  не до конца понятно с переменными 

expDmg      - ожидаемый нанесенный урон,
expSpot     - ожидаемое количество обнаруженных,
expFrag     - ожидаемое количество уничтоженных,
expDef      - ожидаемое количество очков защиты,
expWinRate  - ожидаемое количество побед.

 

я так понимаю нужно получить сумму по тем танкам которые есть в статистике аккаунта?

Share this post


Link to post

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

@yepev  не до конца понятно с переменными 

expDmg      - ожидаемый нанесенный урон,
expSpot     - ожидаемое количество обнаруженных,
expFrag     - ожидаемое количество уничтоженных,
expDef      - ожидаемое количество очков защиты,
expWinRate  - ожидаемое количество побед.

 

я так понимаю нужно получить сумму по тем танкам которые есть в статистике аккаунта?

 

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

Edited by StranikS_Scan

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