JeuWeb - Crée ton jeu par navigateur
[Résolu]Historique complet - 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 : [Résolu]Historique complet (/showthread.php?tid=3925)

Pages : 1 2


[Résolu]Historique complet - My Hotel - 23-04-2009

Bonjour à tous,

Je bloque actuellement sur la réalisation d'une feature assez importante pour mon jeu.
Je voudrais que le joueur puisse consulter à travers des graphiques un historique complet de ses indicateurs(croissance, santé...)
Donc il faut stocker l'état de ces indicateurs chaque jour, et j'hésite sur la manière de le faire. Je pense à une solution :
Je peux chaque jour ajouter dans une table une entrée par joueur avec les indicateurs. Mais j'ai peur que la table devienne trop grosse au bout de quelque temps, à raison d'une entrée/jour/joueur.

Qu'en pensez-vous? Y'a t-il un autre moyen de réaliser ce que je veux? Ou bien une autre approche du problème?

Merci d'avance Wink


RE: Historique complet - khiguard - 23-04-2009

Dans un fichier tout simplement. Tu peut même faire un fichier par joueur uniquement.

@+


RE: Historique complet - My Hotel - 23-04-2009

Oui, mais si j'ai beaucoup de joueur, n'y aura-t-il pas trop de fichiers?
Ensuite sous quel format stocker les données? Comment en ajouter et exploiter facilement les données?

Donc c'est assez compliqué comme solution, mais si c'est la meilleure, je suis prêt à l'utiliser. Qu'en pensez-vous les autres? Smile


RE: Historique complet - wild-D - 23-04-2009

si c'est pour une exploitation graphique; pourquoi pas faire ton stockage graphiquement directement ?^^ (comment ça je suis tordu - après tout à raison de 1px par jour, sur une largeur de 730px ça permet de stocker 2ans après en terme efficience je sais pas si c'est vraiment tout indiqué, mais si tu compile toute tes stats sur le même graphe c'est une idée; ça t'éviteras après tout de stocker tes données ET ton image. )

après si t'as l'intention de les exploiter autrement; là plutot bdd si tu envisage de faire des comparaisons stats inter-joueurs, etc. Fichiers ce sera que si c'est plus du "historique-log".
(sinon fichier ou bdd, tu auras un peu le même soucis; à la longue; à savoir que tu vas accumuler chaque jour +nb_joueurs*nb_données_stats données Tongue).


RE: Historique complet - pascal - 23-04-2009

est-ce utile de consrver toutes les données du début à la fin ?
le jeu se joue-t-il par partie ou tout le monde y joue ad vitam eternam ?

A+

Pascal


RE: Historique complet - Zamentur - 23-04-2009

ça dépend on peut aussi imaginer une approche n'enregistrant que les paramètre de la courbe de progression, mais c'est plus complexe et çà demande plus de calcul pour ré obtenir les données

En termes de poids sinon concernant la première solution çà fait:
nb_jour*joueur enregistrement imaginons donc 360*1000=360 000 enregistrements : ce n'est pas insurmontable avec les bons index.
Il est peut être possible de réduire çà en enregistrement uniquement les dates de changement...

Sinon il est possible d'enregistrer directement les données dans un fichier php sous forme de array par exemple avant de recréer le graphique


RE: Historique complet - My Hotel - 23-04-2009

Merci pour vos réponses :
@Wild-D : je veux afficher au moins 3 graphes/joueur, avec possibilité de changer d'échelle et exploitation des données, donc stocker sous forme graphique, ça risque de faire lourd Wink

@Pascal : le jeu se joue effectivement ad vitam eternam, et cet historique sera un élément important du jeu et de son originalité (je ne vous en dit pas plus Smile )

@Zamentur : qu'est-ce que tu entends par paramètre de la courbe? Sinon, l'idée d'enregistrer seulement les changements est bonne, quelque soit la méthode utilisée... Après, franchement, je pense que le fichier serait trop long à charger : la fonction unserialize met beaucoup de temps sur les gros arrays

Si il y d'autres idées, allez-y, sinon, je vais rester sur BDD en enregistrant seulement les changements... Smile


RE: Historique complet - Zamentur - 23-04-2009

Euh quand je disais mettre çà dans un array je parlais de créer un fichier php avec un array...

C'est assez efficaces pour récupérer des données...

Sinon quand je parle des paramètres de la courbe:
je part du postulat que chaque indicateur à une manière de progresser qui est modifier à des points clefs (point de changement) définissant une nouvelle allure de courbe.

La courbe peut être linéaire si tes indicateurs progressent de manière linéaire, tout comme elle peut être polynomial etc...
Il est envisageable d'enregistrer à chaque point de changement le niveau de l'indicateur pour ne pas avoir à recalculer tout si on veux juste une partie de la progression.

Il est aussi possible d'appliquer la fonction partie entière ou alors la fonction arrondie, afin d'obtenir une augmentation par palier.

NB: cette méthode n'est bonne que si il n'y a pas de nouveau point de changement à chaque fois qu'il y a progression. En d'autre termes je vois mal comment appliquer çà si par exemple l'agilité est augmenté par l'action de faire un combat de façon instantané. Car dans ce cas la première méthode est beaucoup plus efficaces.

NB2: cela dit il est possible d'alléger les données de la première methode en appliquant des algorithmes de type régression polynomial.
L'idée étant d'avoir les points d'une courbe et de trouver une formule simple (donc moins lourde que chaque point) qui passe le plus prêt possible de chaque point en gardant un indicateur de précision afin de ne pas avoir de donnée fausse.

De cette façon on a pas les données exact mais très proche pour ne pas être gênantes.


RE: Historique complet - My Hotel - 23-04-2009

Je suis pas sûr d'avoir tout compris : faudrait que je stocke que les points clés et la nouvelle allure de la courbe à ces points clés, de manière à reconstituer la courbe. C'est bien ça?
Donc c'est un peu le principe de stocker que les données nécessaires, mais en plus concret comme explication.

Ou alors, j'ai rien compris...

P.S : pour le fichier, il va grossir rapidement, l'inclusion sera donc de plus en plus longue et la création de l'array par PHP aussi. C'est à dire qu'à chaque affichage un array énorme sera lu. Mysql est plus maniable qu'un array, puis je peux selectionner seulement les données qui m'intéressent, c'est à dire celles du joueur.


RE: Historique complet - Zamentur - 23-04-2009

(23-04-2009, 07:38 PM)My Hotel a écrit : Je suis pas sûr d'avoir tout compris : faudrait que je stocke que les points clés et la nouvelle allure de la courbe à ces points clés, de manière à reconstituer la courbe. C'est bien ça?
Donc c'est un peu le principe de stocker que les données nécessaires, mais en plus concret comme explication.
C'est çà...

Sinon pour la solution du array si il y a un array par joueur çà fait juste 350 ligne par année. Ce qui n'est pas si énorme que çà!

Personnelement je pense que tu peux te permettre de mettre çà en base de donnée, en enregistrant uniquement les dates ou la valeur de l'indicateur a changé.
Du moins c'est une méthode qui passera au moins l'année, et qui ne prendra pas en compte tout les joueurs inactif... Puisque si ils sont inactif leurs indicateur ne devrait pas trop bouger non?

Au pire au bout d'un an il peut être envisageable d'enregistrer le graphique de chaque joueur, d'archiver les donnée de la table d'historique et de commencer une nouvelle année avec la table clean... Mais je pense qu'on peut monter assez facilement vers les 500 000 enregistrements. Par contre il faut essayer de limiter la taille de chaque indicateur en terme d'octet.