Quelle est la meilleure façon de faire face à une situation qui peut survenir, où un utilisateur dispose de deux ou plusieurs moniteurs avec différentes résolutions et intervalles de synchronisation verticale?
Cela s'appliquerait lorsqu'un jeu a un pas de temps fixe et s'exécute en mode fenêtré: si un moniteur a une fréquence d'images de 60,056 et l'autre a une fréquence d'images de 59,94, la synchronisation verticale échouera finalement à faire son travail, si le la fenêtre de jeu est déplacée de l'écran principal à un autre.
Un crénelage temporel se produira également, car le pas de temps n'est pas correctement réglé sur l'autre taux de synchronisation. Comment les jeux gèrent-ils ce problème, le cas échéant?
n
en moins deO(n)
complexité (de manière optimaleO(1)
), alors rien de ce que j'ai dit ne s'applique. Les simulations interactives n'ont cependant pas tendance à fonctionner comme ça.Réponses:
Étapes logiques de jeu ne doivent être synchronisées avec la logique d'affichage, même si vous utilisez un timestep fixe.
Considérez un gameloop comme:
Peu importe le temps que
draw()
prennent vos appels. Tant que votredo_step()
prise est inférieure àtime_per_step
, votre logique de jeu ne prendra pas de retard.la source
X
des images logiques par seconde surY
des images graphiques par seconde,X != Y
vous devrez soit faire en sorte que la logique reste fidèle aux graphiques (images répétées et supprimées), soit que les graphiques restent logiques (déchirure). L'autre alternative est de forcer la logique à s'exécuter à la vitesse des graphiques, ce qui entraînera un alias temporel. Pas de fusée ici.