J'ai lu l' article de Valve sur la mise en réseau multi-joueurs qui a été adapté du document de Yahn Bernier de 2001 intitulé Latency Compensating Methods in Client / Server In-game Protocol Design and Optimization . Je fais un jeu multi-joueurs en temps réel en utilisant un serveur node.js connecté aux clients via socket.io et j'ai quelques questions concernant les principes détaillés ci-dessous:
Interpolation d'entité
[Interpolation] empêche le mouvement nerveux que cela entraînerait normalement en tamponnant les mises à jour du serveur puis en les relisant avec les espaces interpolés en douceur entre les deux. Il peut également protéger contre les problèmes causés par la perte de paquets.
Prédiction côté client
La prédiction est la notion du client prédisant les effets des actions du joueur local sans attendre que le serveur les confirme. L'état prévu d'une entité est testé par rapport aux commandes du serveur à mesure qu'elles arrivent jusqu'à ce qu'une correspondance ou une mauvaise correspondance soit détectée.
Compensation de retard
La compensation de décalage est la notion selon laquelle le serveur utilise la latence d'un joueur pour rembobiner le temps lors du traitement de [saisie utilisateur], afin de voir ce que le joueur a vu lorsque la commande a été envoyée. En combinaison avec la prédiction, la compensation de décalage peut aider à combattre la latence du réseau au point de presque l'éliminer du point de vue d'un attaquant.
Les principes s'appliquent-ils à TCP comme ils le font à UDP et y aurait-il des différences de mise en œuvre? Je peux voir que l'interpolation d'entité n'aurait pas besoin de se protéger contre la perte de paquets mais c'est à ce sujet.
Puis-je même communiquer entre un serveur et un navigateur Web et vice-versa en utilisant UDP et Node.js?
Puisque le document a plus d'une décennie, ces principes sont-ils toujours en vigueur ou d'autres technologies sont-elles apparues?
Toute aide serait très appréciée.
Réponses:
la source
Vous devriez consulter cet article sur les jeux multijoueurs en temps réel en HTML5 publié sur le site buildnewgames.com par Sven Bergstrom, il parle des mêmes choses et il utilise Node.JS. J'ai moi-même quelque chose de similaire. Je suis juste en train de faire des recherches sur la prédiction et l'interpolation côté client, etc., avant d'essayer de résoudre le reste.
Je crois qu'il est certainement possible de le faire avec Socket.IO et Node, mais la technologie est encore nouvelle, donc il y aura peu de documentation et peu ou rien de guides sur la mise en œuvre. Je recommanderais de faire ce que je fais et d'étudier le sujet en détail dans des termes abstraits de haut niveau, puis d'essayer de le mettre en œuvre vous-même.
la source
Je crois que la technologie est à peu près la même. En outre, les concepts ne dépendent pas de la langue que vous utilisez ou de l'utilisation d'UDP ou de TCP. J'ai écrit une explication très détaillée de l'ensemble ici http://www.gabrielgambetta.com/fpm1.html , y compris de jolis diagrammes :)
la source