Ваш ник — это и есть ваша ссылка-приглашение
Пригласите кого-нибудь в opolyx — и вы оба получите по 200 XP, но только после того, как он доиграет настоящую партию, а не за регистрацию. Ссылка — это просто ваше имя в конце адреса.

Простыми словами
В лобби появилась карточка приглашения, прямо под ежедневными заданиями. В ней одна ссылка, она ваша, и генерировать ничего не нужно: ваша ссылка-приглашение — это адрес сайта с вашим собственным ником на конце. Скопируйте и отправьте тому, кого хотите видеть за столом, — на этом всё.
Когда человек придёт по вашей ссылке и доиграет свою первую настоящую партию, вы оба получите по 200 XP — 400 на двоих, сверх того, что принесла сама эта партия. Ограничения на число приглашённых нет, и получать ничего не надо: опыт просто зачисляется.
Единственное, что стоит знать, — это момент выплаты. За регистрацию друга не платят ничего: только за партию, доигранную до конца. Так задумано: аккаунт, который никогда не играет, никому не нужен, а награда за регистрацию — это приглашение плодить пустые аккаунты вместо того, чтобы приводить живых людей. Заодно ссылка продолжает работать долго после отправки, так что тот, кто сохранил её в апреле и сел играть в июне, всё равно засчитается.
Для тех, кому интересны детали
Кодом приглашения служит ник пригласившего, а не сгенерированная строка, и это осознанное решение, а не сокращение пути. Ссылка, собранная из имени, переживает и произнесение вслух, и набор по памяти, и вставку в чат, который её ломает, — а ещё она сразу говорит получателю, от кого пришла. Это работает без таблицы соответствий, потому что ники и так уникальны и уже ограничены буквами, цифрами и подчёркиванием — строгим подмножеством того, что сайт готов принять в этом месте, — так что имя разрешается напрямую и независимо от регистра.
Самое необычное здесь — сколько всего уже существовало. Таблицы появились в одной из первых миграций этого проекта, и сайт всё это время тихо записывал параметр приглашения в куку — куку, которую никто никогда не читал. То есть оба конца петли были на месте месяцами, а середины не было: ни способа увидеть свою ссылку, ни кода, который превратил бы эту куку в записанное приглашение. К моменту, когда середину написали, обе таблицы всё ещё были пустыми.
| Что записывается | Когда |
|---|---|
| Кто кого пригласил | При первом входе приглашённого |
| Начисленный обеим сторонам опыт | Когда он доиграет первую настоящую партию |
Начисление отказывает чаще, чем соглашается: пригласить самого себя нельзя, записаться на счёт одного из завсегдатаев, заполняющих пустые комнаты, нельзя, приглашение записывается один раз и не переписывается более поздней ссылкой, и ничего не платится, пока за этим нет настоящей партии. Выплата идемпотентна, так что дважды завершившаяся партия — повтор запроса, деплой посреди коммита — не заплатит дважды. Саму награду выдаёт функция, вызвать которую может только сервер.
