JeuWeb - Crée ton jeu par navigateur
Module de carte héxagonale 2D - 3D Iso avec relief - 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 : Module de carte héxagonale 2D - 3D Iso avec relief (/showthread.php?tid=4044)

Pages : 1 2 3 4 5 6 7


Module de carte héxagonale 2D - 3D Iso avec relief - comg - 05-06-2009

Bonjour à tous.

Dans le cadre de mon (mes) projet(s) de jeu, je vais me concentrer sur la création d'un module "flexible" de carte.

Cela fait un bon moment que je réfléchit pas mal au système et que je lis les tutos à droite à gauche (notamment celui d'Harparine, encore bravo à toi !)

L'idée est :
Gestion de carte en tuile héxagonale.
Gestion du relief et des tuiles "de raccords" avec le relief (générée automatiquement)
Création d'un éditeur (là j'aurai besoin d'aide en JS :p)
Séparation des tuiles 3D et de la texture (par superposition)

Voilà en gros les fonctionnalités que je vise.

Le module vise à pouvoir s'implanter sur différents sites (donc je le mettrai en ressources une fois avancé !) et donc nécessitera des données correctement formatées.

Voici le schéma de base :

Des paramètres d'affichage :
- tailleX
- tailleY
- zoom (changera la taille des tuiles)
- perception du joueur (les case hors champ de perception ne délivreront que peu d'info et seront "grisées"
- 2D ou 3D

La carte :
$carte['nom']
$carte['tailleX']
$carte['tailleY']

Les cases :
$case[x][y]['z'] = altitude
$case[x][y]['type'] = si sur "defaut" la tuile sera une tuile de raccord de relief calculé selon les cases adjacentes, si il y a un parametre, ce sera la tuile selectionnée qui apparaitra
$case[x][y]['texture'] = si sur "defaut" la tuile sera un raccord de texture calculé selon les cases adjacentes, si il y a un parametre, ce sera la texture selectionnée qui apparaitra

Ensuite j'essayerai d'implementer les déplacements du joueur, les chemins, la perception caché par les obstacles et les "objets" sur les cases.

Voilà, qu'en pensez vous ? Quelle fonctionnalités "de base" devrais-je implémenter d'après vous ?

J'essayerai de poster dans prochainement mes images de travail et quelques calculs/reflexions déjà portées.

NB : Si de bons codeurs (je n'en suis pas un Sad) se sentent le coeur de me donner un coup de main...

Bonne journée


RE: Module de carte héxagonale 2D - 3D Iso avec relief - Shao - 05-06-2009

Hellow Smile
J'aime beaucoup ton idée concernant ce module.
Cela dit faire un truc trop "générique" serait peut être très compliqué à mettre en place, autant pour toi que pour ceux qui vont utiliser ton module.
Je te suggère de bien découper chacune des fonctionnalités de telle sorte à satisfaire chacun sans impacter sur les autres quitte à faire plein de petits sous modules.

Par exemple :
- Le module principal permettant de définir la structure de la carte (ce que tu as fait) pour chacun des petits modules qui vont l'utiliser.
- Le module permettant de générer et manipuler le rendu la carte en mode hexagonale
- Le module permettant de générer et manipuler le rendu la carte en mode losange
- Le module permettant de calculer un chemin
etc...
Comme ça si jamais tu as des mises à jour à faire sur l'algo de chemin, cela n'impacte pas ceux qui utilise ton module juste pour faire un rendu de la carte.

Une autre question : structure objet ou pas du tout ? (je vois que tu veux représenter ça avec des tableaux mais est-ce définitif ? )

Est ce que je pourrais configurer mes tuiles de telles sortes à afficher un motif ou une couleur selon le type de ma tuile ?

Est ce que je suis obligé d'utiliser z pour la profondeur ?

Enfin voilà pas mal de questions que je me pose sur ce module qui sur le papier semble intéressant. Wink


RE: Module de carte héxagonale 2D - 3D Iso avec relief - keke - 05-06-2009

C'est sympa comme idée ^^, c'est pour un projet perso ? Ca a pour finalité un peu d'open source ? (juste le module en open source ?)

Les jeux en héxa me semble souvent plus prometteur que le pendant en carré ... cependant les règles de calcul sont un pouième plus compliqué à réaliser il me semble. Ne serait-ce que pour un calcul de distance dont la valeur dépend si tes coordonnées sont paires ou impaires ...
As-tu déjà fait un projet semblable en case carrée ?

Kéké qui ne cherche pas à te décourager ... et qui ne pourra pas donner suite à ta proposition de participer.


RE: Module de carte héxagonale 2D - 3D Iso avec relief - comg - 05-06-2009

Il s'agit effectivement d'un projet perso, mais avec comme finalité de vous le faire partager, et peut être dans faire une ressource communautaire de jeuweb Wink

Pour ce qui est des calculs, j'ai noirci pas mal de papier et je commence à y voir plutôt clair !

Enfin je vous en reparlerai quand j'aurai un peu mieux entamer.

Pour l'occasion, je me lance dans la POO (ouie !)


RE: Module de carte héxagonale 2D - 3D Iso avec relief - Ruz - 05-06-2009

bonne idée...

quelques petites remarques:
1) "tuiles de raccord": euh, tu peux expliciter? (enfin, non, je crois comprendre l'idée: éliminer l'effet "escalier" entre différents niveaux Z, c bien ca? bon courage pour mettre ca en place ^^)
2) tu comptes griser ce qui n'est pas visible du joueur. Ayant commencé un truc du genre pour Supra, je te fais une proposition d'entrée de jeu: prévoit la possibilité de faire pivoter la carte... quand ton perso est planqué derrière une pente, c lourd à gérer niveau repères... (selon les 4 points cardinaux, ce doit suffire ^^)
3) séparation tuiles 3D et textures... ouille... tu refusionnes ca avec quoi? GD après? (vois pas trop le truc, en fait... t'aurais un exemple, ou un définition de l'intéret?)

