Merci pour cette reponse,
En fait sur le serveur je fais tourner la meme simulation que coté client ( je pourrais d'ailleurs le faire tourner a 20fps ca changerais rien). Mais le serveur arrive a avoir un framerate constant avec le setInterval (pour 60fps ca tourne de 16 a 17ms)
Par contre coté client impossible d'avoir quelque chose de constant. J'ai l'impression que le rendu 3D provoque des ralentissements. C'est pourtant sencé etre asynchrone non?
A chaque action d'un joueur je repositionne le joueur (client) avec la position de ce meme joueur cote serveur. Mais vu que le client a des ralentissements, le perso se teleporte plus loin a chaque fois.
Ya toujours la methode barbare d'envoyer la position de chaque joueur avec un socket.emit toutes les 16ms. Ca marche mais a 10 joueurs le serveur va claquer a mon avis https://github.com/logsol/box2dweb-netwo...ronisation
Buildnewgame.com propose une loop avec rAF :
Physics.prototype.step = function (dt) {
this.dtRemaining += dt;
while (this.dtRemaining > this.stepAmount) {
this.dtRemaining -= this.stepAmount;
this.world.Step(this.stepAmount,
8, // velocity iterations
3); // position iterations
}
if (this.debugDraw) {
this.world.DrawDebugData();
}
}
Mais comme tu l'as dit le while va etre lourd. Le top serait d'arriver a quelque chose de constant avec setInterval
En fait sur le serveur je fais tourner la meme simulation que coté client ( je pourrais d'ailleurs le faire tourner a 20fps ca changerais rien). Mais le serveur arrive a avoir un framerate constant avec le setInterval (pour 60fps ca tourne de 16 a 17ms)
Par contre coté client impossible d'avoir quelque chose de constant. J'ai l'impression que le rendu 3D provoque des ralentissements. C'est pourtant sencé etre asynchrone non?
A chaque action d'un joueur je repositionne le joueur (client) avec la position de ce meme joueur cote serveur. Mais vu que le client a des ralentissements, le perso se teleporte plus loin a chaque fois.
Ya toujours la methode barbare d'envoyer la position de chaque joueur avec un socket.emit toutes les 16ms. Ca marche mais a 10 joueurs le serveur va claquer a mon avis https://github.com/logsol/box2dweb-netwo...ronisation
Buildnewgame.com propose une loop avec rAF :
Physics.prototype.step = function (dt) {
this.dtRemaining += dt;
while (this.dtRemaining > this.stepAmount) {
this.dtRemaining -= this.stepAmount;
this.world.Step(this.stepAmount,
8, // velocity iterations
3); // position iterations
}
if (this.debugDraw) {
this.world.DrawDebugData();
}
}
Mais comme tu l'as dit le while va etre lourd. Le top serait d'arriver a quelque chose de constant avec setInterval