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?


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.


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.


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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.