Question réseau pour multijoueurs
Question réseau pour multijoueurs
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)
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
Version de PB : 6.00LTS - 64 bits
Re: Question réseau pour multijoueurs
j'ai codé une lib pour cela, cherche tornado sur le forum.
@++
@++
Re: Question réseau pour multijoueurs
Je ne savais pas que ça avait déjà été fait.
Je parcours actuellement ton wiki, merci pour le partage de ton travail.
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
Version de PB : 6.00LTS - 64 bits
Re: Question réseau pour multijoueurs
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 (?)
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
Version de PB : 6.00LTS - 64 bits
Re: Question réseau pour multijoueurs
Extrait du wiki :
ex :
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,Contrairement au serveur , les clients ne peuvent pas communiquer entre eux directement, tout passe par l'autorité, le serveur.
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))
Re: Question réseau pour multijoueurs
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 ^^.
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
Version de PB : 6.00LTS - 64 bits
Re: Question réseau pour multijoueurs
Je te conseil cette littérature sur le multijoueur : https://developer.valvesoftware.com/wik ... anguage=fr
Re: Question réseau pour multijoueurs
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 ?
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
Version de PB : 6.00LTS - 64 bits
Re: Question réseau pour multijoueurs
tu as la fonction getPacketSize(*p.sPacket) qui te donne la taille du paquet incluant les données internes.
Re: Question réseau pour multijoueurs
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
Version de PB : 6.00LTS - 64 bits