Scegliere le frequenze dei fotogrammi per animazioni di sprite

"A quanti fps dovrebbe andare la mia animazione?" viene solitamente chiesto come se avesse una sola risposta. Ne ha due distinte: quanti fotogrammi unici compongono un’azione e quanto rapidamente vengono riprodotti. Confonderle è il motivo per cui le animazioni sembrano lente pur avendo molti fotogrammi disponibili, oppure scattose nonostante una riproduzione veloce.

Numero di fotogrammi e velocità di riproduzione sono decisioni diverse

Un ciclo di camminata di 4 fotogrammi riprodotto a 8 fotogrammi al secondo dura mezzo secondo per ciclo. Un ciclo di 8 fotogrammi a 8fps dura un secondo intero, il doppio, alla stessa velocità di riproduzione. Il numero di fotogrammi determina quanto dettaglio di movimento esiste nel ciclo; la velocità di riproduzione determina quanto rapidamente si ripete. Puoi avere un ciclo dettagliato di 12 fotogrammi troppo lento per sembrare una camminata oppure un ciclo essenziale di 2 fotogrammi alla cadenza giusta che comunica comunque chiaramente l’azione, perché la percezione umana del movimento dipende più dai tempi che dai dettagli.

Questo conta nella pratica perché, a parità di budget per la grafica, le due regolazioni si compensano. Se puoi permetterti di disegnare solo 4 fotogrammi di un attacco, non sei condannato a un’animazione scadente: regola la velocità di riproduzione e i tempi di permanenza, descritti sotto, finché quei 4 fotogrammi risultano corretti, invece di supporre che servano più fotogrammi per risolvere un problema di tempi.

Che effetto fanno davvero 8, 12 e 24 fps

Questi numeri descrivono la frequenza con cui cambia il fotogramma visualizzato, indipendentemente dalla frequenza di rendering del gioco.

  • 8fps — un nuovo fotogramma circa ogni 125 ms. Passaggi nettamente scanditi; ogni posa resta visibile abbastanza a lungo da essere percepita singolarmente prima della successiva. Appare intenzionale, pesante o volutamente retro anziché fluido.
  • 12fps — un nuovo fotogramma circa ogni 83 ms. La tradizionale animazione «a due» disegnata a mano, con un nuovo disegno ogni due fotogrammi di un film a 24 fps. Abbastanza fluida per la maggior parte delle azioni di gioco, restando economica da disegnare.
  • 24fps — un nuovo fotogramma circa ogni 42 ms, corrispondente alla frequenza del cinema. Il movimento appare completamente fluido, senza scatti percepibili. Richiede circa il doppio dei contenuti dei fotogrammi rispetto a 12 fps per coprire la stessa durata, oppure lo stesso numero di fotogrammi riprodotto in metà tempo.

Nessuna scelta è oggettivamente corretta. Quella giusta dipende da cosa animi e dalla sensazione voluta; per questo la sezione successiva distingue per azione invece di dare un numero per tutto il gioco.

Tre righe di sequenze dello stesso ciclo di camminata: quattro fotogrammi etichettati 8 fps, retro scattoso; sei etichettati 12 fps, standard; dodici etichettati 24 fps, morbido e fluido
La stessa camminata disegnata in tre modi. Nota che le righe superiori non rappresentano un’animazione migliore: contengono più disegni, una scelta che riguarda sia i costi sia la qualità.

Perché i giochi retro usavano pochi fps e perché oggi è una scelta stilistica

Console e primi PC animavano a 6–10fps non principalmente per scelta artistica, ma per un rigido limite di memoria. Ogni fotogramma aggiuntivo significava più dati sprite da inserire nella ROM della cartuccia o nella RAM di sistema, entrambe misurate in kilobyte. Uno studio che animava un personaggio a 24fps anziché 8fps richiedeva circa tre volte il budget di fotogrammi per ogni azione del gioco, moltiplicato per ogni personaggio, e di solito quel budget non esisteva. I pochi fotogrammi erano una conseguenza diretta del vincolo e gli animatori divennero molto bravi a scegliere quelli più importanti al suo interno.

Quel vincolo oggi è quasi scomparso: memoria e spazio non limitano i fotogrammi di un gioco 2D. Scegliere 8fps è una scelta stilistica, per evocare quell’epoca o perché un movimento a scalini si adatta davvero alla grafica. Capisci il motivo nel tuo progetto: “pochi fps perché rétro” e “pochi fps perché budget esaurito” producono lo stesso risultato per ragioni diverse e solo uno è un vincolo ignorabile liberamente.

Frequenze consigliate per azione

AzioneNumero tipico di fotogrammiRiproduzione tipicaPerché
Riposo2–44–8fpsMovimenti sottili come respirare e battere le palpebre non richiedono velocità
Camminata6–810–14fpsRichiede un ritmo chiaro; troppo lento sembra fiacco o ubriaco
Corsa6–1014–20fpsUna cadenza più rapida comunica velocità anche con lo stesso numero di fotogrammi di una camminata
Attacco3–6Irregolare, con enfasi su anticipazione/impattoL’impatto deve cadere su un solo fotogramma, non sfumare su diversi
Transizioni da riposo ad allerta2–38–12fpsUn cambio di stato rapido e leggibile conta più della fluidità

