JeuWeb - Crée ton jeu par navigateur
[Résolu] Un combat entre deux objets - 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] Un combat entre deux objets (/showthread.php?tid=4257)

Pages : 1 2 3


RE: [RESOLU] Un combat entre deux objets - Sephi-Chan - 05-08-2009

En fait, une bonne habitude à prendre est de développer des méthodes atomiques qui ne font qu'une chose mais le font bien.

En revanche, je ne pense pas que travailler avec des sessions soit une bonne chose puisque ça te pousse à mélanger tes sources de données. Stocker des identifiants et lancer une requête est à peine plus coûteux et infiniment plus sûr. C'est en tout cas ce que font les frameworks existants : c'est un gage de qualité.


Sephi-Chan


RE: [RESOLU] Un combat entre deux objets - Johy - 05-08-2009

Je me lance à peine la dedans, je compte faire des projets de plus en plus important, ça explique mes faux pas. Donc, tu préfèrerais faire une requete à chaque instance du personnage, si j'ai bien compris ?

Des methodes atomiques, CàD ? Des courtes methodes, et simples ?


RE: [RESOLU] Un combat entre deux objets - pascal - 05-08-2009

(05-08-2009, 02:22 PM)Johy a écrit : Des methodes atomiques, CàD ? Des courtes methodes, et simples ?

oui, voir à ce sujet une discussion sur le débuggage, les tests unitaires et pourquoi il faut découper son code en petits bouts :
http://www.jeuweb.org/board/un-grand-auteur-dit-tu-fais-comment-pour-t-5332-2.html#pid67338

A+

Pascal


RE: [Résolu] Un combat entre deux objets - Johy - 05-08-2009

Merci bien, après avoir lu, j'ai vu qu'instinctivement, j'appliquais cela, parfois.

Sinon, pour en revenir à :
Citation :Stocker des identifiants et lancer une requête est à peine plus coûteux et infiniment plus sûr.

Comment faire sans passer par la session ?


RE: [Résolu] Un combat entre deux objets - Sephi-Chan - 05-08-2009

L'idée est de ne stocker en session que l'id de ton personnage, pas stocker ton objet dans la session.


Sephi-Chan


RE: [Résolu] Un combat entre deux objets - Johy - 05-08-2009

Ah oui, dans ce sens je vois mieux, meric pour l'info, j'vais faire ça !


RE: [Résolu] Un combat entre deux objets - christouphe - 06-08-2009

(05-08-2009, 04:12 PM)Sephi-Chan a écrit : L'idée est de ne stocker en session que l'id de ton personnage, pas stocker ton objet dans la session.


Sephi-Chan

J'aurai pensé qu'il était moins lourd de stocker l'objet en session que de refaire une requête à chaque page qui le consulte.


RE: [Résolu] Un combat entre deux objets - Sephi-Chan - 06-08-2009

Il ne faut pas oublier que la requête qui va récupérer le joueur ou le personnage est une requête qui récupère une seule ligne grâce à une colonne indexée (l'id). C'est donc très rapide et léger.

L'autre avantage, c'est que c'est la solution la plus sûre en ce qui concerne l'intègrité des données : tu es sûr que ce qui vient de la base est à jour. On ne peut pas en dire autant d'une session : si ton personnage a perdu des PV suite à l'attaque d'un autre... Ta session contiendra une valeur fausse. C'est mal.


Sephi-Chan


RE: [Résolu] Un combat entre deux objets - Johy - 06-08-2009

Oui, j'ai réalisé celà lorsque tu me l'avais expliqué.
Désormais, je ne stocke que le pseudo et l'ID (question de sûreté) dans un array, en j'envoie une requête chargeant tout de la BDD en fonction de la session. Ca ralenti surement, mais de combien ? Ce n'est qu'une requête de plus après tout, par chargement de page. Au final, je suis d'accord, la différence ne se voit même pas (surtout que j'ai un bon serveur), et on est sur que ce qui est affiché est ce que la BDD possède, pas de mélange de données.


RE: [Résolu] Un combat entre deux objets - wild-D - 06-08-2009

accessoirement plutot qu'une gestion explicite, tu peu le faire implicitement ce qui est faisable, c'est en quelque sorte de rendre relativement transparente l'opération au niveau de ton script de jeu en gérant ça dans l'objet avec un peu de magie (si tu utilise le moteur de session par défaut qui serialize les données de session dans un fichier): tu joue avec __sleep() et __wake_up() histoire de ne sauver des attributs de l'objet finalement que son id, et lorsque que tu recharge la session qu'il fasse la récup du reste depuis la bdd.
(bon après faut pas avoir envie de serializé ton objet pour un usage qui collerait pas :heuuu: )