Best Practice für Kartenkoordinatensystem

20

Gibt es irgendwelche Konventionen und / oder bekanntesten Methoden um Koordinatensysteme in Spielkarten? Liegt der Ursprung normalerweise in der Mitte der Karte? Oder lebt es in einer Ecke und die Karte wird in einem einzelnen Oktanten des 3D-Raums erstellt?

TaylorE
quelle
Hm, Sie haben Tilemap mit Tags versehen und in der oberen Antwort geht es um Tilemap-Probleme. Sie erwähnen aber auch 3D und Oktanten, weshalb in der zweiten Antwort wahrscheinlich von Float-Präzision die Rede ist. 3D-Geometrie wird normalerweise nicht in einem Raster gespeichert, daher sind die Ursprünge willkürlicher und ich habe noch nie von Problemen mit der Fließgenauigkeit in einer 2D-Rasterkarte gehört. Vielleicht ist eine Klarstellung oder Vereinheitlichung angebracht ...
StarWeaver
Oktant wurde in bearbeitet. Ich erwähne 3D, weil die meisten Frameworks, die ich gesehen habe, eine Art Z-Achse haben. Die Spielkarte kann flach und in 2D sein, aber die Kamera ist entlang einer dritten Achse versetzt.
TaylorE

Antworten:

37

Die meisten Spiele legen den Kartenursprung in eine Ecke. Der Hauptgrund dafür ist, dass Tilemaps häufig intern in zweidimensionalen Arrays gespeichert werden und die meisten Programmiersprachen keine negativen Array-Indizes zulassen. Es gibt viele Diskussionen darüber, welche Ecke der Ursprung sein sollte, aber ich halte keines der Argumente für besonders schlagkräftig. Am Ende ist es nur eine persönliche Präferenz. Ich würde empfehlen, nur die gleiche Ecke zu verwenden, die Ihre Grafik-API verwendet, um Kopfschmerzen zu minimieren.

Ausnahmen sind oft Spiele, die Karten ermöglichen, die unendlich in alle Richtungen wachsen. Ohne negative Indizes funktioniert das nicht richtig, daher kommt ein einfaches 2d-Array nicht in Frage. Sie müssen Ihre Kartendaten in einer komplexeren Datenstruktur speichern. In dieser Situation ist es normalerweise am sinnvollsten, den Ursprung an der Startposition zu platzieren.

Philipp
quelle
12

Theoretisch spielt der Ort des Ursprungs keine Rolle. Alle mathematischen Operationen, die Sie ausführen, wenn die Karte gerendert wird oder wenn sich Objekte auf der Karte bewegen, funktionieren einwandfrei, unabhängig davon, wo der Ursprung tatsächlich liegt.

In der Praxis gibt es jedoch einen Grund, warum Sie den Mittelpunkt der Karte als Ursprung festlegen möchten - und das ist die eingeschränkte Genauigkeit von Gleitkommawerten.

Bei Gleitkommazahlen ist die Genauigkeit der kleineren Ziffern umso geringer, je weiter Sie von 0 entfernt sind.

Während der Arbeit an einem Open-World-Spiel mit einer sehr großen Karte stießen wir tatsächlich auf Probleme, bei denen die Physik und andere Dinge zusammenbrechen würden, je weiter Sie sich vom Ursprung entfernen.

Die Lösung bestand darin, einen Trick zu machen, bei dem der Ursprung immer ziemlich nah am Spieler war, indem Dinge (der Spieler, die Kartenkacheln, die Kamera usw.) intelligent teleportiert wurden, um nicht zu weit vom Ursprung entfernt zu sein.

Alan Wolfe
quelle
1

Es ist nicht wirklich wichtig. Was manche Menschen in ihrem Koordinatensystem ändern, ist oft die y-Achse. Statt (0,0) oben links zu haben, bevorzugen sie es, es unten links zu haben, um die Physik zu vereinfachen.

Cedric Martens
quelle
Wie ist die Physik einfacher, wenn der Ursprung des Koordinatensystems unten links liegt?
Tyyppi_77
3
Ich denke, im letzten Satz fehlt ein Wort: Debuggen . Es ist intuitiver, wenn der Boden Null ist und von dort aus alles nach oben geht, als wenn die 'Decke' Null ist und alles daran gemessen wird.
Vaillancourt