Mihawk Posted October 24, 2014 Report Posted October 24, 2014 (edited) Voilà ! Comme je l'ai dis dans ma présentation, j'ai besoin d'aide sur un point qui m'est complètement étranger... afin de mieux situer le problème laissez moi vous expliquer. Je créer un serveur actuellement d'un jeu (S4L) qui me génère pas mal de problèmes. Dont un, qui pour être réglé, nécessite l'ouverture normalement manuelle des ports sur le routeur (le fait qu'on ne voit personne une fois en jeu .. oui c'est problématique..) Une fois les ports ouvert, les joueurs sont de nouveau visible, c'est pourquoi j'essai de les ouvrir directement sur le launcher (qui reste ouvert, mais caché, une fois le jeu lancé, jusqu'à la fermeture du jeu), pour que grâce à L'upnp, je puisse commander l'ouverture de ces ports. Hors, moi sur mon routeur, quand je vais dans le menu pour l'upnp, je vois que rien ne change (donc je ne sais absolument pas si l'ouverture est bien prise en compte) Voilà le bout de programme qui me sert à les ouvrir (normalement): private void DeviceFound(object sender, DeviceEventArgs args) { INatDevice device = args.Device; device.CreatePortMap(new Mapping(Protocol.Udp, 6112, 6112)); device.CreatePortMap(new Mapping(Protocol.Udp, 38915, 38915)); device.CreatePortMap(new Mapping(Protocol.Udp, 38917, 38917)); device.CreatePortMap(new Mapping(Protocol.Udp, 28002, 28002)); device.CreatePortMap(new Mapping(Protocol.Udp, 28008, 28008)); device.CreatePortMap(new Mapping(Protocol.Udp, 28013, 28013)); device.CreatePortMap(new Mapping(Protocol.Tcp, 6112, 6112)); device.CreatePortMap(new Mapping(Protocol.Tcp, 38915, 38915)); device.CreatePortMap(new Mapping(Protocol.Tcp, 38917, 38917)); device.CreatePortMap(new Mapping(Protocol.Tcp, 28002, 28002)); device.CreatePortMap(new Mapping(Protocol.Tcp, 28008, 28008)); device.CreatePortMap(new Mapping(Protocol.Tcp, 28013, 28013)); foreach (Mapping portMap in device.GetAllMappings()) { // label1.Text = "Test ouverture du port" +(portMap.ToString()); } IPAddress externalIP = device.GetExternalIP(); } private void DeviceLost(object sender, DeviceEventArgs args) { INatDevice device = args.Device; } Voilà, en espérant avoir été assez clair sur le problème rencontré .. (et surtout, est-ce que le programme est correct, et que c'est juste moi qui ai un soucis avec cette ouverture ? au niveau de mon routeur qui pourtant accepte l'upnp, j'ai orange avec un livebox pour la fibre optique.) Edited October 24, 2014 by Mihawk Quote
vfrz Posted October 24, 2014 Report Posted October 24, 2014 Tu peu ouvrir les ports depuis ta livebox Quote
Mihawk Posted October 24, 2014 Author Report Posted October 24, 2014 (edited) Le but est que les joueurs ne le fassent pas d'eux même, car certains ne savent pas comment faire, et c'est pour faciliter l'arrivée des joueurs sur le serveur.. :/ Mais merci du conseil, même si je le savais déjà et que ça ne fait pas avancer mon problème ^^ Edited October 24, 2014 by Mihawk Quote
vfrz Posted October 24, 2014 Report Posted October 24, 2014 Il faut que les ports du joueur soit ouvert ? Quote
AlexMog Posted October 24, 2014 Report Posted October 24, 2014 D'une manière générale, c'est le SERVEUR et non pas le CLIENT qui doit ouvrir ses ports. Prenons l'exemple de Skype, ou encore Starcraft, qui utilisent tous deux un système de serveur puis p2p: Le client se connecte au serveur, le serveur transfert les données aux autres clients. Ainsi: CLIENT <===> SERVEUR <====> CLIENT Si un client doit communiquer directement avec un autre client, il doit passer par un routeur manuel (comme l'exemple du serveur ci-dessous), ou bien, ouvrir le port du client, et le faire se comporter comme un serveur/client. Pour cela, et vue que le client se comporte comme un serveur, il devra ouvrir ses ports. Pour ouvrir tes ports, tout dépends de ton FAI . J'espère que ca t'aidera! AlexMog. Quote
Mihawk Posted October 24, 2014 Author Report Posted October 24, 2014 Il faut que les ports du joueur soit ouvert ? Oui, car l'émulateur est très .. "trash" je dirais (et malgré les bidouilles que j'ai pu faire dedans, ça ne règle toujours pas ce problème de visibilité) Mais le fait est que actuellement, c'est le seul problème que je peux noter, côté émulateur (le fait que les joueurs ne se voient pas) C'est pourquoi, je souhaite trouver un moyen simple pour les joueurs de venir jouer, sans passer par l'ouverture de port manuelle (j'aimerais vraiment l'éviter, mais si je dois en venir à là, je ferais en sorte qu'ils soient prévenu..) D'une manière générale, c'est le SERVEUR et non pas le CLIENT qui doit ouvrir ses ports. Prenons l'exemple de Skype, ou encore Starcraft, qui utilisent tous deux un système de serveur puis p2p: Le client se connecte au serveur, le serveur transfert les données aux autres clients. Ainsi: CLIENT <===> SERVEUR <====> CLIENT Si un client doit communiquer directement avec un autre client, il doit passer par un routeur manuel (comme l'exemple du serveur ci-dessous), ou bien, ouvrir le port du client, et le faire se comporter comme un serveur/client. Pour cela, et vue que le client se comporte comme un serveur, il devra ouvrir ses ports. Pour ouvrir tes ports, tout dépends de ton FAI . J'espère que ca t'aidera! AlexMog. J'ai bien compris ce que tu m'as dis, et merci pour ça ! Donc si je comprend bien, si jamais les joueurs ne se voient pas, c'est dû à un problème côté serveur et non côté client ? Donc soit je règle le problème côté serveur, et tout le monde est content, soit je trouve un moyen d'ouvrir les ports sur le launcher grâce à l'upnp (car j'ai pas l'impression que ça fonctionne), ou les joueurs doivent les ouvrir d'eux même si je ne trouve pas comment faire ? J'espère que quelqu'un saura quand même me répondre sur l'upnp mais merci en tout cas pour la réponse AlexMog Quote
davydavek Posted October 26, 2014 Report Posted October 26, 2014 (edited) Regarde dans la section tuto .NET de CG3, page deux je crois, il y a un tutoriel a propos d'UPNP, écrit par Evaelis.(edit: voici un lien direct http://www.cheat-gam3.com/3-cours-pour-debutant/upnp-ouvrir-et-fermer-un-port-146966/) Sinon, je suppose que tu utilises l’émulateur créer par Pinki et sa team l’année dernière, si c'est le cas personnellement je te conseille d'abandonner, le code est vraiment écrit a la va-vite, et les créateurs n'en ont plus rien a foutre Après il y a Exetra & Darsh (je suppose que tu en as entendu parler) qui étaient entrain de travailler sur un émulateur tout-neuf (en C# aussi), mais je n'ai pas de nouvelles d'eux depuis quelques mois. Edited October 26, 2014 by davydavek Quote
Mihawk Posted October 26, 2014 Author Report Posted October 26, 2014 Même si ils en développaient un nouveau, jamais ils ne le partageraient (l'émulation sur ce jeu n'avance pas, car personne n'a l'esprit tourné vers le progrès, donc le partage de connaissance au moins.) Après, oui c'est vrai que c'est très mal écrit, mais actuellement c'est la seule base que nous avons, donc on va s'en servir et tenter de l'améliorer (même si c'est pas gagné..) C'est dommage, car je suis certain que ce jeu a de l'avenir dans l'émulation privé.. Quote
davydavek Posted October 26, 2014 Report Posted October 26, 2014 C'est vrai que c'est dommage, mais en même temps je les comprends, si tu regardes la maturité de la majorité des gens sur ce jeu ... les gens s'amusent a ruiner des parties avec leur godmod et tout autre cheat abusif, mais des qu'il s'agit de comprendre comment ces choses la fonctionnent, il n'y a plus personne. Tu est entrain de travailler sur l’émulateur seul ? Quels changement y as tu apporté ? Pour être honnête je m'y intéressait pas mal avant, donc pourquoi pas m'y remettre ! Quote
Azad Posted October 26, 2014 Report Posted October 26, 2014 Une partie émulation de S4L vous intéresserait-elle ? Quote
AlexMog Posted October 28, 2014 Report Posted October 28, 2014 Oui, car l'émulateur est très .. "trash" je dirais (et malgré les bidouilles que j'ai pu faire dedans, ça ne règle toujours pas ce problème de visibilité) Mais le fait est que actuellement, c'est le seul problème que je peux noter, côté émulateur (le fait que les joueurs ne se voient pas) C'est pourquoi, je souhaite trouver un moyen simple pour les joueurs de venir jouer, sans passer par l'ouverture de port manuelle (j'aimerais vraiment l'éviter, mais si je dois en venir à là, je ferais en sorte qu'ils soient prévenu..) J'ai bien compris ce que tu m'as dis, et merci pour ça ! Donc si je comprend bien, si jamais les joueurs ne se voient pas, c'est dû à un problème côté serveur et non côté client ? Donc soit je règle le problème côté serveur, et tout le monde est content, soit je trouve un moyen d'ouvrir les ports sur le launcher grâce à l'upnp (car j'ai pas l'impression que ça fonctionne), ou les joueurs doivent les ouvrir d'eux même si je ne trouve pas comment faire ? J'espère que quelqu'un saura quand même me répondre sur l'upnp mais merci en tout cas pour la réponse AlexMog S4L n'utilise pas de système P2P il me semble, du coup, tout passe par le serveur, si il n'y a pas de joueurs, je pense pas que ça vienne de tes joueurs. Quote
Azad Posted October 28, 2014 Report Posted October 28, 2014 Je rajoute au passage qu'une section S4L a été ouverte, j'attends des suggestions si vous souhaitez organiser ça de façon spécifiques (sous-forum, etc...). Quote
Mihawk Posted October 31, 2014 Author Report Posted October 31, 2014 (edited) S4L n'utilise pas de système P2P il me semble, du coup, tout passe par le serveur, si il n'y a pas de joueurs, je pense pas que ça vienne de tes joueurs. Ce soucis est pourtant bien présent :/ mais il est fort probable que ça vienne du serveur, vu qu'il n'est pas totalement au point je dirais. Tu est entrain de travailler sur l’émulateur seul ? Quels changement y as tu apporté ? Pour être honnête je m'y intéressait pas mal avant, donc pourquoi pas m'y remettre ! Non sur le projet dans sa globalité je ne suis pas seul (fort heureusement) Pour l'instant je n'ai que vaguement touché à l'émulateur, j'attend d'avoir un niveau plus que convenable en C# qui n'est pas un langage que je connais parfaitement (même si j'aimerais bien) D'ailleurs, pour en revenir à la demande d'aide (qui était quand même le but de ce sujet xD) mon problème est résolu, en fait, ça ne marchait pas car je n'initialisais pas l'ouverture des ports au démarre du programme .. forcément.. donc le code que je donne en haut marche ^^' et tout le monde se voit ! c'est merveilleux ! x) Edited October 31, 2014 by Mihawk Quote
AlexMog Posted October 31, 2014 Report Posted October 31, 2014 Ce soucis est pourtant bien présent :/ mais il est fort probable que ça vienne du serveur, vu qu'il n'est pas totalement au point je dirais. Non sur le projet dans sa globalité je ne suis pas seul (fort heureusement) Pour l'instant je n'ai que vaguement touché à l'émulateur, j'attend d'avoir un niveau plus que convenable en C# qui n'est pas un langage que je connais parfaitement (même si j'aimerais bien) D'ailleurs, pour en revenir à la demande d'aide (qui était quand même le but de ce sujet xD) mon problème est résolu, en fait, ça ne marchait pas car je n'initialisais pas l'ouverture des ports au démarre du programme .. forcément.. donc le code que je donne en haut marche ^^' et tout le monde se voit ! c'est merveilleux ! x) Il y a un moyen de tester ça. Essaye de te connecter sur un réseau local avec 2 clients sur ton serveur. Si vous vous voyez, c'est que ça ne viens pas forcément du serveur. Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.