Qual è l'approccio migliore per creare un personaggio 2D per essere in grado di usare tonnellate di equipaggiamenti diversi quando è in azione?


14

Voglio creare un gioco 2D ma mi piacerebbe avere il personaggio di indossare tonnellate di equipaggiamenti diversi su combinazioni diverse, come un gioco di ruolo o qualcosa del genere.

Quindi supponiamo che l'utente cambi le spalle e i pantaloni, questo deve essere mostrato al giocatore e tutte queste diverse attrezzature devono seguire l'azione dei diversi personaggi (colpire, essere colpiti, magia ortografica, ecc.).

Vedo alcuni problemi che mi piacerebbe conoscere il miglior approccio / algoritmo / architettura da risolvere.

1 - Sprite o animazioni

Devo creare sprite diverse per ogni attrezzatura in ogni animazione di azione?

È meglio avere lo sprite dell'attrezzatura e animarlo direttamente sul codice come ruotare e tradurre (usando qualcosa come l'interpolazione su Flash)?

C'è qualche altra opzione migliore? (Non mi piacciono davvero le idee sopra)

2 - Posizioni

Diciamo che durante una delle mosse del personaggio inizia a guardare direttamente davanti alla vista del giocatore, ma termina il suo movimento mostrando la sua parte destra al giocatore (come se oscilla la sua spada da una parte all'altra).

Se consideriamo una parte dell'utente, come ad esempio la sua testa, inizia davanti e poi gira a sinistra.

Significa almeno 3 posizioni diverse per ogni equipaggiamento della testa (casco, cappello, qualunque cosa).

Questo sicuramente influenza la risposta della domanda n. 1. Qual è il modo migliore per raggiungere questo obiettivo?

3 - Strati

Consideriamo una mossa del personaggio in cui ruota a 360 gradi con le braccia aperte. All'inizio dell'animazione, la sua mano destra è vicina alla vista dell'utente e quindi, nel mezzo del movimento, questo è probabilmente dietro il corpo del personaggio nell'animazione.

Qualunque sia l'opzione sulla domanda n. 1, devi sicuramente utilizzare una sorta di modello di livello per rendere questo sprite o animazione per iniziare più vicino alla vista del giocatore e successivamente passare a molto lontano dalla vista del giocatore.

C'è un buon modo per farlo?

So che la domanda è piuttosto lunga e difficile da capire. Fammi sapere se pensi che sia meglio avere alcuni disegni per provare a spiegare quale e proverò a farlo.


A che livello vuoi che sia la tua arte? Ti piace la pixel art retrò? O quegli sprite HD, se hai qualche arte esistente che mi aiuterebbe davvero a personalizzare la mia risposta.
Jesse Dorsey

Ciao Noctrine. In realtà la considero una domanda "indipendente dall'arte". Cercherò di trarre alcune spiegazioni più avanti questo fine settimana per rendere più facile la comprensione. Grazie
homemdelata,

Risposte:


8

Penso che tu stia forse cercando un sistema di animazione scheletrica 2D? Purtroppo non conosco alcun sistema standard per questo, dal momento che è stato per lo più sostituito dalla tendenza del gioco 3D-gfx-ma-2D.


+1 È molto più facile farlo se si rende il personaggio 3D.
knight666,

ma per "3D-gfx-but-2D-game" dovrei prendere in considerazione una delle soluzioni che menziono comunque, altrimenti avrò bisogno di uno sprite per qualsiasi combinazione di oggetti, ad esempio lo stesso pettorale con 10 diverse parentesi graffe i pezzi genereranno 10 animazioni :(
homemdelata,

Non proprio, hai solo punti di attacco sullo scheletro e puoi cadere in qualsiasi cosa tu abbia bisogno.
coderanger,

2
Ho creato una semplice libreria di animazione scheletrica 2D (open source) per XNA, incluso un editor decente.
Dai

Questa è quasi la risposta corretta. In realtà mi hai fatto capire che quello che sto cercando è il sistema scheletrico 3D per l'animazione 2D. Ho bisogno di trovare algoritmi per questo (se esiste)
homemdelata

8

Come dice Zorba, la maggior parte dei giochi retrò non lo ha fatto specificamente perché sarebbe necessario (con sprite) avere animazioni multi-frame per ogni singolo equipaggiamento.

Alcune alternative "pigre":

  • Scambia tavolozza gli attrezzi invece di creare folletti totalmente diversi.
  • Disegna il personaggio in modo tale che le uniche parti del loro corpo che animano siano parti che non sono attaccate agli attrezzi. Ad esempio, se il personaggio può comunque indossare una sola armatura, trasformalo in un elmetto e poi sei libero di animare l'intero corpo mantenendo la testa ferma.
  • Usa un singolo sprite per il personaggio nella schermata di gioco principale, ma mostra l'equipaggiamento in una schermata secondaria con un ritratto statico. Quindi non devi preoccuparti dell'animazione.

2

Nei vecchi giochi come la serie Ultima, avrebbero effettivamente disegnato un pezzo di equipaggiamento in ogni possibile posa del personaggio. L'occlusione verrebbe trattata non estraendo l'equipaggiamento (se il guanto sinistro è dietro lo sprite del giocatore non devi preoccuparti di esso) o semplicemente tirando l'attrezzo in ordine inverso.

Ovviamente ciò richiedeva molta manodopera e, di conseguenza, c'erano relativamente pochi pezzi di equipaggiamento unico, con molte versioni scambiate e modificate.

In un gioco moderno, consiglio vivamente di creare personaggi 3d. Se vuoi un'arte 2D o la tua piattaforma non ha la potenza per il 3d reale, è comunque probabile che tu sia meglio modellare tutto in 3d, renderizzare e quindi modificare manualmente il risultato finale.

In alternativa, se decidi di non aver bisogno di modifiche, non hai la potenza per il 3d completo, ma non vuoi spedire un'enorme libreria di sprite, puoi impacchettare i modelli 3d e renderli in una trama in tempo reale quando sai il modello sta per apparire nel gioco.


La stessa cosa che menziono sull'altra risposta è considerevole qui: dovrei considerare una delle soluzioni che menziono comunque, altrimenti avrò bisogno di uno sprite per qualsiasi combinazione di oggetti, ad esempio lo stesso pettorale con 10 diversi pezzi di parentesi graffe genererà 10 animazioni :(
homemdelata,

2
Comporresti "end sprite" in fase di esecuzione. Non hai uno sprite per "il giocatore", avresti un elenco di sprite che sono resi per ogni fotogramma di animazione. Quindi, se il giocatore è rivolto a destra, visualizzeresti "guanto sinistro", "braccio sinistro", "personaggio giocatore", "stivali", "pantaloni", "armatura", "elmo", "braccio destro" , "guanto giusto" in ordine. Quindi anima ogni pezzo di equipaggiamento in modo indipendente, fluttuando a mezz'aria.
ZorbaTHut,


0

Questa è un'ottima domanda, ma penso che tu abbia risposto tu stesso: hai bisogno di un sistema di ossa 2D che supporti le ossa che cambiano i livelli, così diversi arti possono andare dietro e uno di fronte all'altro mentre il personaggio ruota. Dovrai anche disegnare i tuoi sprite da 4 o 8 angoli (o comunque ne hai bisogno). A seconda delle competenze del tuo team, potrebbe essere più semplice creare queste risorse in 3D e renderle fuori dagli angoli di cui hai bisogno.

Anche l'uso di un motore 3D è una buona soluzione, sebbene ciò comporterà una serie di sfide.


Sì, è quasi quello. Ho appena trovato l'altra risposta corretta, ma anche questa è valida. Come ho commentato sull'altro, ho bisogno di un sistema scheletrico 3D per l'animazione 2D :)
homemdelata
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.