Meilleure pratique pour le système de coordonnées cartographiques

20

Existe-t-il des conventions et / ou des méthodes les plus connues autour des systèmes de coordonnées dans les cartes de jeu? L'origine est-elle généralement positionnée au centre de la carte? Ou vit-elle dans un coin et la carte est-elle construite dans un seul octant de l'espace 3D?

TaylorE
la source
Hm, vous avez tagué tilemap et la première réponse parle de problèmes de tilemap, mais vous mentionnez également la 3D et les octants, ce qui est probablement la raison pour laquelle la deuxième réponse parle de précision de flottement. La géométrie 3D n'est généralement pas stockée dans une grille, donc les origines sont plus arbitraires, et je n'ai jamais entendu parler de problèmes de précision de flottement dans une carte de grille 2D. Peut-être qu'une clarification ou unification
s'impose
Octant a été édité. Je mentionne la 3D car la plupart des frameworks que j'ai vus ont une sorte d'axe Z. La carte du jeu peut être plate et en 2D mais la caméra est décalée le long d'un troisième axe.
TaylorE

Réponses:

37

La plupart des jeux placent l'origine de la carte dans un coin. La raison principale en est que les tilemaps sont souvent stockés en interne dans des tableaux bidimensionnels, et la plupart des langages de programmation n'autorisent pas les index de tableau négatifs. Il y a beaucoup de discussions sur quel coin doit être à l'origine, mais je ne considère aucun des arguments particulièrement fort. En fin de compte, c'est juste une préférence personnelle. Je recommanderais simplement d'utiliser le même coin que votre API graphique utilise pour minimiser les maux de tête.

Les exceptions sont souvent des jeux qui permettent des cartes qui grandissent à l'infini dans toutes les directions. Cela ne fonctionne pas correctement sans index négatifs, donc un simple tableau 2d est hors de question. Vous devrez stocker vos données cartographiques dans une structure de données plus complexe. Dans cette situation, il est généralement plus judicieux de placer l'origine à la position de départ.

Philipp
la source
12

En théorie, l'emplacement de l'origine n'a pas d'importance. Toutes les opérations mathématiques que vous effectuez lorsque la carte est rendue ou lorsque des objets se déplacent sur la carte fonctionnent correctement, peu importe où l'origine est réellement.

Cependant, dans la pratique, il existe une raison pour laquelle vous souhaiterez peut-être faire du centre de la carte l'origine - c'est la précision limitée des valeurs à virgule flottante.

Avec des nombres à virgule flottante, plus vous vous éloignez de 0, moins il y a de précision dans les petits chiffres.

En travaillant sur un jeu en monde ouvert qui avait une très grande carte, nous avons en fait rencontré des problèmes où la physique et d'autres choses commençaient à tomber en panne lorsque vous vous éloigniez de l'origine.

Le correctif consistait à faire une ruse où l'origine était toujours assez proche du joueur, en téléportant intelligemment des choses (le joueur, les tuiles de carte, la caméra, etc.) autour pour ne pas trop s'éloigner de l'origine.

Alan Wolfe
la source
1

Ça n'a pas vraiment d'importance. Ce que certaines personnes changent dans leur système de coordonnées est souvent l'axe des y. Au lieu d'avoir (0,0) en haut à gauche, ils préfèrent l'avoir en bas à gauche pour une physique plus facile.

Cedric Martens
la source
Comment la physique est-elle plus facile si l'origine du système de coordonnées est en bas à gauche?
Tyyppi_77
3
Je suppose que la dernière phrase manque un mot: le débogage . C'est plus intuitif si le sol est nul et que tout monte à partir de là, que si le «plafond» est nul et que tout est mesuré par rapport à cela.
Vaillancourt