Domanda

Per un progetto a lungo termine università, sto lavorando su un roguelike grafica (mi rendo conto della contraddizione in termini: P) che utilizza un display isometrica. Quello che sto cercando di capire è, dal momento che il disegno tutte le tessere è stupidamente costosi e inutili, ho voglia di capire un algoritmo relativamente veloce per determinare quali le piastrelle devono essere disegnati per adattarsi all'interno di una finestra di NxMpx, dato che la piastrella grafica è XxYpx.

Non sto facendo scorrimento fluido per questo, in modo che non è un problema. Sono, inoltre, non preoccupato di essere perfetti - un po 'di pareggio inutile va bene, io non voglio disegnare una quantità enorme di piastrelle inutili che non verranno visualizzati in-game

.
È stato utile?

Soluzione

È necessario pensare a due concetti: lo spazio dello schermo e lo spazio mondo. Questi sono molto importanti nei motori 3D, ma si applicano a tutti, ma i giochi molto più semplici. Nel motore isometrico vostro mondo-spazio è una matrice 2D di piastrelle.

Quindi, si sta cercando prima di tutto ad un modo per convertire tra questi due spazi di coordinate. Una volta fatto questo, sarà evidente che le mappe spaziali schermo su tutto il mondo come un rectange che viene girata a 45 gradi. È possibile determinare una formula per questo, ma è importante solo se si sta cercando di determinare quale parte dello spazio mondo è visibile in modo da simulare solo mostri in quella zona (un'efficienza necessaria su console 8 bit, probabilmente non su un PC moderno! ). Quando si tratta di vero e proprio il rendering non si ha realmente bisogno di determinare questa regione visibile del mondo, perché è implicito nel modo in cui si esegue il rendering delle piastrelle sullo schermo: -

  1. Si lavora quale posizione piastrella è in alto a sinistra dello schermo, chiamare questo O (per origine) - che sta per essere un offset fisso dal vostro punto di interesse, di solito il giocatore, che si desidera mantenere in il centro dello schermo.
  2. Una volta che avete che si dipinge le tessere nella riga superiore dello schermo, fare un passo + 1X e -1Y nello spazio globale di ogni piastrella (se si sta cercando nord-est).
  3. Poi si disegna la riga sotto. Questo è compensato meno la metà di larghezza di piastrelle nello spazio dello schermo e dalle ore O -1X nello spazio mondo.
  4. ripetere i punti 2 e 3, modificando la posizione di partenza nello spazio mondo di -1 in X e Y da quello che si è utilizzato nella fase precedente 2 fino a raggiungere la parte superiore dello schermo.

Altri suggerimenti: -

  • Ovviamente non disegnare le tessere che si trovano al di fuori della mappa. Si potrebbe anche, a seconda del design del gioco, non trarre piastrelle di fuori di una stanza particolare il lettore è in.
  • Non ci sono solo piastrelle per disegnare, theres anche i giocatori, mostri, scenario, ecc La regola è che si disegna tutto in una posizione mondo paricular nello stesso passaggio. Gli oggetti che modo più vicino alla 'macchina fotografica' oscurerà roba dietro di loro (che è il motivo di iniziare a disegnare nella parte superiore dello schermo).
  • Inoltre, non avere solo piastrelle del pavimento nella maggior parte dei motori di iso, si avrebbe anche mobili e pareti segmenti. Si potrebbe designare aree della mappa come appartenente ad una stanza particolare, quando l'attenzione è rivolta quella stanza (perché il giocatore è in esso per esempio), non si disegna i segmenti di parete per il lato della sala più vicino alla fotocamera .

In ogni caso, questo è sufficiente per essere sempre avanti, spero che sia utile e il progetto va bene.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top