Le mode multijoueur
CHAPITRE 11
253
Transmettre les données : la partie est en cours
Pour envoyer des données, vous utilisez un objet de type PacketWriter. Vous y entrez les
données à envoyer (un très grand nombre de types de données est supporté), puis passez
cet objet à la méthode SendData () du joueur qui envoie les données. Cette méthode
attend un autre paramètre correspondant au mode de transmission des données (voir le
tableau 11-2).
Bien évidemment, si vous utilisez une option qui garantit une bonne intégrité de la transmission (pas de perte et arrivée des données dans le bon ordre), les performances sont
altérées.
Pour recevoir des données, recourez à un objet de type PacketReader. Lorsque des
données viennent d’arriver, la propriété IsDataAvailable du joueur local (objet de type
LocalNetworkGamer) est à true.
Vous utiliserez ensuite la méthode ReceiveData () du joueur local pour récupérer ces
données. Vous devez passer à cette méthode une référence à un objet de type NetworkGamer,
qui correspond à l’expéditeur du paquet.
Ensuite, pour extraire les données du PacketReader, pensez à la méthode ReadType (), où
Type est le type des données à extraire.
La méthode Dispose() de l’objet NetworkSession sert à quitter une partie multijoueur.
Ensuite, mettez sa référence (et éventuellement celle de la collection AvailableNetwork
SessionCollection) à null.
L’exemple de code ci-dessous est une amélioration de l’exemple précédent : il vous
permet, lorsque vous appuyez sur la touche M du clavier (ou le bouton Y de la manette),
d’envoyer l’heure courante sous forme de chaîne de caractères à tous les joueurs (sauf
En pratique
Tous les joueurs (y compris l’expéditeur) reçoivent ces données.
Tableau 11-2 Méthodes d’expédition
Nom
Description
SendDataOptions.Chat
Les données envoyées correspondent à une conversation entre
joueurs.
SendDataOptions.InOrder
Les données peuvent être perdues sur le réseau, mais lorsqu’elles
arrivent, elles sont toujours dans l’ordre où elles ont été envoyées.
SendDataOptions.None
Les données peuvent être perdues et arriver dans le désordre.
SendDataOptions.Reliable
Les données ne peuvent pas être perdues, mais leur ordre d’arrivée
n’est pas garanti.
SendDataOptions.ReliableInOrder
Les données ne peuvent pas être perdues et arriveront dans le bon
ordre.
=Labat FM.book Page 253 Vendredi, 19. juin 2009 4:01 16
Précédent

- 274/366

Suivant