JeuWeb - Crée ton jeu par navigateur
[PHP] Enregistrer les paramètres joueurs sans SGBDR - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [PHP] Enregistrer les paramètres joueurs sans SGBDR (/showthread.php?tid=6023)

Pages : 1 2 3


RE: [PHP] Enregistrer les paramètres joueurs sans MySQL - Maks - 11-03-2012

Oui comme Sephi, je pense que le mieux c'est de combiner les deux.

Un exemple concret qui pourrait être commun à quasiment nous tous :

Dans un jeu tu as souvent une requête qui revient quasiment tout le temps. Souvent c'est celle du déplacement où tu mets à jour un x, un y, une orientation... Et bien sur celle là ça serait intéressant d'utiliser une base NoSQL pour stocker les coordonnées car beaucoup plus rapide. Pour les requêtes plus complexes mettant en jeu des relations entre clés un SGBDR fera l'affaire.

C'est un choix conceptuel qu'il faudrait évaluer au début de la création du jeu. Dans mon cas je pense reprendre une partie de mes requêtes sous Redis même si Node.js permet de faire de l'asynchrone et donc de ne pas attendre que la requête sois terminée (sauf dans certains cas, mais c'est un autre problème ^^).


RE: [PHP] Enregistrer les paramètres joueurs sans MySQL - Sephi-Chan - 11-03-2012

Pour le coup, externaliser les coordonnées dans un système NoSQL ne me semble pas pertinent.
Le problème des bases SQL n'est pas vraiment la vitesse mais l'absence de structure de données.


RE: [PHP] Enregistrer les paramètres joueurs sans MySQL - Maks - 11-03-2012

Une requête SQL, avec des jointures, des relations avec d'autres tables (enfin tout dépend de comment est conceptualisée la table au départ) et qui revient souvent risque-t-elle d'être beaucoup plus longue qu'avec une base NoSQL ?

Si tu entends par "structure de données" un moyen de récupérer rapidement des informations, il y a les index pour les SGBDR

Dans le cas d'un jeu, tu stockerais quoi dans une base NoSQL par exemple ?


RE: [PHP] Enregistrer les paramètres joueurs sans MySQL - Sephi-Chan - 11-03-2012

Les coordonnées d'un personnage sont souvent stockées directement dans la table via deux simples colonnes X et Y. Parfois on passe par une table qui associe une "chose" (un bâtiment, un personnage, etc.) à des coordonnées, mais dans ce cas les requêtes restent relativement simples également.

Pour les structures, je pensais plutôt aux hash, sets, sorted sets, arrays, etc. qui n'existent pas (ou pas très pratique).

Pour les cas d'utilisation, c'est vraiment du cas par cas.




RE: [PHP] Enregistrer les paramètres joueurs sans MySQL - Maks - 11-03-2012

Hum d'accord, je suis dans la configuration 1 que tu énonces actuellement, et si je passais une partie de ma base en NoSQL ça aurait pour un gain de performance plus que pour autre chose ^^


RE: [PHP] Enregistrer les paramètres joueurs sans MySQL - php_addict - 11-03-2012

(11-03-2012, 07:35 PM)Sephi-Chan a écrit : C'est tout le contraire : il ne faut pas choisir l'un ou l'autre, mais les utiliser conjointement là où chacun est le meilleur. L'évaluation de la pertinence d'un choix requiert de l'expérience et des connaissances assez larges car tous les systèmes NoSQL n'ont pas les mêmes avantages et inconvénients.

Par exemple pour un forum, on pourrait utiliser un système NoSQL pour stocker les informations de lecture pour chaque discussion et pour chaque membre.

oui mais là non...il s'agit des préférences du joueur, exemple concret: tu as une table joueur SQL et les préférences de background sonore en noSQL (fichiers), et du côté admin tu veut faire des stats sur les joueurs en fonction de leur préférence de background sonore...tu fais comment? tu chope les données SQL, tu chope les données noSQL, tu balance tout dans un tableau que tu tri...bof...une simple requête toute bête aurait suffit dans le cas du "tout SQL"


RE: [PHP] Enregistrer les paramètres joueurs sans MySQL - Sephi-Chan - 11-03-2012

Ça ne montre rien du tout, si ce n'est qu'il ne faut pas utiliser de système NoSQL pour n'importe quoi. Smile


RE: [PHP] Enregistrer les paramètres joueurs sans MySQL - niahoo - 11-03-2012

Si tes préférences sonores sont le volume, les basses, mediums, aigüs, la piste préférée etc. alors un champ pour chaque info dans une table suffira bien.

Si par contre tu voulais enregistrer pour chaque piste musicale son propre volume, equalizer, alors pourquoi pas stocker ton tableau imbriqué dans une base clé/valeur. ça marcherait très bien avec une seule table en sgbdr avec les mêmes champs que précédemment mais une clé primaire sur deux champs : joueur et piste.

Si tu veux faire des stats dessus ou faire plein de traitement concernant plusieurs joueurs à la fois, pourquoi ne pas utiliser un SGBDR en effet. Surtout si le reste de ton appli l'utilise déjà.

Mais, comme le son c'est côté client, ça sera probablement traité en javascript. donc stocker toutes ces préférences (je parle toujours pour chaque piste séparément, donc un objet assez dense) dans un objet javascript sera une étape forcée. Le meilleur moyen de stocker ça sur le serveur sera probablement d'envoyer cet objet au serveur au format JSON. Et là, avec une base noSQL il te suffit simplement de stocker le JSON dans une base clé/valeur. En clé l'ID du joueur et en valeur le JSON. Pas besoin de code serveur pour lire le JSON, d'une structure de données côté serveur et de mettre ça en requête SQL ou d'utiliser un ORM, tu le stockes, point barre. Et en contrepartie pour faire tes stats il te faudra faire un peu de code.

Et enfin, perso je n'aurai jamais la même config selon mon PC : mon laptop sera au casque ou à la chaine hi-fi, donc sur celui-ci il faudrait balancer la sauce. Sur mon mobile, pas de son. Sur mon PC de bureau, des baffles pas terribles ou le casque donc selon le cas je devrai changer régulièrement, et enfin au boulot pas de son. Donc dans ce cas, stocker l'objet javascript directement dans le localStorage du navigateur me paraît la meilleure option, et ça ce n'est pas un SGBDR.


RE: [PHP] Enregistrer les paramètres joueurs sans MySQL - Sephi-Chan - 11-03-2012

Ça me fait penser à une fonctionnalité toute simple mais sympa de Rails 3.2 (basée sur un mécanisme existant de sérialisation/déserialisation automatique) : le store. C'est très bien pour stocker ce genre de petites préférences sur lesquels on n'a pas besoin de requêter.


RE: [PHP] Enregistrer les paramètres joueurs sans MySQL - Maks - 11-03-2012

Quand tu y réfléchies on a de plus en plus de solution de stockage à notre disposition : SGBDR, NoSQL, cookies, IndexedDB (WebSQL/LocalStorage/sessionStorage j'ai plus suivi pour les noms)...
Ca serait cool de trouver un article qui fait la synthèse de tout ça ^^