Jouer en mode invité
#1
Yo,

Sur mon jeu il faut être connecté pour jouer, la partie nécessitant un user-id pour relier les joueurs et leurs différentes actions.

J'aimerais bien qu'il soit possible de participer à une partie sans avoir à s'inscrire. Il faut avoir un compte pour créer une partie, mais juste pour jouer sur une partie existante cela ne me paraît pas nécessaire.

Je vois donc deux solutions :

1) On crée quand même un compte utilisateur à la volée, de façon transparente pour l'utilisateur, le code reste simple, et à la fin d'une partie on peut proposer l'inscription pour conserver les stats des parties auxquelles on vient de jouer. En contrepartie il faut purger de temps en temps tous les comptes utilisateurs obsolètes. En effet, avec un compte créé à la volée on n'a pas d'email à enregistrer, on est juste connecté automatiquement, donc si un utilisateur se déconnecte le compte est inacessible.

2) On crée un système d'authentification parallèle, ce qui a comme avantage de garder le code et la base de données logiques, mais requiert de mettre des if dans tous les coins, pas pratique à mon avis.

Qu'en pensez-vous ?
Répondre
#2
J'avais opté pour la première solution dans un mini-jeu créés lors d'un de mes stages. C'est simple et presque gratuit.
La purge est optionnelle (après tout, ça ne coûte presque rien) et simple à réaliser.
Répondre
#3
Tu générais un fake email ou tu laissais la colonne nullable ?
Répondre
#4
Une colonne email à null et une colonne persistence_token que je déposais dans un cookie chiffré.
Répondre
#5
Je dirais un guid généré à la volée côté client tant que pas connecté
Les options sont disponibles en fonction du back (guid connu ou pas) avec possibilité de conserver le guid si l utilisateur décide de créer son compte (pour les stat) ça te permet de savoir combien de partie on peut jouer de suite en tant qu’anonyme avant de créer son compte
[WIP]projet Rivages
[WIP]projet Arthur (comme si ça suffisait pas d'un...)
Répondre
#6
J'ai la même approche que Sephi pour du "MMO": un compte créé à la volée sans infos perso ni infos de connexion (email & password NULL, avec une session PHP crée qui fait référence à l'ID de ce compte mais ça, c'est au choix de la techo du back).

Après, je ne sais pas si c'est applicable, mais là, semble-t-il qu'il suffit de générer un UID (côté client ou serveur qu'importe) pour identifier les joueurs entre eux? Si je saisis bien, le but est juste d'avoir un ID du joueur côté serveur, donc cela peut se détacher de la notion de compte: le serveur génère un UID, l'envoie au client qui le stocke (qu'importe), ce qui permet d'identifier les clients entre eux pour la partie. Et lorsque le serveur génère l'UID, si le joueur est connecté classiquement, alors le serveur peut binder l'uid avec un compte pour sauver des stats ou autre?
Ce qui fait que l'on détache complètement l'ID du compte de jeu (pour la persistance, qui marche de manière classique avec une inscription "lourde" = volontaire) de l'UID technique servant uniquement à savoir quels joueurs (terminaux) causent avec quels autres? Il n'est alors plus nécessaire de s'inscrire pour jouer, le serveur délivrant un UID pour joueur séparément de la notion de compte de jeu inscrit.
Répondre
#7
Merci pour vos retours.

Ça donne matière à réfléchir, je me suis un peu coincé, je comptais bien sur le fait que les joueurs avaient des ids numériques afin de valider qu'on n'aie bien que des integers qui transitent. Mais bon ça se modifie facilement après tout.

Pour la génération du user ID côté client j'aime l'idée (bien que j'aie toujours peurs des collisions, je n'arrive pas à réaliser que c'est virtuellement impossible) mais j'utilise une librairie pour l'authentification qui est vraiment automatique et simple.

En tout cas l'idée de décorréler l'ID user et l'ID de joueur dans la partie est à creuser !
Répondre
#8
Souvent je raisonne en user et en player. Le player étant l’instance du joueur dans une partie.
Répondre
#9
Bon j'ai eu la flemme de faire le double système user/player. Vu que je crée un user à la volée bah j'ai mon user_id donc partant de là j''ai plus besoind de faire un player.
Répondre




Utilisateur(s) parcourant ce sujet : 1 visiteur(s)