2017-01-23 11 views
0

Я пытаюсь создать простую игру, в которой комнаты создаются для игровых сессий и уничтожаются после окончания игры. Я хотел бы, чтобы пользователи присоединились к этой комнате, чтобы играть в игру, просто введя ник.Свободное создание пользователя для временного игрового зала (без учетной записи, без пароля)

Должен ли я использовать учетные записи метеоритов или есть более простой способ сделать это, поскольку мне не нужны никакие проверки подлинности или пароль.

Я собираюсь создать только коллекцию игроков и вставить псевдоним, когда они нажимают, чтобы присоединиться к комнате, но я не знаю, как я могу отслеживать, кто я, или отслеживать их, если они потеряют соединение и должны воссоединиться.

Но если бы я должен был использовать учетные записи, я не знаю, как настроить его так, чтобы случайный/свободный пользователь может легко создавать и, вероятно, уничтожен после сессий игры без какого-либо пароля или адреса электронной почты и т.д.

Спасибо заранее!

+0

Вам нужно сохранить сеанс, если пользователи обновили страницу? – Khang

+0

@Khang Да, мне нужно, чтобы я обнаружил, что иногда из-за проблем с подключением и т. Д. Пользователям может потребоваться обновить страницу. –

+1

Я не думаю, что учетная запись пользователя необходима. У меня будет коллекция 'Players', создайте новый документ для каждого нового подключенного браузера и сохраните' _id' этого игрока в браузере 'localStorage' – Khang

ответ

1

Вы можете просто использовать коллекцию, но, как вы говорите, вам все равно нужно будет отслеживать идентификатор пользователя, так что это потребует определенных усилий.

Лично я хотел бы использовать Meteor счетов системы, используя счета-токенов пакет:.

https://atmospherejs.com/andrei/accounts-token

Вы можете сгенерировать маркер на сервере, а затем зарегистрировать пользователя в них нет чтобы знать, что они вошли в систему.

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

0

Вам не нужно использовать систему учета пользователя Meteor.

Просто создайте коллекцию Rooms, и каждый документ внутри этой коллекции будет представлять собой «игровой зал», или же вы хотите его назвать. Затем внутри добавьте ключ «игроков» и сохраните всех игроков или все, что вам нужно ($pull игрок, который покидает игру, $push игрок, который присоединяется). Когда игра заканчивается, вы можете полностью удалить этот документ MongoDB через его поле _id.

Что-то вроде:

db.rooms = { 
    _id: xzu90udfmd, 
    players: [ 
    { 
    tempUsername: "username1", 
    tempWhatever: "whatever", 
    token: 3zz97hrnw 
    }, { 
    tempUsername: "username2", 
    tempWhatever: "whatever", 
    token: 3zz97hrnw 
    }, { 
    tempUsername: "username3", 
    tempWhatever: "whatever", 
    token: 3zz97hrnw 
    } 
    ] 
    }; 

Затем, вы можете добавить все настройки либо в отдельных пользовательских объектов, или за ее пределами, которые могли бы применяться ко всей игровой комнате. Что-то вроде этого было бы очень легко с React.

+0

Но как я могу отслеживать игрока, если он теряет соединение и т. Д.? Это как @khang предложил сохранить их _id или токен внутри localStorage? –

+0

Если человек теряет связь, вы все еще хотите, чтобы он смог подключиться обратно в одну комнату? –

+1

Да, вы можете хранить свой токен в локальном хранилище, загружать его до того, как шаблон визуализирует и перекрестно ссылается на массив 'players' в БД.Если токены игрока совпадают (токен localstorage/cookie совпадает с токеном пользователя в БД) &&, статус игровой комнаты не удаляется/не заканчивается, отрисуйте игровой зал. Если нет, отрисуйте шаблон «игра поверх» или ж/д, который вы хотите. –