Ultimamente, tenho lidado com alguns problemas de tremor na taxa de quadros no meu jogo, e parece que a melhor solução seria a sugerida por Glenn Fiedler (Gaffer nos jogos) no clássico Fix Your Timestep! artigo.
Agora - já estou usando um intervalo de tempo fixo para minha atualização. O problema é que não estou fazendo a interpolação sugerida para renderização. O resultado é que eu recebo quadros duplicados ou ignorados se minha taxa de renderização não corresponder à minha taxa de atualização. Estes podem ser visualmente visíveis.
Então, gostaria de adicionar interpolação ao meu jogo - e estou interessado em saber como outras pessoas estruturaram seus dados e códigos para dar suporte a isso.
Obviamente, precisarei armazenar (onde? / Como?) Duas cópias das informações do estado do jogo relevantes ao meu renderizador, para que ele possa interpolar entre eles.
Além disso - este parece ser um bom lugar para adicionar threads. Eu imagino que um encadeamento de atualização possa funcionar em uma terceira cópia do estado do jogo, deixando as outras duas cópias como somente leitura para o encadeamento de renderização. (Isso é uma boa ideia?)
Parece que ter duas ou três versões do estado do jogo pode apresentar desempenho e - muito mais importante - problemas de confiabilidade e produtividade do desenvolvedor, em comparação com apenas uma versão. Portanto, estou particularmente interessado em métodos para mitigar esses problemas.
De nota particular, eu acho, é o problema de como lidar com adicionar e remover objetos do estado do jogo.
Finalmente, parece que algum estado não é diretamente necessário para a renderização ou seria muito difícil rastrear versões diferentes de (por exemplo: um mecanismo de física de terceiros que armazena um único estado) - então eu estaria interessado em saber como as pessoas lidaram com esse tipo de dados em um sistema como esse.