(21-03-2014, 04:56 PM)Xenos a écrit : ... mais seuls des tests sur la plateforme réelle diront si ce surcout dépasse le cout d'une requête SQL.
On pourrait imaginer que le fichier des session est sur un SDD ou un RAMDisk. En ce cas, stocker dans la session sera probablement plus rapide qu'établir une connexion à mysql (si elle n'est pas déjà établie), puis lire les données, puis les traiter, puis fermer la connexion.
J'ai suggéré d'utiliser mySQL avec des tables RAM, je crois que c'est plus rapide puisque on de désérialise pas mais il est possible que je raconte n'importe quoi en effet.
(21-03-2014, 05:03 PM)php_addict a écrit : par contre je ne sais pas du tout où stocker si le joueur a remplit les quêtes 1, 2, et 5 par exemple: Dans une table 'quetes_resolues' ? ca vaut certainement mieux que des champs quete1 quete2 quete3 dans la table 'joueurs' j'imagine...
y aura peut etre un flag dans le table 'joueurs' du genre un booléan 'nouvelle_quete_resolue' pour avertir le joueur..
Comme le suggère Xenos, une table indiquant les quêtes actives/terminées du joueur avec un champ indiquant la date à laquelle la quête à été complétée. Ainsi, si le champ n'est pas null, la quête est terminée.
Je rajouterais un champ
vu
: quand tu affiches la page à ton joueur tu lui affiche un genre de pop-up indiquant que la quête est finie avec les récompenses, les gains d'XP ou de réput, etc. Une fois qu'il clique sur "OK" tu viens remplir ce champ vu
par true
afin de ne plus mettre la popup au joueur pour cette quête.(21-03-2014, 05:28 PM)Xenos a écrit : Après, si tu veux pas faire cette "pioche" trop souvent, tu peux ajouter une date dans la session indiquant le dernier "contrôle" ainsi effectué, et ne refaire un contrôle des quêtes résolues que toutes les 5 minutes (ou toutes les heures).
Comme je le disais, mieux vaut commencer par faire un truc qui fonctionne, puis de passer à la suite afin d'avoir un prototype jouable le plus rapidement possible. Ensuite seulement chercher à optimiser.
d'autant plus que quand un joueur fait une action qui termine une quête il s'attend a avoir le résultat de suite, pas 5 min plus tard.