Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 02/08/2014, à 15:22

Destroyers

[C++] coder du P2P pour un jeu

bonjour a tous !
je souhaite coder un petit jeu en ligne tout bête, mais qui fonctionnerait sans serveur... Chaque joueur serait une partie du serveur, en P2P, quoi.
mais je n'ai aucune idée de comment faire.

Déjà, est ce que la partie réseau de la SFML suffirait ? curl ? (j'aimerais me limiter à ça dans le mesure du possible)

Puis, comment chaque joueur pourrait posséder un petit bout d'information en le partageant avec tout les autres. D'ailleurs, comment trouver les autres joueurs ?

Quand un joueur se connecte, comment choisir les infos serveur qui lui seront envoyés, et s'il se déconnecte, comment être sur que les infos seront envoyées a quelqu'un d'autre pour faire tourner le jeu ?

Comment faire un système d’authentification sans serveur ?

Je suis certain que bien d'autres questions viendront au fur et à mesure de vos réponses.
merci d'avance.

Hors ligne

#2 Le 02/08/2014, à 19:15

Haleth

Re : [C++] coder du P2P pour un jeu

Je me demande si tu sais dans quoi tu t'avances..

Pour trouver les autres joueurs sans centralisation, c'est quasi impossible : les protocoles qui font ce genre de découvertes se basent sur du broadcast (ou affiliés), ce qui ne se fait pas en dehors du sous-réseau

Concernant les morceaux de trucs (de quoi, précisement, à définir) qui doivent être partagés entre les joueurs, il faut que prenne en compte une réplication complexe des données : chacun ne doit pas en être le seul propriétaire : en cas de coupure, ces données seraient perdues.

De plus, et cela rejoint l'authentification : il est difficile de protéger des données dans ce cas de figure. Même la cryptographie n'y réponds pas vraiment, entendu que chacun possèdent les données cryptés, et possèdent la clef pour les lire et écrire.

La plupart des projets qui font un peu ou tout ce que tu énonces utilisent un ou plusieurs serveurs qui gèrent la synchronisation et la distribution des données (ceph) ou un annuaire des participants (torrent), ou encore l'authentification (drm etc)

M'enfin


Ubuntu is an ancien African word which means "I can't configure Debian"

Because accessor & mutator are against encapsulation (one of OOP principles), good OOP-programmers do not use them. Obviously, procedural-devs do not. In fact, only ugly-devs are still using them.

Hors ligne

#3 Le 02/08/2014, à 21:04

Destroyers

Re : [C++] coder du P2P pour un jeu

bon bah je vais tenter d'utiliser ma raspberry pi pour faire ça alors ... mais ça me dépilait un peu car la connexion de ma box est relativement approximative...
Sinon peut être est-il possible d'utiliser quelques joueurs comme petits serveurs synchronisés pour gérer le P2P ? je suis sur qu'il y a moyen.

Si la clef de cryptage est dans l’exécutable, ce n'est toujours pas sûr ? Personne ne peut l'utiliser, si ? ...

Selon mon idée, chaque joueur aurait la carte, mais il faut en suite que tout le monde voit le déplacement d'un personnage, et c'est là que je butte: le joueur doit envoyer à tout le monde en même temps ce qu'il fait ? Ou faut-il que l'info passe de joueur en joueur ? Mais alors pour les joueurs qui reçoivent l'info en dernier, la latence sera grande... Help please T_T

Hors ligne

#4 Le 06/08/2014, à 11:18

alius

Re : [C++] coder du P2P pour un jeu

pourquoi veux tu décentraliser la chose à tout prix ?


Alius

Hors ligne

#5 Le 30/12/2014, à 21:44

Destroyers

Re : [C++] coder du P2P pour un jeu

Désolé, j'ai omis de répondre car j'ai abandonné le projet étant trop peu connaisseur du réseau... Autant commencer par du client serveur c'est plus simple wink

Mais à terme en effet si je pouvais faire du P2P ça serait sympa car:
-Plus il y a de joueur, meilleure sera le transfert des données et donc le ping sera plus court.
-Il n'y a pas de serveur a maintenir ou a héberger ! Le jeu peut tourner de manière autonome (j’entends bien qu'il faut un certain nombre de joueurs, hein)

Mais bref, voila pourquoi je trouve que cette technique est a explorer dans le domaine du jeu. Seulement en effet je me rend compte de la difficulté... Je vois mal comment un nouveau joueur peut trouver les autres puisque ce dernier ne peut pas trouver l'ip d'un autre joueur par magie. hmm

Hors ligne

#6 Le 31/12/2014, à 14:29

voxpopuli

Re : [C++] coder du P2P pour un jeu

Tu devrais trouver tout ce dont tu as besoin dans ce projet là: http://fr.wikipedia.org/wiki/RetroShare il te suffit de récupérer/adapter ses codes a tes besoins. Par contre tes joueurs vont consommer plus de ressources. A noter que des solutions WebRTC (exemple: http://peerjs.com/ ) commencent a voir le jour mais actuellement elles sont limitées (j'ai voulu monter un tchat P2P résistant a la censure mais lorsque je me suis renseigné WebRTC était limité a 12 connexions simultanées).

Destroyers a écrit :

Mais bref, voila pourquoi je trouve que cette technique est a explorer dans le domaine du jeu. Seulement en effet je me rend compte de la difficulté... Je vois mal comment un nouveau joueur peut trouver les autres puisque ce dernier ne peut pas trouver l'ip d'un autre joueur par magie. hmm

Retroshare y arrive mais peut parfois prendre du temps (pour accélérer la découverte on peut utiliser un serveur constamment en ligne et dont le boulot n'est que de servir de passerelle de découverte)

Dernière modification par voxpopuli (Le 31/12/2014, à 14:39)


« Si la destinée ne nous aide pas, nous l'aiderons nous même à se réaliser !  »
$Wold.Action.Boot();

Hors ligne