Jump to content

Soucis d'ouverture de port via mon launcher.


Recommended Posts

Posted (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 by Mihawk
Posted (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 by Mihawk
Posted

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.

Posted

 

 

Il faut que les ports du joueur soit ouvert ?   :huh:

 

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 :)

Posted (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 by davydavek
Posted

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é.. 

Posted

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 !

Posted

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.

Posted

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...).

Posted (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 by Mihawk
Posted

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.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...