Yourmind
@Yourmind
пишу говнокод в перерывах между едой и сериалами

Как организовать учетную запись клиента в игре?

Как обычно делают в таком случае?
Я пишу онлайн-игру шашки. Приложение клиент-серверное. Клиент авторизуется под своим логином/паролем (если нету, то сперва регистрируется), заходит и дальше может выбрать из списка игроков того, кого хочет, и тот свободен и предлагает поиграть, или ему предлагают.
Но есть проблема. А что если клиент под одной и той же записью вошел в одну учетную запись (к примеру с компа и с телефона). И тут ему предлагают поиграть. У нас на обоих клиентах должно по идее одно и то же отображаться? Ведь в списке игроков он числится только один раз? Типа запоминаем список хостов и портов этого клиента, и потом все сообщения для него кидаем на эти хосты?
Или лучше просто не разрешать входить под одной учетной записью больше, чем с одного клиента? (Вообще предполагается сделать клиентов только как мобильное под айос).
  • Вопрос задан
  • 113 просмотров
Решения вопроса 1
dollar
@dollar
Делай добро и бросай его в воду.
У нас на обоих клиентах должно по идее одно и то же отображаться?

Вовсе не обязательно. Всё зависит от того, что вы хотите и как устроен ваш сервер. Можно не позволять так делать, либо можно разрешить двум разным людям (устройствам) входить под одним и тем же логин\паролем, но выступать как два разных человека (хотя никнейм будет одинаковый). Как сделаете, так и будет у вас. А сделать можно, что душе угодно.

По уму нужно делать так, чтобы при заходе с другого устройства в первом выкидывало. Вряд ли игрок будет играть с двух устройств одновременно. Обычно в играх именно так устроена учётная запись. Но в теории можно и разрешить одновременную игру аналогично тому, как устроены нормальные мессенджеры.

В любом случае вам нужно освоить понятия (игровая) сессия. Потому что она привязывается к устройству. Обычно, в момент авторизации по логину\паролю устройству выдаётся некий ключ (токен), и далее доступ осуществляется по нему. Для пущей надежности можно нумеровать пакеты, тогда сессию вообще не получится перенести на другое устройство, но это уже тонкости безопасности, в простом варианте это совсем не обязательно.

Далее, когда у вас будут нормальные сессии, вы уже сможете вертеть ими, как посчитаете нужным. К примеру, можете запрограммировать лимит в 3 одновременные сессии, либо завершать сессию через какое-то время неактивности в случае наличия двух, либо просто запретить играть самому с собой и т.д. и т.п.

В общем, ответ: 1) сделайте сессии 2) кикайте из старой сессии при создании новой.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы