Je construis un jeu multijoueur en temps réel qui exécute la même boucle «physique» sur le client et le serveur. J'utilise un comportement de direction «vagabond» qui est un mouvement aléatoire essentiel. Le client et le serveur génèrent des nombres aléatoires différents lors de l'exécution des algorithmes de dérapage.
Je me demande comment je peux garder un mouvement naturellement aléatoire mais utiliser une constante qui assurera que le client et le serveur parviennent à la même conclusion.
Réponses:
Vous pouvez utiliser des graines aléatoires . Sélectionnez la même valeur 32 bits dans le serveur et le client (ou le serveur peut l'envoyer au client au démarrage). Utilisez-le comme graine pour le générateur aléatoire. Vous pouvez envoyer des graines réelles du serveur au client avec la mise à jour de l'état du jeu. Si vous ne voulez pas l'envoyer, vous devez être sûr que le client et le serveur génèrent le même nombre de nombres aléatoires par ce générateur aléatoire.
Ce que vous devez savoir avant de décider de ne pas envoyer de semences réelles au client:
la source
Si le serveur et le client sont d'accord sur la graine, la plupart des algorithmes de randomisation afficheront les mêmes valeurs.
la source