Steam Multiplayer - duel & data save

Hey guys,
I’v been reading documentation and watching videos (thanks PyroDev) about how to use steam functions with unreal engines.

But there are two problems.

First one is about a duel between two players, for example, a chess game. A turn-per-turn game. I don’t want anyone to host the server, i mean, two players press “find a match”, and they both end up together, but there may be a thousands of players looking for a match, it’s not like one is hosting with particular rules, and people just scroll a server list and select one. No way, it must be transparent to the player, and he will match with someone of his level.

How am i suppose to proceed ? Since everytime i find documentation, it’s only about hosting a serveur / joining a hosted server. Should i get rid of steams services once the player is logged in, and use a dedicated server that will just share common information ? That’s what i plan to do, but i would like to know if there is another better solution.

Is there an alternative ? Like, if no players matchs your level, you become a host, waiting for another player ?

Second is, about saving data. Ok my player has X wons, Y lost, his favorite coulor is green, whatever. I need to store thoses informations. I’v found out that steams has an interface called “steamremotestorage”, which is suppose to store information just as i wish. But i’v found nowhere anyinformation about how to proceed to put information, how it is sorted, how i can get it back, it’s a huge mess in my mind so if anyone can give me clear information about how to use it with unreal engine, that’ll be super nice !

Thanks you again guys ! you’v been such a great help previously !

For your first problem: host migration is not an alternative because it’s not possible in UE4 and it’s highly unlikely it will be any time soon. Listen servers are problematic in UE4 because Epic doesn’t provide a STUN server and they don’t provide a framework to use a third party server either so listen servers end up requiring users to forward their ports, which isn’t something you’d want a typical buyer of your game to do. I wish I had a solution for this as it interests me directly as well, but at this time, I don’t have one.

For your second problem: the RemoteStorage interface is mostly deprecated. You should look into using UserStats/Inventory/UGC instead ( Steamworks API Reference (Steamworks Documentation) ). I don’t like to pitch my product to individuals as it sounds as if I’m desperate to get your money, but for this second problem in particular, I believe the UWorks plugin that I’m developing may be helpful so I recommend checking out the thread linked in my signature.

Hope this info helps!

Hey !
Thanks for anwsering both question.
I’v check your UWorks, but i couldn’t find a price ? May you tell me how much it is ?

By the way, i would like to figure how to overcome thoses 2 problems, because they are the two last difficulties i’ll meet during the conception of my project.

My list of incomings problems were :
-Authentification system
-Reconnection system
-Buy-in-game system
-Database system (information about players)

Steam provide me tools for authentification and paiement system. I’m still looking for a way to make two players communicate each other, and how to store data.
If i could have a dedicated server, that would permit me to get two players communicate, AND store a database by my own way. But i dont like this solution because i already connect the player to the steam server.

According to you, it seems like i can use UserStats/Inventory/UGC in order to store data, great news ! I didn’t check for thoses ones. I will.

But now i really would like a system where the player press a “join a match” button, wait a few seconds to find another player, and they both duel without a host/join server system.
When the match is found, both player are connected to each other, and at the end, they both go back to the lobby, and the score is sent to the database to updates informations about the player.

You keep saying “steam server” but steam has no server for you to host your game on. You will need to have the user create a game/server and wait for someone to join that session, then kill session after, or, make an actual server that clients connect to.
Steam will also not run your database of player info. Again, no actual server for you there.
Steam is simply the redirector of connections. When you use a multiplayer game on Steam, no one at Valve has an array of servers to host your titles.

Thanks you for all thoses precious information.

So how are games suppose to store data on unreal engine ? is this tool only able to create game where you just have to modify a local database to boost your stats as you wish to ? I’m 100% sure that steam can store your data since you can have the same load on two differents computer.
How can i store data with steams functions ?

Hey! Sorry for the late reply!

To answer that previous, unquoted question, UWorks is now finally on the Marketplace, but the price is acting weird. I wanted it to be 90EUR, the new portal forced to input USD so I selected 110USD (pretty much conversion rate) and for some reason, in my country it displays 118EUR.

For the new questions here: UE games use USaveGame objects to store data. The entire functionality is pretty much exposed to BP as well and from my experience they work well pretty well. In your case, they may not be the ideal solution, as they are essentially locally saved/read files with custom data and that’s all they are.

Steam can store your data, yes, with the above-mentioned interfaces. However, to avoid overflowing their sample 480 AppID, some stuff requires your own unique AppID. The process of storing data is described rather well in these links:

https://partner.steamgames.com/doc/features/inventory
https://partner.steamgames.com/doc/features/achievements
https://partner.steamgames.com/doc/features/achievements/ach_guide
https://partner.steamgames.com/doc/features/achievements/stats_guide

Hope that helps!

Woah ok, so it seems that i can continue working on my project. When i’ll be greenlighted, and have my own appID, i will be able to store data with steam ?

On Steam your only able to store the game with client itself.
If you want players to play somewhere else than their opwn side, then it’s to you to rent a dedicated server somewhere and then and only then clients will be able to connect to that 3rd patty server. There you can store saves and such that will not be on client side.