import { ChevronDown, ChevronUp } from "lucide-react"; import { useState } from "react"; /** * Справка — разделы, раскрывающиеся по кнопке. Пока раздел один: «Рейтинг». * Текст соответствует backend/app/services/scoring.py и docs/rating/rating-system.md: * коэффициенты, пороги и примеры менять вместе с ними. */ export function HelpPage() { const [showRating, setShowRating] = useState(false); return (
{/* Название страницы уже в верхней панели — в теле только пояснение. */}

Здесь со временем появятся правила, подсказки и пояснения. Пока — о том, как считается рейтинг игроков.

{/* Кнопка-карточка раздела — как карточки списка партий. */} {showRating && ( <>

Рейтинг игроков

Рейтинг — оценка силы игрока относительно соперников (система Elo). Каждый начинает с 1500. Разница в 400 пунктов означает шансы 10 к 1 в пользу более сильного.

Считаются только завершённые партии, по порядку их игры. Правка или удаление старой партии пересчитывает и все последующие.

Партия раскладывается на пары игроков. В каждой паре фактический результат (выше — 1, поровну — 0.5, ниже — 0) сравнивается с ожидаемым по рейтингам до партии:

ожидание = 1 / (1 + 10^((R соперника − R игрока) / 400))
ΔR = K × G / (N − 1) × Σ M × (результат − ожидание)

где N — число игроков, сумма — по всем соперникам. Поэтому победа над сильным приносит больше, чем над слабым, а поражение от слабого отнимает больше. Выбывшие делят последнее место, но между собой не сравниваются: в этой партии все они проиграли, так что пара двух выбывших рейтинг не двигает.

От чего зависит изменение

Раунд окончания, цели и миры вводить необязательно: пропущенное считается обычным значением и множитель не меняет. «Последний выживший» ставится сам, когда все соперники выбыли, — отрыв по целям тогда максимальный. Лимит раундов — 8, с правилом группы «9 раундов» при 5–6 игроках — 9.

Единоличный победитель никогда не теряет рейтинг, а единоличное последнее место и выбывание никогда его не приносят. Невыбывшие, поделившие место, сравниваются между собой как в ничьей: слабый может получить рейтинг, сильный — потерять.

Примеры (опытные игроки)

Дуэль 1600 и 1400: победил сильный +3.8 / −3.8
Дуэль 1600 и 1400: победил слабый +12.2 / −12.2
Равные, победа по целям без деталей +8.0
Равные, победа по мирам без деталей +6.8
Разгром на 3-м раунде (цели 2:0, миры 8:2) +16.0
1-е место за столом на 5 равных +11.0
Новичок обыграл равного опытного +32 / −8

Рейтинг показывается целым числом, но считается без округления.

Один рейтинг на всё приложение

Рейтинг у игрока один — по всем его партиям во всех группах, поэтому он одинаковый в общем топе, в профиле и на странице группы. На странице группы по партиям этой группы считаются только игры, победы, винрейт и среднее место; рейтинг и статус «Новичок» там общие.

Попадание в топ

Чтобы попасть в ранжированный топ, нужно сыграть минимум 10 партий. До этого игрок показывается в блоке «Новички» — предварительно, без места в рейтинге.

Другие показатели

)}
); }