Jeu Javascript avec socket.io. Serveur en retard

Bonjour j’apprends le javascript en faisant un jeu avec socket.io et node.js. Je voudrais vous demander comment cela devrait fonctionner. Maintenant, toutes les positions des joueurs, des balles du joueur et d’autres éléments sont stockées sur le serveur et le serveur les émettent au client. Le client quand obtenir des données dessine tout à l’écran. Est-ce que tout va bien? Lorsque je déploie le fichier server.js sur le serveur node.js gratuit, je reçois des retards mais lorsque je le lance sur mon PC, je ne l’ai pas reçu. Est-ce que ce serveur est en panne?

Je peux coller le lien vers le référentiel si cela peut aider et merci pour l’aide.

Assurez-vous que le serveur sur lequel vous déployez autorise les connexions Websocket. Si elle ne peut pas utiliser websocket, socket.io bascule vers une longue interrogation via http. Cela peut causer les retards que vous rencontrez.

Vous pouvez également vérifier cela dans la console Web du navigateur en inspectant le trafic réseau et voir si les paquets sont envoyés via le websocket ou http.

Je regarde dans votre code dans le repository et c’est assez naïf. Mes principales suggestions:

1) N’envoyez pas de données mises à jour souvent. Vous essayez d’envoyer des données client toutes les 33 ms, mais c’est assez lourd même pour les jeux natifs. Envoyer des données toutes les secondes, pour l’état du monde de synchronisation, et extrapoler sur le client (visuellement partie, pas logique interne … par exemple émuler des balles volantes et des collisions, mais ne pas détruire des objects, ce sont des jobs de serveurs).

2) Envoyez uniquement de nouvelles données. Essayez d’envoyer uniquement des diffs. C’est très difficile et difficile, mais ça vaut le coup. Vous pouvez le combiner avec p. 1 et, par exemple, toutes les 5 secondes envoient un état interne et toutes les 0,5 secondes envoient un diff avec un état antérieur.

3) Envoyer uniquement des événements. Si la balle vole 50 images directement, il n’est pas nécessaire d’envoyer 50 positions. Il suffit d’envoyer “Bullet #uniqid commence à voler à partir de XY avec la vitesse +1, 0” et d’envoyer “Bullet #uniqid blowup à X, Y et aux objects détruits [liste des identifiants]”

Désolé pour mon mauvais anglais, j’espère que vous comprenez mes suggestions.