JeuWeb - Crée ton jeu par navigateur
Questions (techniques) sur la création d'une carte 2D - 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 : Questions (techniques) sur la création d'une carte 2D (/showthread.php?tid=1342)

Pages : 1 2


RE: Questions (techniques) sur la création d'une carte 2D - popayan - 04-05-2011

J'ai bosser sur quelque chose de semblable il y a pas longtemps: je génére une map aléatoire (une ile dans mon cas). Je faisais comme ceci:
- array rempli de 0 (0 désignant le terrain de type "mer")
- tracage du contour de l'ile : tracage d'un chemin semi-aleatoire de N-O -> N-E; N-E -> S-E etc...
- remplissage de l'intérieur de l'ile avec mes différents types de terrain.
ce que ca donnais au final :
[Image: mini_417340Sanstitre.png]


RE: Questions (techniques) sur la création d'une carte 2D - Jeckel - 04-05-2011

Ca ne répond peut-être pas à ton besoin, mais ça en aidera peut-être d'autre...

Vu que je suis passé par là pour Eden-5 et que c'est ce qui m'a prit un paquet de temps à résoudre, voilà ce que j'ai mis en place :

Côté base de donnée :
- une table "template" qui me permet de gérer l'image de la carte, et les paramètres fixes (dimension de l'image, dimension de la grille, case navigable ou non, etc.)
- une table "map" avec donc un index vers le template et des informations spécifique (nom et description de la zone par exemple)
- ensuite j'ai une table par "famille" d'objet sur la carte : personnage joueur, sortie, objet avec interaction, etc..
- enfin, à des fin d'optimisation, j'ai ajouter une Vue qui liste rapidement les objets (toute famille) présent sur une map (qui me permet donc rapidement de savoir s'il y a quelque chose sur une case ou non) cette vue comprend principalement : id de la map, famille d'objet, id de l'objet, position x sur la map, position y sur la map, et un numéro d'ordre pour gérer la priorité d'affichage lorsque 2 objets sont sur la même case.

Côté rendu, ça me donne 3 couche l'une sur l'autre sur la page :
- l'image de la map (balise IMG)
- la grille (balise table)
- et ensuite tous les objets, positionné au pixel prêt sur la map

Petites explications :
- la grille est toute seule et ne contient pas les objets, tout simplement pour pouvoir l'afficher ou la masquer au besoin
- les objets ne sont pas placés dans une grille car certains vont pouvoir chevaucher deux cases, peut-être glisser d'une case à l'autre plus tard, et que je peux avoir plusieurs objets sur une même case (icone identifiant une sortie + un personnage)

En terme de cache, l'objet issue de la table Map et Template peut être mis en cache sans problème, par contre tout ce qui est issue de la vue... c'est selon la nature de l'objet.

Bref, j'étais passé au début par la solution de stocker toutes les cases en base, mais j'ai finalement abandonné car premièrement beaucoup de case sont vide et donc des données inutile en base, et ensuite j'avait le besoin d'avoir parfois plusieurs éléments sur une même case.


RE: Questions (techniques) sur la création d'une carte 2D - Dexyne - 04-05-2011

Merci pour vos réponses et j'avais effectivement vu je ne sais plus où ta carte popayan.

Sympa de donner ce que tu as fais Jeckel, j'admet que je ne vois pas trop comment superposer plus de 2 images sur une même case actuellement (je n'en aurais surement pas besoin donc ici ce n'est pas trop grave) mais j'admet que ça risquera surement de m'être utile un jour ^^.