Je fais un shmup pour iPhone et j'essaie de décider quel type de boucle de jeu utiliser. Je veux utiliser un pas de temps semi-fixe ou un pas de temps entièrement fixe.
Avec un pas de temps semi-fixe, je ferai zéro ou plusieurs appels de mise à jour (FIXED_INTERVAL) suivis d'un appel de mise à jour (dt) où dt <= FIXED_INTERVAL par boucle de jeu. Si je comprends bien, les inconvénients de cette méthode sont que ma logique de mise à jour physique (dt) sera plus difficile à programmer car je dois essentiellement assumer une variable dt pour chaque mise à jour. Et puis j'ai aussi entendu dire que chaque manche de mon jeu sera légèrement différente car les valeurs à virgule flottante ne sont pas les mêmes à chaque fois.
Ensuite, avec un pas de temps entièrement fixe, je fais zéro ou plusieurs appels de mise à jour (FIXED_INTERVAL) suivis d'un appel d'interpolation (dt / FIXED_INTERVAL) où dt <FIXED_INTERVAL par boucle de jeu.
Il semble donc que la grande décision que je dois vraiment prendre soit: est-ce que je veux relever le défi d'implémenter une mise à jour (dt) avec une variable dt ou est-ce que je veux relever le défi d'implémenter l'interpolation?
Maintenant, d'après ce que j'ai lu, la majorité des gens disent d'utiliser entièrement fixe et de faire l'interpolation. Mais quand je pense à l'implémentation de l'interpolation, il semble que je serais beaucoup plus complexe qu'une mise à jour (dt) avec une variable dt. En effet, si j'utilise l'interpolation, je dois me souvenir à la fois de l'état précédent et de l'état actuel. Donc, si je veux utiliser l'interpolation, je dois proposer une couche supplémentaire d'indirection qui résume des états de jeu individuels. Alors qu'avec un pas de temps semi-fixe où je n'ai pas à utiliser d'interpolation, je n'ai pas à proposer une abstraction d'état de jeu car il n'y a toujours qu'un seul état de jeu et ce sont simplement les "tableaux globaux" qui représentent mes ennemis, et l'ennemi balles etc.
Alors, quel est le choix le plus pratique: dois-je l'implémenter semi-fixe sachant que mes mises à jour physiques pourraient se compliquer avec la variable dt. Ou dois-je utiliser entièrement fixe et essayer de proposer une abstraction de l'état du jeu afin de pouvoir suivre l'état précédent et l'état actuel afin d'effectuer une interpolation?