TourDeJeu, le réseau des jeux en ligne alternatifs : jeux web multijoueurs, jeux par forum. En savoir +

Flux RSS des discussions du forum : pour les joueurs, et pour les créateurs et MJ
  Reply to this topicStart new topicStart Poll

> Carte De Jeu En Hexagone, Des pistes pour la creation ?
Blackjez6
Ecrit le : Samedi 23 Septembre 2006 à 19h44
Quote Post


Kid
*

Groupe : Membre
Messages : 24


Je remet mon sujet ici sous les conseils de loK, le sujet initial se trouve ici:http://www.tourdejeu.net/forum/index.php?act=ST&f=18&t=1814
Si un modo ou un admin peut le supprimer ou le fermer, merci d'avance smile.gif


[edit par Flamme]Le sujet en double a été supprimé[/edit]

Bonjour,

Après avoir jouer pendant des mois (voire des années) sur internet aux jeux php (certains sont vraiment géniaux), j'ai décidé a mon tour de créer un jeu (dans quel langage ? en php/mysql/javascript biggrin.gif ).

Le jeu que je souhaiterais créer est un wargame/RPG sur le theme de la Seconde Guerre Mondiale (un peu revisité pour éviter les débordements et pouvoir les sanctionner sans s'embêter avec diverses controverses historiques.).

Aussi, pour la partie Wargame, j'aurais souhaiter créer une carte comme celle de tout wargame qui se respect, en héxagone.

Un petit exemple:
http://www.abandonia.com/games/646/images/...%20Victory2.png

Ces hexagones contiendront différents types de terrains (un peu pres 10 types différents) qui donneront des bonus/malus aux caractéristiques. Bref, je m'avance un peu trop pour le moment car mon probleme se situe bien avant...

Pour le moment, j'arrive a créé des cartes formées par des petits carrés (du moins, j'en suis pas loin).

Cependant, je ne vois pas du tout comment créer une carte en hexagone...
Quelqu'un aurait il des idées ? un ou des tutos pouvant m'avancer dans cette voie ?

J'ai bien trouver un je open source qui gère une sorte de carte isométrique formée d'hexagone mais j'ai un peu du mal a décrypter le code vu que les variables ne sont pas franchement explicite (ex: la variable $amp). Ce jeu s'appelle smilehex (basé sur smile wars). [désolé au créateur si il est ici mais c'est ce que je pense]

Bref, un petit peu d'aide serait pas de refus.
Je vous remercie tous par avance pour vos eventuelles réponses ou même juste pour avoir prit le temps de lire ce message.

Ah mince petit détail, j'ai un niveau correct en xhtml, encore débutant (même si j'ai vu pas mal de notions en php en lisant le siteduzero) et en javascript c'est guère plus brillant mais j'arrive a me sortir les doigts du popotin wink.gif

Pour répondre a LoK, mon probleme se situe au niveau de la réalisation de la carte et des déplacements. sweatdrop.gif
PMEmail Poster
Top
LoK
Ecrit le : Samedi 23 Septembre 2006 à 20h00
Quote Post


Ouf
*

Groupe : Membre
Messages : 210


En théorie, rien de bien complexe à faire. Il suffit de stocker la position des unités dans ta Base de Donnée.

