2009-12-12 3 views
6

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

+0

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. –

Répondre

1

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!

+0

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

0

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).

+0

Je vais regarder dans NTP, qui peut en effet fournir un aperçu de ma situation. – Alex

Questions connexes