I’m trying to set up a multiplayer game where one player would be the host of a session as a listen server while the other players would be his client. I won’t be able to use the OSS Steam for this project.
So far I was able to built a Python master server that run on a EC2 Amazon server. Everytime someone create a new session, the master server store his IP address, and when someone try to join his session, he will be given its address, then in the blueprint, I execute the console command : “open IPADDRESS:PORT”. It’s working well in local, but unfortunately nobody can join a session over the internet.
I’ve been told that I had to forward the port on my router … But I can’t ask every person that wan’t to play my game to modify his router config. That would be such a hassle!
Is there a way for me to make this user friendly by using the “open IP” method? And if not, what would be my best option **to make session based multiplayer game without using the OSS Steam?
Most internet providers nowadays will block incoming traffic for domestic networks; may be easier if you just go with a dedicated server launched by your master server then let players join in… once the match is over you kill the server process, much like mobas are doing these days.
Your dedicated server could also be the listen server instead as well.
@OptimisticMonkey: I’m working on a non-commercial fan game : http://gamejolt.com/games/guedin-s-attack-on-titan-fan-game/117610 . I can’t sell it, and even free, I think I would be infringing the Steam user agreement if I put the game on it without owning the license.
The STUN and ICE protocol seems interesting, thank you for pointing it out. As I’m initially an artist that started to learn programming, and already had a hard time to set up a simple TCP communication and Python server, I fear that it might be a bit too much for me. Still, it won’t hurt to investigate this. Thanks!
[MENTION=434]BrUnO XaVIeR[/MENTION]: I can’t make any profit from this game, so I was looking for a cheap solution and thought that it wouldn’t be so bad to just rent a simple cloud server with a Master Server running on it, collecting and distributing IPs, but with player assuming the role of listen server.
Do you have an estimation of how much it would cost me to use a dedicated server per session, with let’s say 5 to 10 players in each of this session, with peaks at maybe 50 sessions at the same time?
FWIW you will not have to ask everyone to modify their router configs. The only machine that needs port forwarding enabled is the one running the server. Clients should be fine - at least that is what I am seeing in my testing.
@antsonthetree : That’s why my design doesn’t work, since I’m not using dedicated server, and I’m making the host of a session, a listen server as well.
Here for example my ISP will not give anyone router access.
If I’d want to host a game I would have to call them, they’d send a “cable guy” just to config a port forwarding; because it’s a domestic service.
If I’d like to host games here freely I would have to buy an enterprise connection…
So to summarize, if I want to ship a multiplayer game, without going through Steam, the easiest way for me would be to use dedicated server.
I guess I’m back to the drawing board
It doesn’t matter if you use a Dedicated Server or a Listen Server. That is mostly about how your game works.
Should a Player need to play at the same time your game is up? Then it’s a Listen Server.
Do you want to have the Server running independent from a Client (so it could be empty)? Then it’s a Dedicated Server.
Steam only supports you with a MasterServer and User Auth.
If you don’t use Steam, you can have a ServerList unless you have another Subsystem that supports MasterServers or unless you
build your own.
Without a MasterServer, no one knows where to get the ListenServer or DedicatedServer IP from.
With dedicated server I think he meant dedicated hosting where he can control himself ports to be open and avoid annoying players with that kind of stuff.
From my little understanding, I assumed the difference between a dedicated server, and a listen server was that the dedicated server doesnt bother about rendering, while the listen server is soneone that can play the game at the same time.
I think I’ll try to work a system like mentionned by Bruno Xavier, where I will have a master server managing all the session list, and launching a dedicated instance everytime someone create a new session.