Тема: Новая система рангов
[i]Сразу извиняюсь, что предыдущую тему пришлось снести, но моя посодержательнее будет =).[/i]
Итак, торибаш резко нуждался в новых рангах и я взялся за это дело. Сразу скажу, что я был довольно жестко ограничен (Хампой) следущими условиями:
Система должна работать в реальном времени
Не создавать линейных SQL запоросов (что породило извращенный механизм сортировки рангов)
Ранг должен считать отдельно для каждого мода
За основу я решил брать (не мудрствуя лукаво) обычную систему Эло.
Если вкратце и без особой математики, то у каждого игрока есть заветная циферка -- его [u]рейтинг[/u]. Чем он больше -- тем пиздатей. Каждый раз, когда ты выигрываешь, твой рейтинг растёт (и чем больше рейтинг твоего опонента, тем сильнее растёт твой), каждый раз, когда ты проигрываешь, твой рейтинг падает. Когда ничья -- рейтинг почти не меняется.
Далее. Кроме рейтинга, есть [u]ранг[/u]. Чем [i]ниже [/i] твой ранг, тем круче. Грубо говоря, твой ранг соответствует числу торбишеров с рейтингом больше твоего (на самом деле, [i]это не совсем так[/i]). Глобальный ранг отображается под ником.
Теперь. Для каждого мода считается свой собственный ранг. То есть твоя крутость в дзюдо может компенсироваться полным неумением играть в айкидо. Ну или наоборот.
Окромя того есть [u]глобальные[/u] ранг и рейтинг. Они считаются параллельно с модовыми, но без учета мода (как смог, так сказал).
Всё это можно глянуть вот тут.
P.S.: Сейчас система отчаянно глючит (богом клянусь, это косяки Хампуса), так что вероятнее всего через пару дней ранги будут сброшены.
P.P.S.: Для особо любопытствующих, могу сообщить коэфициенты, которые я использовал для финальной формулы (спасибо корвину за мысли на сей счет):
ELO_DEVISOR = 400;
ELO_INITIAL = 1600;
ELO_K = 2;