Qual é a melhor maneira de lidar com uma situação que pode surgir, em que um usuário tem dois ou mais monitores com resoluções diferentes e intervalos de sincronização verticais?
Isso se aplicaria quando um jogo tivesse um timestap fixo e estivesse sendo executado no modo de janela: se um monitor tiver uma taxa de quadros de 60.056 e o outro tiver uma taxa de quadros de 59.94, a sincronização vertical acabará falhando em seu trabalho, se o A janela do jogo é movida da tela principal para outra.
O aliasing temporal também ocorrerá, pois o timestep não está adequadamente sintonizado com a outra taxa de sincronização. Como os jogos geralmente lidam com esse problema, se é que existem?
n
em menos do queO(n)
complexidade (idealmenteO(1)
), nada do que eu disse será aplicável. Simulações interativas não tendem a funcionar assim.Respostas:
As etapas da lógica do jogo não precisam ser sincronizadas com a lógica de exibição, mesmo se você estiver usando um passo fixo no tempo.
Considere um gameloop como:
Realmente não importa quanto tempo suas
draw()
chamadas demoram. Contanto que vocêdo_step()
leve menos quetime_per_step
, sua lógica de jogo não ficará para trás.fonte
X
quadros lógicos por segundo emY
quadros gráficos por segundo, por exemploX != Y
, você precisará fazer a lógica manter os gráficos (quadros repetidos e descartados) ou os gráficos manter a lógica (rasgar). A outra alternativa é forçar a lógica a ser executada na velocidade gráfica, o que levará ao aliasing temporal. Nenhuma ciência de foguetes aqui.