jeux de réseau P2P / apps: Bon choix pour un « battle.net » -comme serveur correspondant

StackOverflow https://stackoverflow.com/questions/1164656

  •  19-09-2019
  •  | 
  •  

Question

Je fais un jeu de réseau (1c1) où dans le jeu de son p2p -. Pas besoin d'un serveur de jeu

Cependant, pour les joueurs de pouvoir « trouver les uns les autres », sans la nécessité de coordonner dans un autre milieu et entrer des adresses IP (similaires aux jours modernes de jeux en réseau), je dois avoir une coordination / serveur correspondant.

Je ne peux pas utiliser l'hébergement web régulièrement parce que:

  • Les clients communiqueront dans UDP.
  • Par conséquent, je dois faire UDP Perforation pour pouvoir passer par le NAT
  • Il faudrait pour cela le serveur de parler UDP et le savoir IP du client et le port
  • hébergement web avec afaik régulière (php / etc) Je ne peux obtenir l'adresse IP du client et ne peut communiquer en TCP (HTTP).

Options J'examine actuellement:

  • Utiliser une solution d'hébergement où mon programme peut accepter la connexion UDP. (Recommandations?)

  • UDPonNAT semble faire cela, mais utilise GTalk et exige que chaque client ait un compte GTalk pour cela (ce qui constitue probablement une solution ne convient pas)

Toutes les idées? Merci:)

Était-ce utile?

La solution

Tout d'abord, permettez-moi de dire que cela est hors de mon domaine d'expertise, mais je me suis retrouvé très intéressé, alors je l'ai fait quelques recherches et la lecture.

Il semble que la solution la plus couramment prescrit pour NAT traversal UDP est d'utiliser un STUN serveur. Je l'ai fait quelques recherches rapides pour voir s'il y a des entreprises qui sera juste straight-up vous fournir une solution d'hébergement STUN, mais si même en avait, ils ont été enterrés dans des tas d'annonces pour l'hébergement web simple.

Heureusement, il semble qu'il ya plusieurs serveurs STUN qui sont déjà opérationnel et gratuit pour un usage public. Il y a une liste de serveurs STUN publics voip-info.org .

En outre, il y a beaucoup plus d'informations à avoir si vous explorez SO des questions taggés « nat ».

Autres conseils

Je ne vois pas d'autre choix que d'avoir un serveur dédié exécutant votre code. Les autres solutions que vous proposez sont, dirons-nous, moins optimale.

Si vous commencez petit, l'hébergement virtuel sera bien. Les coûts sont assez minimes.

Au lieu d'un serveur dédié à part entière, vous pouvez simplement obtenir un service d'hébergement partagé pas cher et que l'interface d'application avec une page PHP, qui dans les interfaces tour avec une base de données MySQL.

Par exemple, Lunarpages a un paquet de démarrage de 3 $ / mois qui comprend 5 Go d'espace et 50 Go de bande passante. Pour quelque chose de ce simple, qui est tout ce que vous avez besoin.

Il vous suffit de votre sondage d'application de la page Web pour la liste des jeux, et de soumettre une requête POST afin d'ajouter leur propre jeu à la liste.

Bien sûr, cette méthode nécessite l'apprentissage de PHP et MySQL si vous ne connaissez pas déjà. Et si vous le faites correctement, vous pouvez avoir la page PHP entrer une sorte de boucle infinie pour maintenir la connexion ouverte et juste nourrir les mises à jour du client, plutôt que l'interrogation la page toutes les quelques secondes et perdre beaucoup de bande passante. C'est ainsi en dehors de la portée de cette réponse si.

Oh, et si vous cherchez quelque chose absolument gratuit, la recherche d'un hébergeur PHP gratuit. Ceux qui existent aussi! Même avec un hôte pris en charge par la publicité, votre application pourrait simplement saisir la page et ignorer les annonces lorsque vous analysez la liste des jeux. Je sais que T35 utilisé pour être l'un de mes favoris parce que leur plan libre ne suit pas l'espace ou la bande passante ( elle limite la, pour éliminer leur service par fichier taille utilisé en tant que part des médias, mais il ne devrait pas être un problème pour les fichiers PHP). Mais bien sûr, je pense à long terme, vous serez mieux aller avec un hôte payé.

Edit: T35 dit aussi « hébergement gratuit permet à 1 domaine hébergé, tout payé offre d'hébergement de domaine illimité. » Ainsi, vous pouvez même simplement payer pour un nom de domaine et le lier à eux! Je pense à court terme, c'est votre meilleur (moins cher) pari. Bien sûr, cela est tout en supposant que vous connaissez ou êtes prêt à apprendre le PHP pour que cela se produise. :)

Il n'y a rien que chaque connexion au réseau soutiendra. STUN est probablement bonne, UPnP peut fonctionner pour cela.

Cependant, il est dit que la plupart des pare-feu peuvent être incités à passer presque tout via le port UDP 53 (DNS). Vous pourriez avoir à discuter avec le système d'exploitation de votre accès à ce port si.

En outre, consultez SIP , il est un autre protocole conçu pour ce genre de chose. Avec la popularité de la VoIP, il peut y avoir un soutien intégré décent pour cela dans plusieurs pare-feux.

Si vous êtes vraiment engagé à UDP, vous pourriez envisager également tunneling HTTP au-dessus.

Que diriez-vous briser le problème en deux parties - faire un client matcher de jeu (qui est distinct du jeu), qui peut communiquer via http à votre pas cher / partagé webhost. Tous les joueurs qui veulent utiliser la fonction de mise en correspondance de jeu utiliser. Le client jeu matcher lance alors le jeu réel avec les paramètres corrects (IP, etc etc) après avoir obtenu les informations de votre serveur.

Le jeu utilisera alors la méthode standard pour UDP punch travers NAT, etc etc, selon votre code réseau. Le jeu DonT réellement besoin de savoir quoi que ce soit sur le client matcher ou serveur matcher -. Dans le vrai sens du p2p (comme des torrents, une fois que vous pouvez obtenir votre ips de pairs, vous pouvez même vous déconnecter du suivi)

De cette façon, vos problèmes deviennent plus petits.

Une solution intermédiaire entre l'hébergement de votre propre serveur dédié et un environnement de réseau strictement P2P est le modèle Gnutella. Dans ce modèle, il y a superpeer qui agissent comme des serveurs locaux, dont les adresses IP connues et étant relié à (et donc ayant connaissance) plus de clients qu'un pair typique. Cela vous oblige encore à courir au moins un superpeer vous, mais il vous donne la possibilité de laisser d'autres personnes gèrent leurs propres superpeer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top