Ultimamente ho avuto a che fare con alcuni problemi di jitter del frame rate con il mio gioco, e sembra che la soluzione migliore sarebbe quella suggerita da Glenn Fiedler (Gaffer su Games) nel classico Fix Your Timestep! articolo.
Ora, sto già utilizzando un time-step fisso per il mio aggiornamento. Il problema è che non sto facendo l'interpolazione suggerita per il rendering. Il risultato è che ottengo frame raddoppiati o saltati se la velocità di rendering non corrisponde alla frequenza di aggiornamento. Questi possono essere visivamente evidenti.
Quindi vorrei aggiungere l'interpolazione al mio gioco - e sono interessato a sapere come gli altri hanno strutturato i loro dati e il loro codice per supportare questo.
Ovviamente dovrò conservare (dove? / Come?) Due copie delle informazioni sullo stato del gioco relative al mio renderer, in modo che possano interpolare tra di loro.
Inoltre, questo sembra un buon posto per aggiungere thread. Immagino che un thread di aggiornamento possa funzionare su una terza copia dello stato del gioco, lasciando le altre due copie in sola lettura per il thread di rendering. (E 'questa una buona idea?)
Sembra che avere due o tre versioni dello stato del gioco potrebbe introdurre problemi di prestazioni e - cosa molto più importante - affidabilità e produttività degli sviluppatori, rispetto ad avere una sola versione. Quindi sono particolarmente interessato ai metodi per mitigare questi problemi.
Di particolare nota, penso, è il problema di come gestire l'aggiunta e la rimozione di oggetti dallo stato del gioco.
Infine, sembra che uno stato non sia direttamente necessario per il rendering, o sarebbe troppo difficile tracciare diverse versioni di (ad esempio: un motore fisico di terze parti che memorizza un singolo stato) - quindi sarei interessato a sapere come le persone hanno gestito quel tipo di dati all'interno di tale sistema.