Первое.
На NoxWorld не используется система XWIS с поддержкой Westwood Online. Это ставит одну из двух проблем: 1) необходимо установить и настроить сервер WOL (и систему рейтинга Ladder), что как мне известно изначально не предполагалось, но возможность есть; 2) подстроить текущий локально-сетевой сервер для понимания WOL-овского Ladder-а, что пока никто не умеет.
Так же возможное решения задачи начисления рейтинга - дополнительная надстройка на текущий сервер, как, например, авторизция. Её и рассмотрю.
Второе.
Задача: Составить алгоритм системы рейтинга участников игр на сервере NoxWorld.
Дано:
- Рейтинг участников определяется конкретным числом, поставленным в отношение соответствия зарегестрированному участнику по некоторому закону.
- Самый высокий рейтинг определяется максимальмым числом, "прикрепленным" к какому-либо участнику.
- Самый низкий рейтинг определяется "нулем".
Требования:
1. Каждый зарегистрированный на сервере пользователь должен иметь параметр (число) рейтинга.
2. Участник, выигрывающий все (большинство) сражений (карт), должен иметь максимальный рейтинг.
3. Участник, ни разу не игравший, должен иметь минимальный рейтинг.
4. Рейтинг участника должен изменяться в соотвевии с:
а) силой игрока (чатота побед);
б) активностью игрока (частота участия в играх на сервере).
5. Изменение рейтинга должно зависеть от текущего значения рейтинга участника.
Я предлагаю рассчитывать рейтинг как-то так.
Исходные данные:
- список всех зарегистрированных (на рейтинг) участников;
- список участников текущей игры, упорядоченный по результату по возрастанию.
Метод решениия:
цикл <по списку всех зарегистированных участников>
| рейтинг участника установить в "нуль"
кцикл
цикл <пока сервер работает>
| цикл <по каждой новой игре>
| | цикл <по списку всех зарегистированных участников>
| | | рейтинг участника уменьшить на "единицу"
| | кцикл
| | если <есть результат игры> то
| | | цикл <по списку участников игры>
| | | | рейтинг участника увеличить на "единицу" "+" номер в списке
| | | кцикл
| | кесли
| кцикл
кцикл
Части начисления и вычета рейтинга нетрудно изменить, например на любые функции учитывающие пинг, класс и т.д.
Третье.
До внедрения каких-либо сложных систем, попробуйте посчитать и хотя бы в течении пары месяцев поддерживать "ручной" Ladder (например, в виде списков участников игр в которых участвуете). Лучше нескольким участникам создать по теме и каждому выписывать свои изменения рейтинга. Будут хорошо видны все достоинства и недостатки различных вариантов реализации, и, в итоге, станет понятно нужен ли рейтинг вообще (продержаться такие темы в топе или нет).