Come devo gestire la creazione di sprite per caratteri 2D personalizzabili?


8

Voglio creare animazioni avatar (sprite) per un MMORPG basato su browser. Il giocatore è in grado di personalizzare il personaggio e il contenuto cambia spesso (nuove armi, armature e così via). Come posso gestire strutturalmente la creazione e l'aggiornamento di tutti i fogli sprite?

La quantità di combinazioni diverse è abbastanza grande da non generare semplicemente tutte le permutazioni.

Può essere basato su server o client, ma se funziona interamente sul client, ti preghiamo di mantenerlo solo in HTML5 / CSS / Canvas / WebGL.


3
comporre giocatori di sprite multiple + colorazione dei colori
LearnCocos2D

Un articolo correlato sulla generazione di questo tipo di
folletti

Risposte:


14

Per farlo efficacemente senza "generare tutte le opzioni possibili", vorrai usare un approccio a strati ... almeno in teoria, anche se in pratica alla fine comprimi le trame stratificate in un unico sprite per ridurre il richiamo del call , che penso che dovresti e dettagliamo in seguito.

L'approccio di stratificazione prevede di avere un set di sprite per tutti i tuoi personaggi senza armi o equipaggiamento, e set di sprite individuali per ogni arma o equipaggiamento allineati in modo tale da poter essere resi in cima agli sprite del personaggio base per formare il personaggio finale e composto.

Per sprite semplici con pochi angoli di visualizzazione (come gli sprite di battaglia dei tradizionali giochi di Final Fantasy), questo è relativamente facile. Per gli sprite più complessi (come i personaggi di Diablo II, che avevano più facce e una prospettiva isometrica), gli sprite di armi e armature saranno più difficili da costruire perché devi lasciare "spazi" nello sprite quando apparirebbe dietro il carattere. Un modo semplice per alleviare questo problema è consentire agli sprite delle apparecchiature di essere ulteriormente suddivisi in un livello "primo piano" e "sfondo". Il processo per il rendering di uno sprite è quindi logicamente:

  1. Rendi i livelli di sfondo degli ingranaggi (di solito solo armi).
  2. Rendering dello sprite del personaggio base.
  3. Rendi gli strati in primo piano dell'equipaggiamento (generalmente principalmente armature).

Questo metodo non è infallibile (specialmente quando aumenti il ​​numero di pezzi di equipaggiamento intercambiabili in modo indipendente che possono essere equipaggiati e influenzano anche un personaggio reso), ma funzioneranno per la maggior parte dell'attrezzatura una volta che i tuoi artisti hanno capito della tecnica di creazione.

Uno strumento di modifica degli sprite con livelli attivabili / disattivabili sarà fondamentale perché è difficile animare una spada o un bastone che viene fatto oscillare nell'aria vuota senza che uno strato di riferimento del personaggio la faccia oscillare. Se i tuoi sprite sono effettivamente creati in uno strumento 3D, può essere molto più semplice configurare questa pipeline.

È possibile utilizzare questa tecnica nella sua forma alla vaniglia come descritto sopra. Tuttavia, si deve essere consapevoli che significa aumentare il numero di chiamate di tiraggio per carattere sullo schermo in modo significativo , che può essere un problema serio in un MMO dove un tempo deve almeno conto della possibilità che molti personaggi saranno sullo schermo in un tempo.

Cuocere il rendering del livello combinato in un singolo foglio sprite è uno strumento utile per combattere questo problema. Dovresti avere del codice che eseguirà i passaggi di rendering sopra riportati su una trama che puoi salvare su disco o cache in memoria. In questo modo puoi pagare il costo di rendering aumentato una volta, ogni volta che un giocatore cambia equipaggiamento, ma dopo quel rendering iniziale passi all'uso del foglio di trama composito cotto per tutti i fotogrammi successivi.

Per la massima efficienza di runtime, assicurati che tutti i fogli sprite per carattere e equipaggiamento siano allineati esattamente in modo da poter eseguire il rendering dell'intero foglio e non dei singoli fotogrammi. È possibile utilizzare varie forme di imballaggio bin off-line per massimizzare il layout degli sprite sul foglio, nonché la compressione delle texture, per risparmiare spazio off-line.

È anche possibile sfruttare questa tecnica durante la creazione del contenuto del gioco: i personaggi con equipaggiamento fisso, come gli NPC, possono essere precotti per risparmiare un po 'di tempo di esecuzione (in particolare per i personaggi che potrebbero apparire frequentemente).

Dovrai anche assicurarti che il tuo gioco sia un modo per segnalare a qualsiasi giocatore il tipo di personaggio base e l'equipaggiamento equipaggiato di altri giocatori nelle vicinanze, in modo da poter effettuare preventivamente la composizione sulla macchina di un cliente per quando alla fine arrivano quei giocatori vicini in vista del giocatore locale.

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.