LothiGames !

Créations de jeux pour la toile

1 note

Une carte en hexagone

Après une grosse journée de codage, le premier essai de carte est parvenu à s’afficher sur mon écran.

Comme vous avez pu le voir dans les premiers graphismes, les tiles choisis ici sont hexagonaux. Ce choix me permet l’usage de l’isométrique en comptant une marge assez large en hauteur, plus qu’avoir des tiles en losange.

La difficulté principale d’un affichage de cartes avec des tiles en hexagone se situe au niveau du système de coordonnées. Si vous faites une micro-recherches sur votre moteur de recherche préféré, vous verrez que deux grandes écoles s’opposent : L’un restant sur deux dimensions, adaptant le système de l’isométrique avec losanges; l’autre utilisant un système à 3 axes.

Le système à 2 dimensions a l’avantage d’être connu et donc peut paraître plus simple à première vue. En fait il est plus complexe que ça, et d’ailleurs, j’en ai trouvé plusieurs versions différentes, certaines avec les axes non-perpendiculaires, d’autres avec des axes pas droits. Le défaut global de cette situation, pour moi, c’est qu’il m’était absolument nécessaire que les tuiles les plus en haut de l’écran apparaissent en premier. Il me fallait donc à tout prix un axe horizontal qui soit horizontal. A deux dimensions, ça me semblait foireux.

Puis j’ai découvert les systèmes à 3 dimensions. L’origine de ce principe est assez simple : sur un carré ou un losange, il y a deux paires de cotés qui se font face; les axes passeront donc forcément par le milieu de ces cotés. Si on applique ça sur un hexagone, nous avons 3 paires de cotés, si on fait passer une ligne par chacune de ces paires, nous arrivons à 3 axes.

Là aussi à priori, le système à l’air simple. Il n’est pas si simple que ça pour des raisons bizarres mathématiquement (sur lesquels je m’avancerais pas). Mais en gros, toutes les coordonnées n’existent pas.

Voyons un peu ce que mon programme me sort comme carte de coordonnées stables :

Carte de coordonnées

Vous repérez le truc ? Pour qu’une case existe, il faut qu’elle réponde à cette petite équation : coordonnée en x - coordonnée en y - coordonnée en z = 0

L’autre petit soucis sur cette technique, c’est le sens des axes. En se servant de la carte des coordonnées ci-dessus, nous avons pu déterminer le sens des axes, ce qui sera bien utile pour la suite.

Carte des axes

Il faudra donc faire attention, quand X reste stable (l’axe qui va d’en bas à gauche vers en haut à droite), Z augmente et Y descend (ou l’inverse si vous allez vers le base).

Tandis que sur les 2 autres axes, les deux autres coordonnées vont dans le même sens. (si z est constant x et y grimpent ou descendent tous les deux).

Bien assez de bavardages techniques pour aujourd’hui. Voilà ce que ça donne quand on rentre toutes ces considérations dans des boucles et qu’on fixe des skins différents pour les différentes cases :

Premier affichage de carte

La capture d’écran est à 50% ^^ Pour la taille, il s’agit de la base de carte pour les grands écrans (résolution 1024 de large et +… mais ça c’est une autre histoire qui sera détaillée dans un autre post.)

  1. sawen-annuaire a reblogué ce billet depuis maerah
  2. maerah a publié ce billet