JeuWeb - Crée ton jeu par navigateur
Carte avec brouillard de guerre - 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 : Carte avec brouillard de guerre (/showthread.php?tid=3050)

Pages : 1 2


Carte avec brouillard de guerre - MdE - 14-09-2008

Bonjour,
Mon jeu de rôle se déroule dans un lieu restreint à une ville et ses environs, il serait donc très pratique aux joueurs de pouvoir voir la carte de cette région. Le problème c'est que les personnages possèdent des points de connaissances en géographie (entre autres) et que la plupart des joueurs débutent avec 0 en géographie.
J'aimerais donc faire 2 choses: une carte plus ou moins bien faite selon le niveau de connaissance en géographie et un brouillard de guerre qui recouvrirait les zones qu'un personnage n'aurait pas encore visiter mais je ne sais pas vraiment comment m'y prendre et avec quel langage (le jeu tourne en php/mysql et ce n'est pas un jeu de plateau mais un jeu de rôle orienté texte et RP)

J'aimerais faire le meilleur rapport réalisme/simplicité.

Merci de votre aide


RE: Carte avec brouillard de guerre - Kassak - 14-09-2008

Ta carte se présente sous quelle forme ? Une grande image simple ? Avec plusieurs cases?


RE: Carte avec brouillard de guerre - MdE - 14-09-2008

Pour l'instant je n'ai qu'une grande image simple


RE: Carte avec brouillard de guerre - Kassak - 14-09-2008

Si tu veux pouvoir faire un système de brouillard de guerre, il va falloir changer ça, car tu ne pourras pas masquer des parties d'une image sans l'avoir découpée avant (enfin sans se prendre la tête bien sûr, car il doit quand même y avoir un moyen).

Donc je te propose de découper ta carte en plusieurs parties, plusieurs zones, plusieurs cases, ce que tu veux, que tu afficheras dans un tableau.

Ensuite, quand tu affiches la carte, tu récupères en BDD les zones visitées par le joueur, si elle est visitée, tu affiche normalement l'image de la zone, si non tu peux par exemple appliquer une opacité (CSS) à la cellule afin de faire ton brouillard de guerre, ou bien afficher une autre image Wink

Tu piges?


RE: Carte avec brouillard de guerre - MdE - 14-09-2008

Je vois oui, mais comment savoir si telle ou telle zone a déjà été visitée ? Je vois bien une solution mais elle ne me paraît pas être la meilleure: mettre une donnée par zone et pour chaque joueur, 0 si la zone est pas visitée, 1 si la zone est visitée et du coup à chaque fois je suis dans une zone, je fais une requête pour mettre un. Mais comme dit, je sens que cette solution est loin d'être optimale.


RE: Carte avec brouillard de guerre - Kassak - 14-09-2008

Tu fais une table "visite_zone" avec comme champs :

-id
-id_joueur
-zone

(par exemple)

Tu cherches à savoir si le joueur 1 a visité la zone A, tu fais ta requête qui cherche une entrée dans la table visite_zone avec id_joueur=1, zone=A.

Si il y a une entrée, le joueur a visité la zone, si il n'y a pas d'entrée, le joueur ne l'a pas visité Wink
Ca t'évite d'avoir des données inutiles dans ton cas Wink

Et à chaque fois qu'un joueur arrive sur une zone, tu fait la même requête, s'il n'y a pas d'entrée tu fais un INSERT, sinon tu ne fais rien Wink


RE: Carte avec brouillard de guerre - MdE - 14-09-2008

Oui c'est vrai, ça semble bien fonctionner comme ça.

Merci beaucoup pour tes idées, et pour ta vitesse de réponse !


RE: Carte avec brouillard de guerre - Ruz - 15-09-2008

Kassak a écrit :Si il y a une entrée, le joueur a visité la zone, si il n'y a pas d'entrée, le joueur ne l'a pas visité Wink
Ca t'évite d'avoir des données inutiles dans ton cas Wink

Et à chaque fois qu'un joueur arrive sur une zone, tu fait la même requête, s'il n'y a pas d'entrée tu fais un INSERT, sinon tu ne fais rien Wink

Bizarrement, j'aurais fait exactement l'inverse...
a savoir: Un but d'un perso est de découvrir chaque coin du monde... si tous le font, tu vas te retrouver avec nbre case du monde * nbre joueurs enregistrement... plus le temps passe, plus tu alourdis ta bdd.

j'aurais plutot fait à la création: un enregistrement par case non connue. Chaque fois qu'il se déplace et découvre une zone => delete dans la table... plus le temps passe, moins tu as d'enregistrement par joueur.

enfin, juste mon avis.
A voir aussi si tu as bcp de zones maritimes... celles là risque de te faire perdre de la place... car peu visitées.
et lui fournir une carte (image) avec les zones pas découvertes... ca motive à aller les découvrir ^^ (voir créer une quete exploration en correspondance, avec un petit bonus pour ceux qui ont tout exploré...)


RE: Carte avec brouillard de guerre - Zamentur - 15-09-2008

Ce système marche pour un découpage des zones assez large...

Si je prend l'exemple de mon jeu j'ai 40 000 zones et 200 à 300 joueurs qui sont susceptible de jouer ou de revenir jouer.
Si on concidéré que ces joueurs connaissent la carte à 50%.
Ca ferait 6 000 000 de zone ce qui commence tout de même à faire beaucoup d'entrée. Surtout vu le nombre d'insertion suppression à faire

Donc je pense que le système a ses limites à partir d'un certains nombre case*joueur .
Enfin un test serait plus parlant.


RE: Carte avec brouillard de guerre - keke - 15-09-2008

Coucou,

Ben moi, j'avais pensé faire un petit mixte.

Contrairement à Ruz, j'ai 8000 inscrit dont près de 2000 qui n'ont jamais touché leurs perso, 4000 qui ne sont pas allés à plus de 10 cases de leurs positions initiale ...
Bref, l'état standard est donc l'immobilisme. Au niveau base de donnée, ça alourdirait grandement de devoir mettre 8000 x nb cases découvert alors que au pire, y'en aura 2000 x nb_cases d'utilisés (et encore, je pense que seul les 25-30 joueurs acros y arriveront).

Par ailleurs, je considère qu'un niveau vu à plus de 90% est un niveau totalement acquis. On indique en 1 champs dans une autre table que le joueur à tout vu (et on supprime les qq centaines de champs maintenant inutiles).

Ce développement long et peu intéressant dans mon cas a été totalement décrit mais je ne l'ai pas planifié dans mes développement futurs...

Dans mon jeu, le Fog of War est nativement installé en fait ^^ : la vision est circulaire autour du personnage central. Un module sur l'heure de la connexion avait été évoqué (la nuit, la vision se réduirait), mais abandonné pour le moment.

Bon courage à vous ^^

kéké.