Bonjour,
J'aimerais avoir votre avis sur le sujet suivant.
Pour un jeu en html5 avec un moteur physique (box2Dweb ) ainsi qu'une partie graphique (Canvas ou webgl) , quelle serait la loop la plus optimisee?
(Sachant que box2Dweb fonctionne mieux si son world.step est executé avec un framerate constant.)
J'ai globalement lu de tout, le setInterval() est pas mal utilisé. Je l'ai testé et ce n'est pas concluant. ( Placé en parallele avec une autre loop graphique basee sur requestanimationframe ) Resultat : graphiquement c'est fluide, les animations tournent a la vitesse max. En revanche le moteur 2D subit de gros ralentissements : en fesant des tests de temps entre deux frames, sur un setInterval a 60fps, on obtient des deltas allant de 8ms a parfois plus de 35. Du grand n'importe quoi :p (Mon code est peut etre pas le plus optimisé aussi)
Bref j'ai aussi vu l'utilisation de requestanimationframe pour la loop du moteur physique. C'est certainement une bonne idee puisque les perfs de cette fonction sont meilleures je crois. En revanche, il faut gerer sois meme la boucle pour un framerate constant.
Je pensais donc a regrouper les deux boucles en une seule fonctionnant avec requestanimationframe avec un ordre suivant
-Step du moteur physique
-Traitement
-Rendu graphique
Mais ca me fait un peu peur car le framerate supposé constant du moteur physique pourrait etre ralenti par le rendu graphique. Et a partir du moment ou le moteur physique ralentis, on a plus les meme positions entre la simulation coté serveur et celle coté client.
Voila, qu'en pensez vous?
J'aimerais avoir votre avis sur le sujet suivant.
Pour un jeu en html5 avec un moteur physique (box2Dweb ) ainsi qu'une partie graphique (Canvas ou webgl) , quelle serait la loop la plus optimisee?
(Sachant que box2Dweb fonctionne mieux si son world.step est executé avec un framerate constant.)
J'ai globalement lu de tout, le setInterval() est pas mal utilisé. Je l'ai testé et ce n'est pas concluant. ( Placé en parallele avec une autre loop graphique basee sur requestanimationframe ) Resultat : graphiquement c'est fluide, les animations tournent a la vitesse max. En revanche le moteur 2D subit de gros ralentissements : en fesant des tests de temps entre deux frames, sur un setInterval a 60fps, on obtient des deltas allant de 8ms a parfois plus de 35. Du grand n'importe quoi :p (Mon code est peut etre pas le plus optimisé aussi)
Bref j'ai aussi vu l'utilisation de requestanimationframe pour la loop du moteur physique. C'est certainement une bonne idee puisque les perfs de cette fonction sont meilleures je crois. En revanche, il faut gerer sois meme la boucle pour un framerate constant.
Je pensais donc a regrouper les deux boucles en une seule fonctionnant avec requestanimationframe avec un ordre suivant
-Step du moteur physique
-Traitement
-Rendu graphique
Mais ca me fait un peu peur car le framerate supposé constant du moteur physique pourrait etre ralenti par le rendu graphique. Et a partir du moment ou le moteur physique ralentis, on a plus les meme positions entre la simulation coté serveur et celle coté client.
Voila, qu'en pensez vous?