J'peux donner un coup de main théorique, pratique... mais avec des temps assez courts... plutot en aide "secondaire", quoi ^^


RE: Module de carte héxagonale 2D - 3D Iso avec relief - comg - 05-06-2009

1) Bien vu Wink
En fait il y aura des tiles "structures" pour chaque case.
Je prend une case x;y et j'analyse l'altitude de toute les cases adjacentes (j'ai l'ensemble des coordonnées par des formules simples :p).
Selon le cas j'associe une tuile de structure particulière (soit au totale 26 tuiles possibles non texturées)
(Je vous ferai les schéma demain je pense)

2) Pas bête, merci pour l'idée Wink

3) Je comptais (je ne suis pas encore sur que la méthode est trés bonne) superposer des divs.
Et dans la div creant la tuile, il y aura en fond la texture, et en image la structure (les traits noirs en gros)

C'est un peu dur d'exprimer tout cela, j'essaye vraiment de vous schématiser tout ça demain pour que vous compreniez mieux.

Merci de votre interet et Ruz ton aide est la bienvenue. Tu me diras ce que tu penses de mes compléments demain Wink

Bonne nuit.


RE: Module de carte héxagonale 2D - 3D Iso avec relief - comg - 06-06-2009

Pour ce qui est de l'affichage de la carte, quel est votre avis ?

TABLE ? DIV ?

Sachant que j'ai besoin de 4 couches d'images (texture, structure, perso, element de decor).
et sachant que travaillant en tuile hexagonale j'aurai besoin d'un décalage des cases.

Merci de votre aide Smile


RE: Module de carte héxagonale 2D - 3D Iso avec relief - Argorate - 06-06-2009

Salut,

je voulais rectifier un petit truc, l'isométrique est en aucun cas de la 3D, c'est juste de la fake 3D qui est du 2D de biais...

Le seul jeu par navigateur que je connaisse en 3D c'est quake live... Wink


RE: Module de carte héxagonale 2D - 3D Iso avec relief - comg - 06-06-2009

Oui je sais mais bon, c'est pour faire plus simple ^^


RE: Module de carte héxagonale 2D - 3D Iso avec relief - OncleJames - 06-06-2009

Bonjour,

Je suis moi même un grand accro des cartes hexagonales.

D'après les différentes expériences que j'ai eu, je ne peux que te conseiller d'éviter JS pour l'édition et l'affichage de ta carte.

JS est faut le dire, dépendant des navigateurs et au gré de l'utilisateur, tu ne seras jamais sur a 100% que ta carte sera bien affiché sur tout les écrans, et notamment lors de l'édition.
Tes tuiles risque d'être décalé, et les éditions parfois douteuses.

Pour palier à ces problèmes, nous sommes passé sous Flex (AS3 / Amfphp), et la surprise, tout marche, avec un code assez simple, et des possibilités bien supérieur au JS : Affichage personnalisé de la carte, temps de réponse supérieur, ..

Bien sur, il est possible de le faire sous Flash, mais la je m'y connais pas du tout :heuuu:

Avant que la question n'arrive, je ne peux pas donner les sources, elles ne m'appartiennent pas travaillant dans une agence web.

Si tu as des questions sous Flex, je peux essayé de t'aider dans la limite de mes compétences :p