Страница 1 из 1

Единый Аккаунт

Добавлено: 15 сен 2015, 08:56
Gorlum
Те, кто внимательно следит за новостями СН, уже должны быть в курсе, что я сейчас очень активно занимаюсь созданием новой системы авторизации. Система авторизации - это та часть игры, которая обеспечивает регистрацию игроков, вход в игру и сброс пароля. Те, кто не в курсе, может прочесть что и зачем я делаю по ссылке: viewtopic.php?f=4&t=3107

Объём работы огромен. Я работаю над авторизацией уже месяц. Вот только небольшая выдержка из того, что я сделал: viewtopic.php?f=4&t=3108

Но виден свет в конце туннеля! И я надеюсь, что это не фары приближающейся электрички. В общем - в очень ближайшем времени (надеюсь, на этой или следующей неделе) после тщательного тестирования в игру будет добавлен Единый Аккаунт с поддержкой Единой МетаМатерии. Опять же - что это и зачем можно ознакомиться по первой ссылке в посте.

Однако есть определенная проблема. Некоторые игроки одновременно играют на Альфе и каком-то из других серверов - Бете, Гамме или Дельте - с тем же логином. Логин - сейчас это имя, которое игрок вводит при входе в игру и которое видно другим игрокам. На самом деле это неправильно. На самом деле по уму логин - то, что игрок вводит при входе в игру - должно быть отделено от имени игрока - того, что видно другим игрокам во Вселенной, статистике итд. Т.е. в общем случае логин и имя игрока могут быть разными.

Почему? Есть множество веских причин:
- Упрощение регистрации. Игроку достаточно будет ввести свой емейл и пароль (а в перспективе - только емейл. Пароль можно генерировать автоматически) - и вуаля! Более того - с введением внешней авторизации типа вк-шечки, фейсбучека итд, игроку ВООБЩЕ НИЧЕГО НЕ НАДО БУДЕТ ВВОДИТЬ!
- Безопасность. Игрок сможет входить в игру по своему емейлу, но при этом не светить его всем и каждому в игре;
- Упрощение входа в игру - игроку достаточно будет помнить только свой емейл и не вспоминать, под каким именем он именно регистрировался;
- итд итп.

Кроме всего вышеизложенного, разделение логина и имени игрока - это обязательное требование для Единого Аккаунта. При введении ЕА за основу будет взят список игроков на Альфе, который будет пополнен из списков игроков на остальных серверах. Но сейчас некоторые игроки играют одновременно на нескольких серверах под одним и тем же именем. Соответственно - могут возникнуть коллизии между логинами на разных серверах.

Поначалу я пытался решить эту проблему добавлением в игру нескольких параллельных систем логина - по имени игрока, по локальному аккаунту и по ЕА. И оно даже неплохо работало - например, такая система сейчас стоит на Блице, где проходит альфа-тестирование Режима Рубилова. Однако при попытке добавить в ЕА еще и ЕММ я столкнулся с проблемами синхронизации количества ММ между аккаунтами разных уровней. Манипулируя аккаунтами можно было в несколько раз увеличить количество потраченной ММ по сравнению с имеющейся! В принципе, проблема решаемая - я разработал алгоритм многоуровневого логгирования и синхронизации количества ММ между аккаунтами. И даже начал её писать. Но результат мне не понравился. Выходило слишком громоздко и слишком медленно. Вдобавок получалось слишком много мест, где что-то потенциально могло "пойти не так".

Поэтому я сел и задумался - а зачем вообще такие сложности? Коллизии между логинами возникают только однократно - при слиянии аккаунтов с разных серверов. Ради этого тратить кучу времени на написание и отладку сложной и громоздкой системы синхронизации ММ просто не имеет смысла! Достаточно добавить простейшую систему разрешения коллизий логинов, а сложные впоросы решать однократно в ручном режиме. Благо на не-Альфе не так уж и много активных аккаунтов, что бы это могло занять времени больше, чем написание и отладка синхронизации ММ (и это при учёте, что в ходе её эксплуатации не всплывут какие-то критические глюки, что вполне возможно с учётом сложности алгоритма).

