Je viens de me refaire une partie sur Supreme Commander, et il a l'air de fonctionner sur ce principe de "ticks constants": quand le jeu est chargé (beaucoup d'unités), les calculs s'alourdissent, et donc le jeu ralentit (mais son affichage est toujours à 60FPS, bien sûr). Dans un jeu de stratégie, ça peut être une bonne méthode, en effet, puisqu'il y a plus d'unités, donc plus de choses à faire, et avoir un jeu calculé 3x plus lentement peut être intéressant. Pour un FPS ou un jeu d'aventure (façon Spyro sur EPSX2, qui semble aussi marcher à coup de "ticks constants"), je trouve cela bien moins pratique.
C'est de l'appréciation personnelle, alors je vais plutôt soulever une autre question: si tu fais des ticks à intervalles fixes, peu importe la méthode, alors si la machine est lente, une stack de "ticks en retard" se crée. Passons sur le fait qu'elle puisse déborder. J'aimerai m'intéresser à son enpilage/dépilage: quand les ticks s'empilent, le jeu ralentit. Ca peut être intéressant suivant le type de jeu (cf plus haut). Mais quand la stack se dépile, le jeu va s'accélérer?! Là, est-ce vraiment intéressant?
L'implé en setTimeout n'aurait pas ce problème (si le tick est plus lent que la durée entre deux ticks, alors le prochain tick sera lancé dès la fin de ce tick lent). On aurait toujours un ralentissement quand le calcul du jeu s'alourdit (et donc, admettons que c'est adapté au jeu que tu veux faire), mais pas d'accélération lors du dépilage.
Donc, t'as raison sur le fait que les ticks constants peuvent être adapté au jeu à faire, mais je ne suis pas encore d'accord sur l'implémentation
C'est de l'appréciation personnelle, alors je vais plutôt soulever une autre question: si tu fais des ticks à intervalles fixes, peu importe la méthode, alors si la machine est lente, une stack de "ticks en retard" se crée. Passons sur le fait qu'elle puisse déborder. J'aimerai m'intéresser à son enpilage/dépilage: quand les ticks s'empilent, le jeu ralentit. Ca peut être intéressant suivant le type de jeu (cf plus haut). Mais quand la stack se dépile, le jeu va s'accélérer?! Là, est-ce vraiment intéressant?
L'implé en setTimeout n'aurait pas ce problème (si le tick est plus lent que la durée entre deux ticks, alors le prochain tick sera lancé dès la fin de ce tick lent). On aurait toujours un ralentissement quand le calcul du jeu s'alourdit (et donc, admettons que c'est adapté au jeu que tu veux faire), mais pas d'accélération lors du dépilage.
Donc, t'as raison sur le fait que les ticks constants peuvent être adapté au jeu à faire, mais je ne suis pas encore d'accord sur l'implémentation