Come posso implementare gli sprite 2D pre-renderizzati che possono affrontare qualsiasi direzione?


28

Ho cercato su Google come giochi come Clash of Clans renderanno le loro truppe, e sembra che stiano pre-renderizzando modelli 3D su fogli sprite 2D prima del runtime, e renderizzando quelle immagini 2D in fase di runtime. Tuttavia, le truppe in Clash of Clans possono affrontare qualsiasi direzione.

Nel mio gioco simile, se dovessi creare un'immagine per ogni orientamento (0-360 gradi) per ogni tipo di truppa (ce ne sono 18 tipi) in ogni fotogramma della loro animazione, dovrebbero produrre una quantità enorme di immagini. Non riesco a immaginare che cosa stiano facendo altri sviluppatori, quindi come posso realizzarlo?


2
A proposito, la tecnica a cui ti riferisci si chiama "Billboarding".
Weckar E.,

Risposte:


45
  1. In genere ci sono meno di 360 direzioni. Il caso comune è 8 o 16. Anche le animazioni sono piuttosto brevi.

  2. L'automazione è tua amica. Scrivi uno script Blender / 3DMax / etc per caricare un modello dall'elenco, renderlo in ogni fotogramma e direzione richiesti verso un'immagine. Tagga le immagini in base al contenuto e affrontale dal gioco.

  3. Metti tutto in atlanti di trama (ovvero fogli di sprite) per un accesso più rapido.

Alla fine, ti ritroverai con diverse centinaia di sprite, ordinatamente impacchettati in una dozzina di atlanti. Non è un grosso problema;)

Non sono riuscito a trovare un'immagine di CoC, ma ecco Diablo II, che ha utilizzato lo stesso approccio alle animazioni dei personaggi. Ad esempio attacco di mischia Amazon:

inserisci qui la descrizione dell'immagine


4
Equilibrio tra potenza / tempo di rendering rispetto allo spazio di archiviazione e al tempo di download.
M. Mimpen,

3
Che cos'è un "atlante"? Qualche link?
BЈовић

7
@ BЈовић Cerca "Texture Atlas". È un concetto molto comune.
Kromster dice di sostenere Monica il

2
Vale la pena notare che nelle discussioni su questa tecnica da parte degli sviluppatori di Blizzard North, in pratica sono arrivati ​​alla conclusione che era una strana misura stop-gap gestire un momento imbarazzante nelle capacità grafiche del PC, e anche allora non ha davvero alla fine ne vale la pena. C'è stata un'intervista a riguardo, e alla fine ci è voluto così tanto tempo per rendere nuovamente tutto ciò che la conclusione generale è stata che non era un ottimo approccio (e il loro prossimo gioco sarebbe stato sicuramente in 3D).
KRyan

1
@KRyan buona aggiunta! Immagino che fosse dovuto alla VASTA quantità di NPC e equipaggiamento nella D2. Per CoC e piattaforme mobili questo è un equilibrio diverso.
Kromster dice di sostenere Monica il

8

Tieni presente anche la bassa risoluzione di queste immagini. Ci sono un altro paio di cose che puoi fare per risparmiare spazio, anche se non so quali di questi siano usati da Clash of Clans:

  • Puoi distorcere il posizionamento delle truppe per affrontare le direzioni standard (N, E, S, W, NE, SE, SW, NW) il più delle volte, quindi ottimizzare solo per le direzioni standard.

  • Puoi fare un approccio combinato, in cui esegui il pre-rendering solo di alcune direzioni. Durante il fotogramma, puoi rendere le truppe che non corrispondono a un'immagine esistente o usare l'immagine più vicina se rimani senza tempo.

  • Utilizzare le simmetrie sinistra / destra quando possibile per dimezzare il numero di fotogrammi memorizzati.

  • Puoi dare la priorità ad alcune animazioni come camminare e riposare, memorizzando più direzioni e cornici per queste. Quindi deprioritizza altre animazioni, come l'oscillazione di una spada, dove memorizzi meno direzioni e cornici (ti suggerisco di mantenere più direzioni per il primo e l'ultimo fotogramma dell'oscillazione).

  • Puoi falsificare le restanti direzioni usando l'immagine più vicina e poi allungandola.

Nel complesso, potremmo parlare di 18 unità, fino a 8 direzioni, forse 2 secondi di animazioni a 20 fotogrammi al secondo, una media di 64x64 pixel e circa 2 byte per pixel. Sono 18x2x20x64x64x2 = 50 MB. Potrebbero inoltre ridimensionare il numero di direzioni, la risoluzione e il numero di fotogrammi in base alle capacità del dispositivo e al numero di unità utilizzate sulla mappa.


2
Puoi anche passare da cartelloni pubblicitari a modelli 3d se esegui lo zoom in avvicinamento a un determinato oggetto, quindi è 3d nelle vicinanze e quindi utilizza la 2d più veloce quando hai solo molte cose in giro in background. Gestire la transizione senza problemi può essere difficile.
Tim B

@TimB Che è particolarmente utile perché finisci per il rendering di risoluzioni elevate e l'utilizzo di immagini per risoluzioni basse.
Peter - Unban Robert Harvey,

2

Oltre alla risposta di @Kromster, si noti che le immagini sono spesso compresse in modo significativo e in immagini "atlanti" di grandi dimensioni in cui sono presenti molti elementi ripetitivi (ad es. Sfondo bianco) la compressione è significativa. Quindi la "dimensione" finale delle immagini non è solo una moltiplicazione diretta delle dimensioni delle singole immagini.


5
La compressione funziona in modo diverso per le GPU rispetto alle jpeg, in particolare le GPU mobili nei dispositivi per cui Clash of Clans è stato scritto. en.wikipedia.org/wiki/S3_Texture_Compression In altre parole: lo sfondo bianco è irrilevante al 100% per la compressione delle trame.
Peter - Unban Robert Harvey,

-2

Per un classico esempio, ti suggerisco di scaricare l'originale Doom, che utilizzava sprite 2D in un ambiente pseudo-3D. Gli sprite avevano 8 direzioni di fronte (relative al punto di vista del giocatore) e dalla memoria circa 8 dimensioni diverse man mano che si avvicinavano. Questo era molto visibile, ma era abbastanza accettabile per il gameplay. In Clash o in altri giochi di visualizzazione isometrica non è necessario considerare la distanza, ovviamente.


Non c'erano dimensioni diverse. Il rendering ha appena fatto il ridimensionamento del vicino più vicino su / giù secondo necessità.
R ..

@R .. Grazie per la correzione. Sono passati alcuni anni da quando l'ho suonato! :)
Graham,

1
Ci dispiace, ma questo non risponde alla domanda "Come posso implementare .." affatto.
Kromster dice di sostenere Monica il

@Kromster Quindi per una domanda che chiede "come posso implementarlo?", Non sto rispondendo alla domanda con una rapida panoramica di un gioco classico implementato (8 angoli invece di 360), e menzionando che come lo hanno fatto è particolarmente facile da vedere quando lo suoni, dal momento che l'OP apparentemente non poteva dirlo in Clash? E notando le differenze tra quel caso generale e il caso specifico di una vista isometrica? Ammetto che non è buono quasi quanto la tua risposta, ma c'è una differenza tra una risposta di qualità inferiore e la non risposta alla domanda.
Graham,
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.