Perché la maggior parte dei principali motori di gioco non usa gif per trame animate?


28

Cosa c'è di meglio da usare fogli di animazione o gif? Un vantaggio che le gif hanno rispetto ai fogli di animazione è che non devi pensare a frame che vanno troppo veloci o troppo lenti a causa del tuo codice e dell'aggiornamento in tick adeguati.

Quali sono gli svantaggi dell'utilizzo di Gif e i vantaggi dei fogli di animazione rispetto a Gif?


7
Quindi forse dovresti riformulare la tua domanda in qualcosa del tipo "Perché la maggior parte dei principali motori di gioco non usa gif per trame animate?" come non sono comunemente, almeno quello che conosco, per buoni motivi. Penso che ti darebbe punti tecnici sul perché non vengono utilizzati rispetto a una domanda migliore, che non sono appropriati per i siti SE.
Coburn,

39
One advantage Gifs have over Animation Sheets is that you don't have to think about frames going too fast or too slowPerché quel? Su cosa ti affidi per fare quell'ipotesi? Una biblioteca? La specifica del formato del file? Un file gif è ancora solo dati, hai ancora bisogno di codice per interpretarlo (renderlo alla velocità corretta)
hoffmale,

13
Cosa ha detto Hoffmale. Le GIF non sono magiche; la loro animazione deve ancora essere controllata ed eseguita da alcuni software, compresi i tempi, e in questo caso, quel software è scritto da te. Onestamente, non mi aspetto che il tuo codice di gestione del foglio di animazione differisca enormemente dal tuo codice di gestione GIF.
Corse di leggerezza con Monica,

12
L'unica differenza tra il tuo foglio di calcolo e il codice GIF è che il tuo codice GIF convertirà il GIF in un foglio di calcolo e quindi chiamerà il codice del foglio di calcolo;)
MickLH,

6
gif non ha alcun vantaggio. se si desidera la compressione inter-frame, allora GIF è circa 30 volte meno efficiente di un codec video adeguato, fornendo anche una qualità peggiore (per materiale fotorealistico).
Sarge Borsch,

Risposte:


91

Svantaggi GIF:

  • tavolozza di colori molto limitata, in genere 256 colori con brutto dithering ( sì, puoi avere più di 256 colori in GIF animate , ma questo è raro)
  • Le GPU non supportano la compressione GIF nell'hardware (ciò significa che dovrai comunque decomprimerle sulla CPU)
  • puoi scegliere UN solo colore per la trasparenza (a meno che non venga implementata l'elaborazione personalizzata)
  • nessun accesso casuale. Tutti i frame GIF precedenti devono essere letti e decompressi per accedere a un frame.
  • essere compresso. È necessaria una funzione di decompressione dedicata nel codice. Non puoi scegliere algoritmi di compressione diversi (migliori). (sì, esistono anche GIF non compresse , ma questo non è comune)

Con il formato personalizzato tutti questi elementi vengono risolti molto rapidamente. Hai un controllo molto maggiore su formato immagine, qualità, trasparenza, accesso casuale e compressione (inclusi formati supportati da GPU come DXT). Ancora meglio, puoi dare la priorità alle funzionalità di cui hai bisogno.

Un vantaggio che le gif hanno rispetto ai fogli di animazione è che non devi pensare a frame che vanno troppo veloci o troppo lenti a causa del tuo codice e dell'aggiornamento in tick adeguati.

L'affermazione sopra è fuorviante. La sincronizzazione di fps GIF con fps di gioco reali non è molto diversa dalla sincronizzazione di animazioni di sprite personalizzate. In entrambi i casi hai esattamente la stessa configurazione: un elenco di frame, framerate desiderato ed eventi di rendering. Non c'è polvere magica in GIF: dovrai decomprimere GIF in spritesheet, il che vanifica lo scopo.

Naturalmente alcuni motori di gioco possono nascondere alcuni dei problemi GIF dietro le tende, ma lo stesso può essere fatto con gli spritesheet in un modo migliore.

Detto questo, ci sono alcuni casi in cui le GIF potrebbero funzionare . Ad esempio GUI HTML / CSS, ma queste sono piuttosto rare e affamate di risorse da sole.


Non capisco "un colore per la trasparenza". Cosa significa avere più colori per la trasparenza? Stai parlando di valori alfa variabili come applicare un gradiente di trasparenza su una trama?
Erik,

3
@Erik esattamente quello. GIF comuni supporta fino a 256 colori, di cui solo 1 può essere contrassegnato per essere trasparente. A differenza di altri formati, in cui la trasparenza ha in genere una gamma molto più ampia.
Kromster dice di sostenere Monica il

@Kromster In realtà, i siti esperti di risorse utilizzano un meccanismo di animazione personalizzato per le immagini animate, come l' background-imageanimazione della posizione CSS in cui l'animazione viene convertita in una grande immagine, che viene quindi spostata dagli offset.
Tomáš Zato - Ripristina Monica il

@ TomášZato True. Spiacente, ho indicato diversamente?
Kromster dice di sostenere Monica il

2
@ luk32 questo è uno svantaggio perché ci sono metodi di compressione molto migliori rispetto alla vecchia compressione GIF. Quindi usi la compressione GIF non ottimale o riesci a (de) comprimere due volte (nota che la compressione di dati già compressi in genere produce anche dimensioni maggiori).
Kromster dice di sostenere Monica il

32

Per utilizzare qualsiasi file immagine come trama in un gioco, deve essere creata una trama sulla GPU e i dati pixel nel file immagine devono essere caricati su quella trama.

Le GPU non supportano molte delle funzionalità supportate dai file di immagine sulle CPU. Non supportano la compressione JPG, non supportano la compressione PNG e, con particolare riferimento alle GIF, non supportano l'animazione automatica .

Quindi, anche se hai usato un file GIF, dovresti comunque scrivere la tua animazione e il tuo codice di temporizzazione. GIF non ti dà niente.


30
Si noti che le "CPU" non supportano queste funzionalità, come i browser Web e i sistemi operativi.
user253751,

7
Cosa, nessuno ha ancora scritto un browser Web GPGPU?
Camille Goudeseune,

7
@CamilleGoudeseune Ridi. Piango.
3Dave,

13

GIF ha una tavolozza di colori limitata. (255) Devi implementare anche l'analisi e l'animazione della GIF. Quindi non c'è un progresso nel tempo né negli aspetti tecnici del formato.


4
256 se non hai bisogno di trasparenza, 255 efficace altrimenti.
un CVn,

@ MichaelKjörling Sono ancora 256 con trasparenza - solo uno dei colori è designato "trasparente". Credo che le informazioni siano memorizzate nell'intestazione.
3Dave,

@DavidLively Quindi "efficace". Il colore è ancora lì, ma non può essere usato come colore opaco.
un CVn

@Kromster sì. Eliminata. Posso avere una buona matematica.
3Dave
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.