Best practice per il sistema di coordinate della mappa


20

Ci sono convenzioni e / o metodi più noti intorno ai sistemi di coordinate nelle mappe di gioco? L'origine è solitamente posizionata al centro della mappa? O vive in un angolo e la mappa è costruita in un singolo ottante dello spazio 3D?


Hm, hai taggato tilemap e la risposta migliore parla di problemi tilemap, ma menzioni anche 3D e ottanti, motivo per cui la seconda risposta parla della precisione del float. La geometria 3D di solito non è memorizzata in una griglia, quindi le origini sono più arbitrarie e non ho mai sentito parlare di problemi di precisione del float in una griglia 2D. Forse è necessario qualche chiarimento o unificazione ...
StarWeaver,

Octant è stato modificato in. Cito il 3D perché la maggior parte dei framework che ho visto hanno una sorta di asse Z. La mappa di gioco può essere piatta e in 2D ma la telecamera è spostata lungo un terzo asse.
TaylorE,

Risposte:


37

La maggior parte dei giochi posiziona l'origine della mappa in un angolo. Il motivo principale di ciò è che le tilemap sono spesso archiviate internamente in array bidimensionali e la maggior parte dei linguaggi di programmazione non consente indici di array negativi. Ci sono molte discussioni su quale angolo dovrebbe essere l'origine, ma non considero nessuno degli argomenti particolarmente forti. Alla fine è solo una preferenza personale. Consiglierei di usare lo stesso angolo utilizzato dall'API grafica per ridurre al minimo il mal di testa.

Le eccezioni sono spesso giochi che consentono mappe che crescono all'infinito in tutte le direzioni. Non funziona correttamente senza indici negativi, quindi un semplice array 2d è fuori discussione. Dovrai archiviare i dati della tua mappa in una struttura di dati più complessa. In questa situazione di solito ha più senso posizionare l'origine nella posizione iniziale.


12

In teoria la posizione dell'origine non ha importanza. Tutte le operazioni matematiche eseguite quando viene eseguito il rendering della mappa o quando gli oggetti si spostano sulla mappa funzionano correttamente, indipendentemente da dove l'origine sia effettivamente.

Tuttavia, in pratica c'è una ragione per cui potresti voler fare in modo che il centro della mappa sia l'origine - e questa è una precisione limitata dei valori in virgola mobile.

Con i numeri in virgola mobile più si ottiene da 0, minore è la precisione nelle cifre più piccole.

Mentre lavoravamo su un gioco open world che aveva una mappa molto grande, in realtà abbiamo riscontrato problemi in cui la fisica e altre cose avrebbero iniziato a guastarsi man mano che ti allontanavi dalle origini.

La soluzione consisteva nel fare dei trucchi in cui l'origine era sempre abbastanza vicina al giocatore, teletrasportando in modo intelligente le cose (il giocatore, le tessere della mappa, la telecamera ecc.) In giro per non allontanarsi troppo dall'origine.


1

Non importa davvero. Ciò che alcune persone cambiano nel loro sistema di coordinate è spesso l'asse y. Invece di avere (0,0) in alto a sinistra, preferiscono averlo in basso a sinistra per facilitare la fisica.


Come è più semplice la fisica se l'origine del sistema di coordinate è in basso a sinistra?
Tyyppi_77,

3
Immagino che all'ultima frase manchi una parola: debug . È più intuitivo se il terreno è zero e tutto sale da lì, che se il "soffitto" è zero e tutto viene misurato.
Vaillancourt
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.