Как выбирается провайдер
Причины, которые решают, какой провайдер обработает заходящего игрока, и роль имён хостов.
Для каждого входа собираются причины, по которым его должен обработать тот или иной провайдер, и побеждает самая сильная. Identica выбирает провайдера один раз, пока игрок подключается, и сохраняет выбор на весь вход.
Порядок причин
От самой сильной к самой слабой:
- Ожидающая миграция. Игрок подтвердил переход к другому провайдеру, поэтому настраивается новый провайдер. См. Переход между провайдерами.
- Аккаунт подтверждённого входа. Провайдер доказал, что клиент владеет своей идентичностью, например провайдер Premium после онлайн-входа, и эта идентичность уже принадлежит аккаунту. Существующий аккаунт сохраняет своего провайдера, поэтому имя хоста никогда не переносит аккаунт.
- Имя хоста. Игрок зашёл через одно из имён хостов провайдера. Вход через имя хоста — осознанный выбор.
- Подтверждённый вход без аккаунта. Провайдер доказал идентичность клиента, но аккаунта с ней ещё нет. Игрок регистрируется у этого провайдера, если имя хоста не выбрало другого.
- Выбор игрока. Игрок выбрал провайдера, когда его спросили. Выбор сохраняется, если игрок переподключится до конца регистрации.
- Совпадение ника. Аккаунт с ником игрока использует этого провайдера. Один только ник ничего не доказывает о клиенте.
- Обнаружение. Провайдер узнаёт ник, но без доказательства.
При равных по силе причинах побеждает провайдер с большим priority в providers/providers.yml. Победить могут только провайдеры, которые доступны этому входу: имя хоста провайдера, которого сценарий не предлагает, не учитывается, а провайдер, у которого вход игрока не удался, исключается до конца входа.
На практике
- Новый игрок, который заходит через имя хоста провайдера, регистрируется у этого провайдера. Если
choiceрегистрации —PROMPTED, игроку не предлагают выбрать провайдера, когда провайдер имени хоста есть среди предложенных; выбирать придётся только среди его способов, если их несколько. - Игрок, у подтверждённого входа которого уже есть аккаунт, сохраняет провайдера этого аккаунта, через какое бы имя хоста он ни зашёл. Аккаунт Premium остаётся у провайдера Premium и через имя хоста провайдера Credential.
- У нового игрока имя хоста побеждает подтверждённый вход без аккаунта. Владелец лицензионного аккаунта, который заходит через имя хоста провайдера Credential в сети, где
choiceрегистрации —AUTOMATIC, и у которого запрашивают лицензионный вход, потому что ник лицензионный, всё равно регистрируется у провайдера Credential, и при следующих входах у него запрашивают пароль Credential. Через имя хоста провайдера Premium тот же игрок регистрируется у провайдера Premium. - Если ник
Steveзанят аккаунтом Credential, настоящий владелец лицензионного аккаунтаSteve, который заходит через имя хоста провайдера Premium, проходит лицензионный вход и попадает в свой собственный аккаунт Premium или регистрирует его. Без такого входа за провайдера говорит только совпадение ника, поэтому у игрока запрашивают пароль Credential. Что происходит с ником, решают правила для ников.
Имена хостов
entrypoints провайдера перечисляют имена хостов, которые выбирают его:
providers:
- id: "premium"
entrypoints:
- "premium.example.com"
- id: "credential"
entrypoints:
- "credential.example.com"Запись без порта подходит для имени хоста на любом порту, host:port — только для этого порта. Если одно имя хоста указано у нескольких провайдеров, его получает провайдер с большим priority.
Имя хоста только выбирает провайдера. Оно никогда не направляет игрока на сервер — для этого есть forced hosts прокси и forcedHosts маршрутизации. И оно никогда не снимает защиту ника, которую даёт сам провайдер: Premium по-прежнему требует свой вход для лицензионного ника или аккаунта Premium, через какое бы имя хоста ни зашёл игрок.
Все настройки провайдеров описаны в providers/providers.yml.