Более того - у некоторых игроков вполне может возникнуть желание играть на нескольких серверах под ЕА, сведя разномастные аккаунты в один. И тут опять - либо городить сложную систему подключения локальных аккаунтов к ЕА, либо придумать что-то более простое.

В результате я решил ограничится простой системой слияния аккаунтов, которая одновременно разрешает коллизии между одинаковыми логинами на разных серверах. Её суть элементарна и очевидна:
- если при добавлении локального аккаунта его логин и пароль совпадают с имеющимся в ЕА - значит это тот же самый аккаунт;
- если при добавлении локального аккаунта совпадает логин, но отличается пароль - такой аккаунт не добавляется. Такой конфликт разрешается в ручном режиме.

Теперь почему эта новость так важна? Игрокам, которые играют или на Бете, или на Гамме, или на Дельте нужно сделать несколько простых действий:
- если игрок играет на более чем одном сервере - сделать на всех серверах одно и то же имя и пароль. Для этого на Бете, Гамме и Дельте смена имени игрока сделана бесплатной на время до введения ЕА;
- если игрок не играет на Альфе - нужно зарегистрироваться на Альфе с тем же именем и паролем, которые у игрока есть на других серверах.

Эти простые действия гарантируют, что после введения ЕА у игроков будет доступ к игре на всех серверах.

Напоминаю! При регистрации на Альфе НУЖНО ИСПОЛЬЗОВАТЬ РЕАЛЬНЫЙ ЕМЕЙЛ! Владельцем аккаунта считается владелец емейла, указанного при регистрации! Более того - на этот емейл отправляются системные уведомления и письма о сбросе пароля!

Так же КРАЙНЕ НЕ РЕКОМЕНДУЮ использовать емейлы от MAIL.RU. Это адреса, которые заканчиваются на
@mail.ru
@inbox.ru
@list.ru
@bk.ru
@mail.ua
По какой-то причине MAIL.RU блокирует все письма от СуперНовы. Я обязательно буду решать эту проблему в ближайшем будущем, но пока ситуация именно такая. Предлагаю использовать почтовые ящики на GMAIL.COM - за всё время с ним не было никаких проблем.

Теперь небольшое ЧаВо по ЕА и возможным проблемам.

Вопрос: Я играю на Бете/Гамме/Дельте под другим именем, чем на Альфе потому что не хочу светить своё настоящее имя. Что мне делать?
Ответ: Заведите второй аккаунт на Альфе с именем Беты/Гаммы/Дельты. На время до введения ЕА я буду толерантно к этому относится. Только не забудьте ПОСЛЕ ввода ЕА написать мне в личку, что бы я переключил ваши игровые аккаунты на настоящий логин.

Вопрос: Я сейчас тестирую Режим Рубилова на Блице. Мне тоже стоит проходить эту процедуру?
Ответ: Нет. После введение ЕА я планирую доделать РР и сделать там очередной вайп одновременно с подключением Блитца к системе ЕА. До этого - используйте свой текущий логин и пароль.

Вопрос: Моё имя с Беты/Гаммы/Дельты уже занято на другом сервере!
Ответ: Выберите другое имя, которое свободно на всех серверах. Я не буду отнимать имена у зарегестрированных игроков.

Вопрос: Я забыл свой пароль на Альфе/Бете/Гамме/Дельте!
Ответ: Воспользуйтесь сбросом пароля.

Вопрос: Я не могу воспользоваться сбросом пароля - мой почтовый ящик находится на одном из доменов MAIL.RU и почто от СН мне не приходит!
Ответ: Нужно поменять свой основной емейл в профиле ДО ВВОДА ЕА. Напишите мне ЕМЕЙЛ на адрес supernova.ws@gmail.com.. с вашего текущего почтового ящика. В письме нужно указать: имя Вселенной, в которой находится аккаунт; имя аккаунта; старый почтовый ящик; новый почтовый ящик.

Задать вопросы и обсудить новость можно в теме viewtopic.php?f=4&t=3112