Bonjour,
Voilà, donc j'ai un problème un peu ennuyeux, j'ai un jeu qui utilise TCP et UDP sur un port défini.
Le problème, c'est que ça empêche la possibilité de créer plusieurs serveurs sur une seule machine.
J'ai donc rajouté la possibilité de choisir le port.
En TCP, aucun problèmes.
J'ai donc essayé de me passer de l'UDP, mais impossible, la masse de donnée (a raison de 1Socket toutes les 0.2 ou 0.5s seulement) fait complètement planter le jeu, et les échanges TCP qui fonctionnaient jusque là se retrouvent buggués.
Exemple, en combat tour par tour, l'échange de donnée prends beaucoup de temps alors que je suis en local et que ça prends normalement moins d'une demi seconde et les clients répetent plusieurs fois la même action parce qu'ils ne reçoivent plus correctement les données, et pour finir a la fin du combat je découvre qu'un des 2 joueurs ne peut même plus échanger de données (en rapport avec le problème de socket dont j'ai déjà parlé? Surcharge? → J'ai bien trouvé un bug là dessus pourtant dans mon précédent sujet..).
Bref.
Donc voici mon problème:
Je voudrais ouvrir un port UDP fixe sur le serveur de jeu, jusque là, pas de problèmes.
Ensuite, le problème est du coté client: J'aimerais que le client puisse recevoir des données en UDP sans que j'aie besoin d'ouvrir de ports sur le routeur (comme en TCP). Je suppose que c'est possible puisque les jeux comme Red Eclipse ou Nexuiz (et tous les autres quelque soit l'OS) doivent utiliser l'UDP vu la masse de données qu'ils ont a envoyer et sans avoir besoin de configurer de ports sur le routeur, c'est pas pratique pour le joueur.
J'ai regardé du coté de l'UPNP si c'était faisable, mais je n'arrive pas a l'utiliser et j'ai l'impression de me tromper de voie puisque les jeux comme Red Eclipse ne l'utilisent pas. (Source: Panneau de config de ma Freebox)
Est ce que quelqu'un pourrait m'expliquer comment permettre au client de récupérer des données sans ouvrir de port sur son routeur?
Existe t-il un moyen de se connecter a un serveur comme en TCP pour ne pas avoir besoin de faire ça?
Est t-il possible de recevoir des données coté client sans écouter de port (comme en TCP coté client)?
Merci