Skip to forum content

You are not logged in. Please login or register.


forums.pvpgn.pro → [RU] Starcraft → Cистема оценки Ladder'a Elo

Pages 1

You must login or register to post a reply

RSS topic feed

Posts: 21

1

Topic: Cистема оценки Ladder'a Elo

Система очков, используемая Battle.net, является той же самой системой оценки Elo.
Вопрос как ее изменить ?

2

Re: Cистема оценки Ladder'a Elo

Редактированием исходного кода

/src/bnetd/ladder_calc.cpp wrote:

/*
* Compute probability of winning using the Elo system
*
* The formula is:
*
*  D = rating(player a) - rating(player b)
*
*                    1
*  Pwin(D) = ------------------
*                   -(D / 400)
*             1 + 10
*/
static double probability(unsigned int a, unsigned int b)
{
    double i, j;

    i = (((double)a) - ((double)b)) / 400.0;

    j = std::pow(10.0,-i);

    return (1.0 / (1.0+j));
}

...

Do not ask for support in PM.

3

Re: Cистема оценки Ladder'a Elo

как правильно переписать формулы так чтобы соответствовала этому:
Standing of your opponent  If your win  If you lose
      5 or + ranks above yours     250 pts 0 pts
      4 ranks above yours     230pts     -10 pts
      3 ranks above yours     210 pts     -20 pts
      2 ranks above yours     190 pts     -30 pts
      1 rank above yours     170 pts     -40 pts
      The same rank             150 pts      -50 pts
      1 rank below yours     130 pts     -10 pts
      2 ranks below yours     110 pts     -70 pts
      3 ranks below yours     90 pts     -80 pts
      4 ranks below yours     70 pts     -90 pts
      5 or + ranks below yours 50 pts -100 pts
        Note : A team which is 6  never loses any points

4

Re: Cистема оценки Ladder'a Elo

Для начала нужно разобраться что есть что.
pts, как я понял, рейтинг, который прибавляеся или вычитается от текущего у игрока.
А ранк что такое, и как понимать "A team which is 6"?

Do not ask for support in PM.

5 (edited by Major 01.12.2009 14:34)

Re: Cистема оценки Ladder'a Elo

хотелось бы вот что
http://i079.radikal.ru/0912/42/c37880a103e4.png

6

Re: Cистема оценки Ladder'a Elo

Тебе надо изменить значение delta в файле ladder_calc.cpp в строках 616 и 618 для виннера и лузера соответственно. Эта дельта и есть прибавляемый и вычитаемый рейтинг по окончании игры.
В sorted в этой же функции хранится сортированный массив рейтингов игроков. Те что выиграли, находятся в начале массива, и те кто проиграл - в конце.

Нужно написать две функции: одну для расчета ранков каждого плеера (по рейтингу), и одну для расчета дельты (по расчитаным ранкам).

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

Do not ask for support in PM.

7 (edited by Major 04.12.2009 13:20)

Re: Cистема оценки Ladder'a Elo

это понятно спс
а как сделать чтобы в профиле над win loss показывались очки ладдера ?
проверь и если что то не правильно отредактируй пожалуйста))
{
    unsigned int a,b;
    double       ab;
    int rdiffa, rdiffb;

    a = rating[0];
    b = rating[1];


/* Check player A rank */

    if(a < 850 && a > 0)
        rdiffa=1;
    if(a > 849 && a < 1000)
        rdiffa=2;
    else if(a > 999 && a < 1500)
        rdiffa=3;
    else if(a > 1499 && a < 2000)
        rdiffa=4;
    else if(a > 1999 && a < 2500)
        rdiffa=5;
    else if(a > 2499 && a < 3000)
        rdiffa=6;
    else if(a > 2999 && a < 4000)
        rdiffa=7;
    else if(a > 3999 && a < 5000)
        rdiffa=8;
    else if(a > 4999 && a < 6000)
        rdiffa=9;
    else if(a > 5999 && a < 7000)
        rdiffa=10;
    else if(a > 6999 && a < 8000)
        rdiffa=11;
    else if(a > 7999 && a < 9000)
        rdiffa=12;
    else if(a > 8999 && a < 10000)
        rdiffa=13;
    else if(a > 9999 && a < 11000)
        rdiffa=14;
    else if(a > 10999 && a < 12000)
        rdiffa=15;
    else if(a > 11999 && a < 13000)
        rdiffa=16;
    else if(a > 12999 && a < 15000)
        rdiffa=17;
    else if(a > 15000)
        rdiffa=18;
/* end of check player A rank */

/* Check player B rank */
    if(b < 850 && b > 0)
        rdiffb=1;
    if(b > 849 && b < 1000)
        rdiffb=2;
    else if(b > 999 && b < 1500)
        rdiffb=3;
    else if(b > 1499 && b < 2000)
        rdiffb=4;
    else if(b > 1999 && b < 2500)
        rdiffb=5;
    else if(b > 2499 && b < 3000)
        rdiffb=6;
    else if(b > 2999 && b < 4000)
        rdiffb=7;
    else if(b > 3999 && b < 5000)
        rdiffb=8;
    else if(b > 4999 && b < 6000)
        rdiffb=9;
    else if(b > 5999 && b < 7000)
        rdiffb=10;
    else if(b > 6999 && b < 8000)
        rdiffb=11;
    else if(b > 7999 && b < 9000)
        rdiffb=12;
    else if(b > 8999 && b < 10000)
        rdiffb=13;
    else if(b > 9999 && b < 11000)
        rdiffb=14;
    else if(b > 10999 && b < 12000)
        rdiffb=15;
    else if(b > 11999 && b < 13000)
        rdiffa=16;
    else if(b > 12999 && b < 15000)
        rdiffa=17;
    else if(b > 15000)
        rdiffb=18;
/* end of check player B rank */

   //ab = probability(a,b);
   //ab = (double)100;

   ab=(double)(rdiffb-rdiffa);
   return ab;
}

