JeuWeb - Crée ton jeu par navigateur
Log et événement - 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 : Log et événement (/showthread.php?tid=2835)



Log et événement - phenix - 02-08-2008

Bonjour à tous,

Voila, il est souvent utiles dans un jeu de garder des logs des actions des joueurs, pour par exemple les afficher. Je citerais l'exemple de Mountyhall, qui dispose d'un système d'événement très complet.

Malheureusement, les événements a enregistrer sont nombreux et varier:

- Machin a attaquer bidule, il a infligé X points de dégâts.
- Machine a utiliser une compétence.
etc.

Pour le moment, je me suis bordé a enregistré un événement personnaliser pour chaque action du joueur au moment ou elle est activer.
Je me retrouve devant plusieurs problème:

- Les log sont décentraliser, cela donne souvent une certaine anarchie dans le contenu du log qui parfois donne des données et parfois pas, bref cette personnalisation n'est pas dans l'intérêt des logs.
- C'est lourd a modifier, "qu'est-ce que j'ai mit sur ce sort la ? Ha oui, donc faut que je fasse pareil la...".

Je pourrais bien sur utiliser une fonction qui s'occuperait d'insérer le bon log, mais comment gérer la multitude d'information différente que peuvent contenir les logs (pseudo attaquant, pseudo défenseur, point de dégat, nom du sort, etc.) ?

Si vous avez des astuces, je serais très intéressé :glace:


RE: Log et événement - Yoda54 - 02-08-2008

Ta parenthèse ressemble fortement aux champs d'une table, non?
Donc j'opterai bien pour une table dans une base de données et des jointures pour retrouver les pseudos, le nom des sorts...


RE: Log et événement - Sephi-Chan - 02-08-2008

Salut,

Veux-tu faire en sorte que quand le joueur A lit :
Citation :Vous frappez B et lui infligez X points de dégâts.
B meurt.

Le joueur B lit :
Citation :A vous frappe et vous inflige X points de dégâts.
Vous mourrez.

Ou bien veux-tu un log unique genre :
Citation :A frappe B et lui infligez X points de dégâts.
B meurt.

Sinon, je dirais que tu peux lancer une fonction (de callback ?) à chaque fois qu'un joueur effectue une action. Cette fonction enregistre l'événement avec les paramètres de l'action (transmis dans un array, par exemple).

Mais il doit y avoir pas mal de solutions, selon ce que tu veux faire.


Sephi-Chan


RE: Log et événement - phenix - 02-08-2008

la base de donnée serait une solution, seulement, avec des logs conserver 15 jours, sa va vite faire beaucoup de log et sa risque de faire très lourd pour le serveur.

Je vais voir si il n'y a pas moyen, mais je préférerais un autre système s'il y a.

Edit pour sephi:

Je préfère la première solution.

Pour la fonction, tu peux détailler un peu plus:
- je sais pas du tout ce qu'est un fonction de callback.
- Comment organiserait tu l'array envoyer à la fonction ?


RE: Log et événement - Kassak - 03-08-2008

Pour ma part, j'ai décidé de faire simple (qui dit simple dit pas top moumoute quand même).

Ma table action (log) contient comme champs :

-Id
-Description (Ex : Vous avez attaqué, Vous avez été attaqué)
-Joueur
-Adversaire
-Chiffre
-Date

Ensuite, pour faire une phrase cohérente à partir de la même entrée pour les deux joueurs, cela donne ça :

Coté Joueur :

Vous avez attaqué Adversaire et lui avez infligé chiffre dégat.


Coté Adversaire :

Vous avez été attaqué par Joueur qui vous a infligé chiffre.


Le champ chiffre me sert à rentrer..les chiffres ! Par exemple les degats, les soins rendus, l'or échangé etc...

Le champ description sert pas à grand chose, mais cela ne prend pas beaucoup de place donc autant en profiter, et sinon je supprime tous les soirs à minuit toutes les entrées qui ont + de 5 jours afin de garder une base pas trop lourde.