Pour générer la carte, tu récupères ces valeurs et tu calcules la vue du joueur. Par exemple, la vue est centrée sur un capitaine en X = 5 et Y = 15. Il a une vue de 7 cases donc tu fait une requete SQL qui récupère le contenu (joueurs, objets...) présent sur les cases en question (donc c'est un script assez gourmand celui de la vue).
Pour l'affichage, un simple CSS suffit, ici les cases étant héxagonal, ca complique légerement mais pas beaucoup.

Les déplacement se résument à une requête SQL en terme de programmation. Si tu as un capitaine en X = 5 et Y = 15 et tu le fais se déplacer de 3 cases vers les X+, il sera alors en X = 8 ; Y = 15. Tu UPDATEs le champ concerné dans ta Base de Donné et recharge la vue du joueur.
PMEmail PosterUsers Website
Top
Blackjez6
Ecrit le : Dimanche 24 Septembre 2006 à 01h44
Quote Post


Kid
*

Groupe : Membre
Messages : 24


Ok, c'est comme les cartes en carré mais pour la conception de la carte en elle meme, c'est a dire les hexagones de terrains, c'est sensiblement la même chose ?
PMEmail Poster
Top
LoK
Ecrit le : Dimanche 24 Septembre 2006 à 10h42
Quote Post


Ouf
*

Groupe : Membre
Messages : 210


Oui sauf que les images ne sont plus des carrés mais des héxagones et qu'un ligne sur 2, il y a un petit décalage pour que les cases s'embriquent les unes aux autres.
PMEmail PosterUsers Website
Top
Tarot
Ecrit le : Dimanche 24 Septembre 2006 à 11h21
Quote Post


Kid
*

Groupe : Membre
Messages : 40


Je dirais que ce n'est pas bien compliqué...

Sur une map à " case carrée", une case à 8 cases adjacentes.
Sur une map à "case hexagonale", une case à 6 case adjacentes.

Toutes ces cases hexagonales sont placées comme une case carrée sauf qu'une rangée sur 2 est décalée d'un demi cran, ce qui enlève 2 directions diagonales.

Donc tu as à gérer ta map hexagonale comme une map carrée mais seuls l'affichage et le déplacement changent.

Ainsi les cases adjacentes d'une case[x][y] seront pour un décalage "vers le haut":
case[x-1][y-1]
case[x-1][y]
case[x][y-1]
case[x][y+1]
case[x+1][y-1]
case[x+1][y]
pour un décalage "vers le bas":
case[x-1][y]
case[x-1][y+1]
case[x][y-1]
case[x][y+1]
case[x+1][y]
case[x+1][y+1]

Sur chaque colonne x, il faut alterner les décalages vers le haut et vers le bas, sinon le map n'est pas "centré".

Selon l'orentation de ta map, il faut sûrement inverser les x et les y. ^^
Ensuite pour chacune des directions, tu assignes une case. ^^
PMEmail Poster
Top
Blackjez6
Ecrit le : Jeudi 28 Septembre 2006 à 00h45
Quote Post


Kid
*

Groupe : Membre
Messages : 24


Merci, je vais voir ce que je peux faire avec tout ça wink.gif
PMEmail Poster
Top
Haram turval
Ecrit le : Jeudi 28 Septembre 2006 à 08h24
Quote Post


Pro
*

Groupe : Membre
Messages : 126


Pour plus d'informations, si tu veux par exemple utiliser une détection de l'hexagone au pixel près, je te conseille cette page.

On y trouve plein de choses intéressantes.
On peut même en adaptant utiliser des hexagones "aplatis" pour donner un effet de profondeur. Attention cependant, les exemples donnés ne sont pas très juste. Il faut penser à convertir les angles en radians avant de faire les tests de détection.

Pour les coordonnées des hexagones, j'ai opté pour un système à trois coordonnées (x/y/z) qui simplifie énormément les algorithmes de champ de vision et de ligne de tir


--------------------
Tant va la cruche à l'eau qu'à la fin elle est mouillée.
PMEmail Poster
Top
Haram turval
Ecrit le : Mardi 24 Octobre 2006 à 10h01
Quote Post


Pro
*

Groupe : Membre
Messages : 126


Pour ceux que ça intéresse, j'ai un squelette de page qui gère une carte hexagonale.

J'utilise en entrée un tableau à 3 axes pour les coordonnées des hexagones et j'ai développé les fonctions qui permettent de détecter au pixel près quel hexagone se trouve sous la souris.

j'ai le code pour les cartes hexagonales 'pointe' en haut mais aussi 'bord' en haut.

De plus, l'utilisation des trois axes au lieu de deux pour référencer les hexagones simplifie énormément certains problème.

Pour savoir à quelle distance se trouve un hexagone ?
Max(Max(Abs(x1-x2),Abs(y1-y2)),Abs(z1-z2))

Pour extraire d'une BDD les hexagones dans un certain rayon de vue ?
SELECT <champs>
FROM <table>
WHERE
X BETWEEN <position X - rayon de vue> AND <position X + rayon de vue> AND
Y BETWEEN <position Y - rayon de vue> AND <position Y + rayon de vue> AND
Z BETWEEN <position Z - rayon de vue> AND <position Z + rayon de vue>

Si vous êtes intéressés, merci de me contacter par MP.


--------------------
Tant va la cruche à l'eau qu'à la fin elle est mouillée.
PMEmail Poster
Top
« Sujets + anciens | Programmer | Sujets + récents »

Reply to this topicStart new topicStart Poll