Considerali un punto di partenza, non una regola. L’unico vero test è osservare il ciclo alle dimensioni e alla velocità reali del gioco: un numero che sembra corretto in un programma di animazione con un’anteprima grande può apparire completamente diverso quando lo sprite è alto 48 pixel su uno schermo in movimento.

Fotogrammi prolungati e tempi

Non ogni fotogramma richiede lo stesso tempo sullo schermo. Un fotogramma prolungato è una posa mostrata più a lungo delle vicine: preparazione di un pugno, apice di un salto, istante prima dell’impatto di una spada. Mantenerle un po’ più a lungo rispetto a una frequenza uniforme dà tempo di percepire l’anticipazione prima della parte rapida, una forma di andamento graduale: il movimento è raramente lineare e nemmeno i suoi tempi dovrebbero esserlo.

In pratica, un’animazione di attacco non è davvero composta da N fotogrammi a fps costanti: è un fotogramma di preparazione mantenuto per 150ms, due transizioni rapide di 40ms ciascuna, un fotogramma di impatto mantenuto per 100ms e uno di recupero per 200ms. Molti sistemi permettono durate per fotogramma anziché una frequenza globale proprio per questo. Se lo strumento supporta solo una frequenza fissa, puoi simulare una pausa duplicando il fotogramma da prolungare, affinché occupi due o tre intervalli invece di uno.

Gli fps dell’animazione non sono gli fps del gioco

Un gioco può essere renderizzato a 60 o 120fps mentre un’animazione di sprite viene riprodotta a 12fps: sono numeri indipendenti. Il ciclo di rendering del gioco disegna comunque ogni fotogramma; il sistema di animazione decide ogni quanto passare al fotogramma sprite successivo dentro quel ciclo, solitamente misurando il tempo trascorso e cambiando fotogramma al superamento di una soglia, non collegando l’avanzamento al ciclo di rendering. Confonderli è un errore comune per chi si avvicina alle animazioni di sprite da un ambito in cui la frequenza dei fotogrammi significava una sola cosa.

Questa separazione consente a un gioco con movimento della telecamera e risposta ai comandi fluidissimi a 60 fps di mostrare comunque animazioni dei personaggi volutamente scandite a 8 fps come scelta stilistica. È anche il motivo per cui cambiare la frequenza obiettivo del gioco non dovrebbe mai richiedere di ricalcolare i tempi delle animazioni degli sprite: se accade, il sistema di animazione sta accoppiando erroneamente le due cose.

Dove si trova nei motori più comuni

  • Unity — il campo della frequenza di campionamento nella finestra Animation imposta i fotogrammi al secondo per l’intera clip; i singoli fotogrammi chiave sulla timeline possono comunque avere spaziatura irregolare per creare soste entro quella frequenza.
  • Godot — AnimatedSprite2D e SpriteFrames consentono di impostare gli fps per ogni animazione e, separatamente, un moltiplicatore della durata per mantenere più a lungo singoli fotogrammi.
  • Personalizzato/indipendente dal motore — la maggior parte degli animatori di sprite realizzati a mano confronta un tempo accumulato con un array di durate per fotogramma, anziché una sola costante di fps: è il metodo più flessibile se scrivi il sistema autonomamente.

Domande frequenti

Il ciclo di camminata ha molti fotogrammi ma sembra rigido. Perché?

Di solito è un problema di tempi, non di numero di fotogrammi. Controlla se ogni fotogramma viene riprodotto per la stessa durata: nella camminata reale la distribuzione del peso è irregolare e una velocità di riproduzione uniforme la appiattisce. Prova a mantenere i fotogrammi di contatto, con il piede a terra, leggermente più a lungo di quelli di passaggio.

C’è un numero minimo di fotogrammi perché un’animazione sia leggibile?

Nessun minimo fisso: un battito di occhi a riposo di 2 fotogrammi o un lampo di attacco di 2 fotogrammi possono entrambi essere chiarissimi con i tempi giusti. Conta se il cambio di posa comunica l’azione, non quanti passaggi intermedi la raggiungono.

Tutte le animazioni dovrebbero usare gli stessi fps per coerenza?

Non necessariamente. Uno stile coerente beneficia di un numero di fotogrammi o di un linguaggio delle sagome coerente, ma azioni diverse si muovono legittimamente a velocità diverse: imporre a una corsa gli stessi fps del riposo fa solitamente apparire sbagliata una delle due.

Come animo contenuti ritagliati da un foglio di sprite generato con fotogrammi di dimensioni irregolari?

Aggiungi margini a ogni fotogramma per ottenere la stessa tela e un pivot coerente prima di impostare l’animazione, altrimenti riquadri di delimitazione diversi sembreranno tremolare o spostarsi indipendentemente dai tempi. Correggi prima la posizione, poi gli fps.

Ottieni fotogrammi puliti e coerenti da animare

I tempi risultano corretti solo se ogni fotogramma viene prima rifilato e posizionato in modo coerente. Magic Slice del Ritagliatore di fogli di sprite rileva i limiti del contenuto di ogni sprite dal canale alfa e aggiunge spaziatura per uniformare i fotogrammi, così una grafica sorgente irregolare non interferisce con i tempi dell’animazione. Funziona interamente nel browser.

Apri Ritagliatore di fogli di sprite