Steam Dedicated Servers - General Questions

I’ve been reading up on how to make a steam game where the players can browse and connect to a list dedicated servers running instances of the same map/level. Here is what I’ve learned so far. If anyone could help and elaborate or correct me on these different points I would be very thankful!

1. I want the game to be downloadable from steam.
The game has to be built to work with steam using AdvancedSteamSessions. I have to register with steam and get a Steam ID which costs around 100$.

https://partner.steamgames.com/doc/gettingstarted

2. There are multiple dedicated servers that host the same map/level.
From what I understand steam does not provide any servers. I would have to rent a server to host the levels for instance amazon ec2: Amazon EC2
as shown in tutorial: Unreal Engine 4 - Virtual Server Machine - YouTube

3. The player can browse and join existing servers that are currently hosted.
There are many tutorials on how to make a server browse and join server with AdvancedSteamSessions which I have followed previously. The only difference would be to use the server IP and not my own PCs. Would the player be able to join a game without opening any ports though?

4. Player data is saved by the servers and can be accessed by all servers.
I have used “Save Game to Slot” previously for single player games. Would the online system work in a similar way and could multiple sessions read/write to the same slot stored on the server?

  1. Any game can be uploaded to Steam even if it doesn’t use SteamWorks.
  2. Yes if you want dedicated servers you should provide them yourself.
  3. The session framework also works with dedicated servers. The dedicated server calls RegisterServer in GameSession with whatever settings you like. The server needs port forwarding setup while the clients just needs to allow inbound and outbound communication to the application from the server remote port. The Client uses an ephemeral local port.
  4. Persistent data would normally be saved to a separate service where it can be retrieved from later using a Player or Server ID.

Thanks alot for your answer Garner! For the 4. point, could you elaborate more or give an example how this would be done? Or an example of such a service so I can research?

There are many 3. party services like PlayFab by Microsoft, GameSpark by Amazon, and Firebase by Google that can save persistent info about a user.

You could also do it yourself on your own cloud server if you got the knowledge to set it up

The server or client authenticates with the 3. party service and sends and receives info.

Thanks again Garner! I will try out Gamespark!