2017-10-01 19 views
0

Je fais un jeu. Quand deux joueurs acceptent de jouer ensemble, je veux montrer un écran pendant 5 secondes en leur disant de se préparer et de commencer en même temps. Je leur envoie un signal de préparation, mais je ne sais pas quoi faire après cela pour commencer en même temps.Comment démarrer des clients ensemble dans SignalR

J'ai deux problèmes:

  • Je ne veux pas utiliser une minuterie sur le côté client pour éviter un joueur malveillant briser le processus de démarrage.
  • Je peux transmettre une heure de début en UTC, mais l'horloge du client peut ne pas être réglée correctement. Comment démarrer exactement ensemble (quelques secondes n'est pas un problème).

Ahh

Dans ma méthode ci-dessus AcceptRequest, je peux les signaler pour se préparer, puis dormir le fil pendant 5 secondes, puis envoyer un signal de départ aux clients. Est-ce ainsi que cela devrait être fait?

+0

Celui qui a voté pour fermer, comment est-ce trop large? – Blendester

Répondre

1

Assurez-vous que les 2 joueurs sont dans leur propre groupe pour cette instance du jeu.

Lancez un compte à rebours qui est envoyé à ce groupe et affichez les valeurs du compte à rebours sur votre interface utilisateur. Au lieu de dormir votre fil, juste compte à rebours et de diffuser au client un "5", "4", "3", "2", "1", "Go!" mettre à jour.

Le "Go!" pourrait être sur une méthode de diffusion séparée qui démarre réellement la correspondance.

Finalement, vous devrez faire face à des événements de déconnexion/reconnexion et comment ceux-ci affectent la correspondance.