Code:

        if (prob<=-4)
            k=-100;
        else if (prob==-3)
            k=-75;
        else if (prob==-2)
            k=-50;
        else if (prob==-1)
            k=-25;
        else if (prob==0)
            k=0;
        else if (prob==1)
            k=25;
        else if (prob==2)
            k=50;
        else if (prob==3)
            k=75;
        else if (prob>=4)
            k=100;

Code:


if (results[curr]==game_result_win)
//          delta = fabs(k * (1.0 - prob)
            delta = (double)(100)+k;
        else
//          delta = -fabs(k * prob);
            delta = (double)((-50)+(-k/2));

8

Re: Cистема оценки Ladder'a Elo

Это ты отсюда взял smile
Да, это вполне подходит, но там другая система подсчета.

Do not ask for support in PM.

9 (edited by Major 05.12.2009 00:35)

Re: Cистема оценки Ladder'a Elo

угу, хотел уточнить корректно ли это будет работать ? и очки будут начисляться так ?
                      win                   loss
same lvl          +100                 -50           
1 more lvl        +125                 -33
2 more lvl        +150                 -25
3 more lvl        +175                 -17
4 more lvl        +200                 -0

1 less lvl          +87                   -67
2 less lvl          +75                   -75
3 less lvl          +50                   -87
4 less lvl          +37                   -100

10

Re: Cистема оценки Ladder'a Elo

Да. Только разброс по рейтингу, имхо, очень большой. 15к на любительском серваке навряд ли кто-то наберет.

Do not ask for support in PM.

11

Re: Cистема оценки Ladder'a Elo

это то да, спс огромное ))
а как сделать чтобы в профиле над win loss показывались очки ладдера ?

12

Re: Cистема оценки Ladder'a Elo

Хех, а покажи скрин на каком сервере в этом месте они показывается smile
И что такое очки ладдера?

Do not ask for support in PM.

13

Re: Cистема оценки Ladder'a Elo

тогда так )) можно ли их впихнуть в профиль и если можно, то как ?

14

Re: Cистема оценки Ladder'a Elo

Можно только в те поля, что существуют в клиенте игры в этом окошке профиля. Там около 4 полей: вин, лосс, посл. результат, и время посл. игры.
Смотри в файле src/client/bnstat.cpp

Do not ask for support in PM.

15

Re: Cистема оценки Ladder'a Elo

вместо дисконекта можно будет попробовать)))

16

Re: Cистема оценки Ladder'a Elo

else if (std::strcmp(clienttag,"SEXP")==0)
    {
        packet_append_string(packet,"Record\\SEXP\\0\\last game");
        packet_append_string(packet,"Record\\SEXP\\0\\last game result");
        packet_append_string(packet,"Record\\SEXP\\0\\wins");
        packet_append_string(packet,"Record\\SEXP\\0\\losses");
        packet_append_string(packet,"Record\\SEXP\\0\\disconnects");//можно же вместо disconnects ? и если да то ее заменить на          *packet_append_string(packet,"Record\\SEXP\\1\\rating");*//

        packet_append_string(packet,"Record\\SEXP\\0\\draws");
        count += 6;

17

Re: Cистема оценки Ladder'a Elo

Major, а на ик-кап зайти и посмотреть не?

18

Re: Cистема оценки Ladder'a Elo

неа))

19

Re: Cистема оценки Ladder'a Elo

Ну попробуй.
http://www.iccup.com/starcraft/sc_start.html

20

Re: Cистема оценки Ladder'a Elo

и что эта ссылка должна была тать ?

21

Re: Cистема оценки Ladder'a Elo

Зайди на серв и посмотри, как там сделано, перед тем, как спрашивать.

Posts: 21

Pages 1

You must login or register to post a reply

Who now at forum

Currently view post: 0 guests, 0 registered users

forums.pvpgn.pro → [RU] Starcraft → Cистема оценки Ladder'a Elo