J'ai les débuts d'une petite partie multijoueur que j'écris en python comme exercice d'apprentissage. Actuellement, le serveur tourne à 10 fps, tandis que les clients s'exécutent à n'importe quel rythme. Cela fonctionne bien pour conserver la bande passante, mais à moins que le client ne dise au serveur quand son entrée s'est produite, toutes les entrées sont quantifiées à des intervalles de 100 ms. Comment puis-je synchroniser l'heure entre le client et le serveur afin que je puisse faire ces corrections? Un obstacle majeur ici est que je vais devoir déterminer les temps de ping et les compenser.Synchronisation de l'heure entre un simple serveur basé sur socket python et des clients
Répondre
Je suis tombé par hasard sur un excruciatingly fine blog post sur la façon de faire la physique des réseaux distribués en général (sans la prédiction client traditionnelle). Je le recommande vivement, tout comme les diapositives GDC que Fiedler a présentées il y a quelques années. Bonne chance!
Merci, je me souviens de ces billets de blog d'il y a longtemps quand la série était incomplète. Le dernier sur le réseautage est génial, et devrait aider beaucoup! – Alex
Ceci est une question très intéressante. Malheureusement, il n'y a pas de réponse facile. Vous avez juste besoin de comprendre le problème et de vous contenter d'une solution assez bonne pour votre application.
Mon premier instinct était que le Network Time Protocol (NTP) pour régler les horloges des serveurs NTP aurait résolu ce problème. L'un des problèmes abordés concerne Jitter Buffers, qui concerne packet delay variation. Ceci est élaboré dans RFC 3393; IP Packet Delay Variation Metric for IP Performance Metrics (IPPM).
Je vais regarder dans NTP, qui peut en effet fournir un aperçu de ma situation. – Alex
- 1. Écrire un serveur basé sur socket en Python, stratégies recommandées?
- 2. Serveur basé sur socket simple sur le cloud
- 3. Synchronisation d'objets entre plusieurs clients Algorithme
- 4. Options de socket Python UDP pour plusieurs clients et concurrents
- 5. Un serveur socket PHP avec des clients Flash
- 6. recevoir des données sur un socket python
- 7. Serveur Python simple
- 8. ActiveMQ: cluster basé sur un sujet simple
- 9. In house simple synchronisation des données
- 10. La connexion par socket à un serveur basé sur telnet se bloque
- 11. socket Python application client-serveur
- 12. Des suggestions sur la synchronisation des données d'un serveur à un ordinateur de bureau?
- 13. Héberger un serveur basé sur Java
- 14. Comment puis-je simuler une déconnexion de socket (sous Windows) entre un client et un serveur?
- 15. Perl IO :: problème de synchronisation de socket
- 16. Quels sont les moyens d'échanger des données chaîne entre les clients et un serveur dans Delphi?
- 17. python envoyer des données incomplètes sur socket
- 18. Meilleure méthode pour établir une communication bidirectionnelle entre les «clients» Apple iPad et un serveur Windows sur réseau local
- 19. Serveur socket avec plusieurs clients, envoyer des messages à de nombreux clients sans nuire à la vivacité
- 20. Rendre le serveur socket Python plus efficace
- 21. Comment créer un simple client IRC basé sur un navigateur?
- 22. framework de serveur socket comme Tcl "socket -server"
- 23. Python envoyer cmd sur socket
- 24. synchronisation entre la machine locale et virtuelle
- 25. datagrid simple basé sur jquery
- 26. Écoute sur le socket, besoin de se connecter à un autre socket et de communiquer
- 27. synchronisation de l'audio sur un réseau
- 28. Programmation du socket serveur client en Python
- 29. Socket C: problème avec connect() et/ou accept() entre les clients. 111: Connexion refusée
- 30. Serveur de jeu PHP, plusieurs clients TCP?
La réponse que la plupart des autres concepteurs de jeux ont trouvée est que (fondamentalement) vous n'obtiendrez jamais une bonne synchronisation. Les gros jeux comme wow et kin simulent la plupart des actions du côté client, et poussent les mises à jour dans les deux directions, comme c'est pratique. –