Question réseau pour multijoueurs

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Question réseau pour multijoueurs

Message par Fig »

Bonjour à tous.

Je suis confronté à la programmation réseau pour du multijoueur (8 max) via internet.

Je souhaiterai savoir comment vous vous organiseriez pour gérer un début de partie, d'un point de vue réseau...

Je n'ai des connaissances que très général sur le truc, j'ai une idée de comment faire mais comme je sais qu'il y a ici des experts dans différents domaines, je pense que ça ira plus vite en demandant.

Le truc qui bute pour moi c'est notamment la recherche des différents joueurs en début de partie.

En début de partie on peut décider de rejoindre une partie existante ou de créer une partie soit même
Autant que possible je souhaite éviter d'avoir besoin d'une armée de serveur. Le minum sera le mieux et si je peux m'en passer ça serait le top.
Mais je ne vois pas comment gérer la liste des joueurs en ligne sans un serveur, dont l'adresse serait connu, et qui les références.

Une idée ? (je ne souhaite pas de code évidemment, juste un algo/une explication du protocole de communication que vous utiliseriez)
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Question réseau pour multijoueurs

Message par G-Rom »

j'ai codé une lib pour cela, cherche tornado sur le forum.

@++
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Re: Question réseau pour multijoueurs

Message par Fig »

Je ne savais pas que ça avait déjà été fait.
Je parcours actuellement ton wiki, merci pour le partage de ton travail.
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Re: Question réseau pour multijoueurs

Message par Fig »

Si je comprends bien il s'agit d'un réseau en étoile autour du serveur...

J'ai quelques questions toutefois. la première:

Admettons que je souhaite envoyer un paquet du client A au client B.

Dans l'instruction clientAddPacket(*packet, *client) qui envoie le paquet au serveur, *client est le client qui envoie ou le client destination ?
Si c'est le client qui envoie, il faut que mon paquet encapsule dans le paquet le client destination, pour que le serveur puisse renvoyer le message au client destination (?)
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Question réseau pour multijoueurs

Message par G-Rom »

Extrait du wiki :
Contrairement au serveur , les clients ne peuvent pas communiquer entre eux directement, tout passe par l'autorité, le serveur.
Tu envois donc ton paquet ou serveur , qui lui renverra au client que tu aura choisi ( via ton protocole de communication ) , tu tag un paquet avec des valeurs spéciale,
ex :

Code : Tout sélectionner

Structure message
  destination.l
  info.l
EndStructure


*packet = createPacket()

MonMessage.message
MonMessage\destination = 1 ; joueur 1
MonMessage\info = 255      ; ce que tu veut...

pushPacket(*packet, @MonMessage, #TYPE_STRUCT, SizeOf(MonMessage)) 
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Re: Question réseau pour multijoueurs

Message par Fig »

OK, ça c'est clair.

Ca me semble pas mal du tout.
Je vais faire quelques essais et voir ce que ça donne...
Je dois gérer une "pulsation" qui donne le rythme de jeu entre tous les joueurs et synchroniser tout ça avec les lags... On va rigoler, je sens ^^.
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Question réseau pour multijoueurs

Message par G-Rom »

Je te conseil cette littérature sur le multijoueur : https://developer.valvesoftware.com/wik ... anguage=fr
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Re: Question réseau pour multijoueurs

Message par Fig »

Il semble que tu te serve du protocole UDP.
Gère tu la perte de paquet et les doublons ?

tu indiques qu'udp peut transmettre un maximum de 2048octets mais que certains sont utilisés donc qu'on ne peut pas se servir de l'intégralité des 2048octets.
Peux tu donner une idée du nombre d'octets libre ?
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Question réseau pour multijoueurs

Message par G-Rom »

tu as la fonction getPacketSize(*p.sPacket) qui te donne la taille du paquet incluant les données internes.
Avatar de l’utilisateur
Fig
Messages : 1176
Inscription : jeu. 14/oct./2004 19:48

Re: Question réseau pour multijoueurs

Message par Fig »

On ne va pas se mentir, la grosse galère pour les tests c'est de faire ça sur plusieurs pc... Hyper HC c'est bien joli mais pfff installer windows... pffff
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Répondre