JeuWeb - Crée ton jeu par navigateur
Comment gérer les pré requis des bâtiments ? - 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 : Comment gérer les pré requis des bâtiments ? (/showthread.php?tid=4926)

Pages : 1 2 3 4 5


RE: Comment gérer les pré requis des bâtiments ? - dryzd - 22-06-2010

Ok, que d'échanges Wink

Donc ... pour revenir à notre petit mouton, une table de jointure avec une boucle for ça ferait l'affaire. C'est bien ça ?

Après, je ne suis pas tout à faire d'accord sur cette citation : "En général, vous aurez besoin de vos dépendances 2 fois : quand on consulte les dépendances et quand on construit un bâtiment (pour vérifier que le joueur a bien commandé un bâtiment auquel il a accès)."

On a besoin à chaque fois qu'on consulte la page proposant les liens vers les constructions puisqu'il faut savoir si on offre ou non la possibilité de construire tel ou tel bâtiment. Et pour ça, il faut regarder si ses pré requis sont atteints. Donc ça fait beaucoup plus d'affichages. Je me trompe ?


RE: Comment gérer les pré requis des bâtiments ? - Ter Rowan - 22-06-2010

quand on dit deux fois, c'est dans deux cas utilisateurs différents :

1) à chaque fois qu'on voudra connaitre les dépendances
2) à chaque fois qu'on vérifiera si la demande de construction d'un batiment est valide


RE: Comment gérer les pré requis des bâtiments ? - Argorate - 22-06-2010

(21-06-2010, 08:46 PM)atra27 a écrit : A voir avec l'architecture du reste mais tu peut par exemple faire comme j'ai fait:
Code PHP :
<?php 
$bat
[1]['require']="1,2"
explode sur cet var pour couper a la virgule
Tu as donc le bâtiment 1 puis le bâtiment 2 qui sont nécessaires...

Ensuite rien ne t'empêche de faire:
Code PHP :
<?php 
$bat
[1]['require'][1]=1;
$bat[1]['require'][2]=2;
$bat[1]['require'][3]=10;

Peut importe enfaite comment tu rassemble tes variables enfaite...
La première solution utilise un champ mais a besoin d'un explode+foreach
La seconde utilise plusieurs champs mais on peut se passer de l'explode...

moi j'aurais sans doute fait pour une meillieur lisibilité et gain de temps comme ça:

$bat[1]['require'] = array(1, 2, 10)

Mais bon, l'idée est la même Wink

Ensuite le débat tableau en dur ou BDD... J'ai pas envi de le refaire une n-ieme fois (mais les tableaux c'est rapide en temps d'accès et facile a utiliser et ça peut s'inclure que quand on en a besoin :p)


RE: Comment gérer les pré requis des bâtiments ? - dryzd - 22-06-2010

Merci pour tous ces échanges Big Grin


RE: Comment gérer les pré requis des bâtiments ? - Sephi-Chan - 22-06-2010

Bon, je résume donc ce que je te conseille d'appliquer (et je finirais par une explication de pourquoi il ne faut pas choisir les autres solutions).

On aurait un système à 2 tables.

Une table buildings, avec les informations relatives aux bâtiments, dont le niveau.
Une table dependencies, avec les colonnes :
  • building_id - l'ID du bâtiment dont on définit les prérequis ;
  • needed_building_id - l'ID du bâtiment nécessaire ;
  • needed_level - le niveau requis pour le bâtiment nécessaire ;


Ainsi, quand un joueur cherche à construire un bâtiment, tu as juste à récupérer la liste des bâtiments requis avec une requête de ce type (où %d est l'id du bâtiment que le joueur souhaite construire).


SELECT needed_building_id,
needed_level
FROM dependencies
WHERE building_id = %d;

Ainsi, tu as une liste des bâtiments nécessaires et le niveau qu'ils doivent avoir.
Il ne te reste plus qu'à croiser ça avec la liste des bâtiments dont dispose le joueur (que tu dois avoir récupéré en amont, très simplement).

Et voilà, tu as une solution simple, qui tient la charge et qui est optimisée par le serveur (grâce à un index sur la colonne building_id de la table dependencies).

Parce que c'est bien le problème des solutions bancales proposés, en disant les avoir testé avec 2 utilisateurs… C'est pas mal comme recul pour savoir comment ça se comporte lors d'une montée en charge. Confusediffle: D'ailleurs, remarquez comme ces solutions très réalistes sont soutenues par les quelques développeurs expérimentés qui traînent sur ce forum. Confusediffle:


Sephi-Chan


RE: Comment gérer les pré requis des bâtiments ? - Shudrum - 22-06-2010

Je rajouterais que le tout, couplé à un DAO bien optimisé, simplifie le code plus qu'énormément.


RE: Comment gérer les pré requis des bâtiments ? - Sephi-Chan - 22-06-2010

C'est surtout drôle d'entendre parler de performances alors que si on demande à ces gens s'ils utilisent Memcache ou des procédés de fragment caching, on a souvent des surprises. Smile

Mais bon, j'en ai marre de prôner des choses à des murs, qu'ils se cassent la gueule avec des systèmes pourris (c'est cru mais c'est pour qu'on voit bien l'image), on pourra pas dire qu'ils n'étaient pas prévenus.


Sephi-Chan


RE: Comment gérer les pré requis des bâtiments ? - Shudrum - 22-06-2010

J'viens à l'instant de dire sur un autre sujet : il faut bien faire sa propre expérience parfois Smile


RE: Comment gérer les pré requis des bâtiments ? - php_addict - 22-06-2010

(22-06-2010, 08:14 PM)Sephi-Chan a écrit : Mais bon, j'en ai marre de prôner des choses à des murs, qu'ils se cassent la gueule avec des systèmes pourris (c'est cru mais c'est pour qu'on voit bien l'image), on pourra pas dire qu'ils n'étaient pas prévenus.

bah alors faut pas s'enerver Wink on n'est pas tous pros, c'est à ca que sert un forum, ceux qui ont des connaissances/competences aident ceux qui en ont moins, et ceux qui apprendrons grâce à ce forum aideront a leur tour Wink


RE: Comment gérer les pré requis des bâtiments ? - Sephi-Chan - 22-06-2010

(22-06-2010, 10:19 PM)php_addict a écrit :
(22-06-2010, 08:14 PM)Sephi-Chan a écrit : Mais bon, j'en ai marre de prôner des choses à des murs, qu'ils se cassent la gueule avec des systèmes pourris (c'est cru mais c'est pour qu'on voit bien l'image), on pourra pas dire qu'ils n'étaient pas prévenus.

bah alors faut pas s'enerver Wink on n'est pas tous pros, c'est à ca que sert un forum, ceux qui ont des connaissances/competences aident ceux qui en ont moins, et ceux qui apprendrons grâce à ce forum aideront a leur tour Wink

Si certains n'en font qu'à leur tête avec des pratiques douteuses (qui — étonnement — ne sont recommandées dans aucun livre ! On se demande bien pourquoi !?), alors ils vont s'embêter à développer une application qui sera moins efficaces et moins maintenables jusqu'à s'en rendre compte. Et là il pourront tout recommencer.

L'intérêt du forum (partage d'expérience pour éviter de faire bêtement les erreurs qu'on fait les autres) en prend un sacré coup.

Alors oui, c'est frustrant. Heureusement que c'est une minorité.


Sephi-Chan