Search in
Sort by:

Question Status:

Search help

  • Simple searches use one or more words. Separate the words with spaces (cat dog) to search cat,dog or both. Separate the words with plus signs (cat +dog) to search for items that may contain cat but must contain dog.
  • You can further refine your search on the search results page, where you can search by keywords, author, topic. These can be combined with each other. Examples
    • cat dog --matches anything with cat,dog or both
    • cat +dog --searches for cat +dog where dog is a mandatory term
    • cat -dog -- searches for cat excluding any result containing dog
    • [cats] —will restrict your search to results with topic named "cats"
    • [cats] [dogs] —will restrict your search to results with both topics, "cats", and "dogs"

[Bug Report] Steam Server Settings always exceed k_cbMaxGameServerTags

Hello Epic,

I was stepping through the code for OnlineSessionAsyncServerSteam.cpp today, suspecting issues with my server on steam. I was getting the same warning every time I started my server, and didn't know why. After a little bit of time I believe I have an understanding of what is going on, and I am going to try and explain it here. Bear with me.
"Server setting %s overflows Steam SetGameTags call" k_cbMaxGameServerTags is set at 128, and from what I can tell we as developers should not increase that amount. However, this limit is being surpassed every time I make a server on steam, due to what appears to be no fault of my own.
alt text
As you can see this is alot of repeated text, the OWNINGID, OWNINGNAME, and P2PADDR, which are all generated by the engine are all firstly, equal to the same value and probably don't need to be, and also are a length of characters that will quickly push us over the limit of our 128. You might think here that all of these values should be fine though, as they do not yet add up to anything close enough to 128 to be a concern.
The string they are being added to, however, is initialized with the value: BUILDID:955982468 and then appended to. So what is getting cut off of our GameTagsString value anyway? The last value in the list. The session flags.
Is there a workaround for this issue? I feel like these session flags may be of some importance in finding servers on steam, and would like to rule it out as a possible issue in our current build.
Thank you!

Product Version: UE 4.7
break8.png (40.6 kB)
more ▼

asked May 19 '15 at 10:40 PM in C++ Programming

avatar image

1.1k 41 34 76

avatar image Omberone May 28 '15 at 09:52 AM

We have the exact same issue. Please update this post if you find a solution. Are you using dedicated servers on Linux as well? http://puu.sh/i3ukf/9664db56af.png Also, it seems like the SetGameData is successful since it's 2048 in size. But the GameData is never returned http://puu.sh/i3uqB/99eb6cf368.png . We haven't found a workaround for this yet, other than direct connecting with the console. Have you tried out the matchmaking interface to see if it can find the server?

avatar image Spiris May 28 '15 at 04:12 PM

I managed to set up a hacky workaround, but I have successfully found and connected to my server now.
In the function:

void GetServerKeyValuePairsFromSession(const FOnlineSession* Session, SteamSessionKeyValuePairs& KeyValuePairs)
We now have this

KeyValuePairs.Add(STEAMKEY_OWNINGUSERNAME, TEXT("bob"));// Session->OwningUserName);

As you can see I just edited the one value in the engine code to be something ridiculous and easily findable later. I don't know if this is the solution you were looking for, but it is the one that currently works for us.

avatar image Omberone May 28 '15 at 04:53 PM

Thank you, we'll copy paste bob into our engine as well :) I'll pipe up if I find some other way to fix this. All the best!

(comments are locked)
10|2000 characters needed characters left
Viewable by all users

2 answers: sort voted first

Hello. Sorry for the inconvenience here. You can shorten all the "key names" by following the STEAMKEY_ to the #define and just keep them unique but smaller.

The ownername, id, and p2paddress are all the same right now. At least the name should really be the "server description". The id is the user id of the server, which when using steam sockets is the same as the p2p address.

Under the old way, Valve really limits the strings. There is the one GameDataString that is 2048, if I recall right. The game tags are much smaller (128 as you mention). The former isn't replicated down to the searching clients, but the latter is AFTER the initial matchmaking query. The first is used for master server side filtering, the latter for client side filtering.

The API Valve has for searching this data is really antiquated and to make it worse, the "advanced" search values that I have in that function aren't even available to your game via the SDK unless you contact Valve and ask them to turn it on. That is why I have that code disabled by default, I was never able to get them to turn it on for my test app and its barely documented.

The new lobby APIs are much cleaner/better but unfortunately standalone dedicated servers don't work with that API. So to really get the best of both worlds, you should do "complicated" matching between players via the Lobby API and then designate one of those found players to do a much simpler search for a dedicated server via the older API.

more ▼

answered May 30 '15 at 02:25 AM

avatar image

Crzyhomer STAFF
1.3k 35 26 103

avatar image Omberone May 31 '15 at 04:07 PM

So just to recap; a client should essentially host a lobby, let other clients search/matchmake for his lobby, then search for dedicated servers from that lobby?

(comments are locked)
10|2000 characters needed characters left
Viewable by all users

No. Shortening the #define STEAMKEY_... in the C++ code does nothing. The #define is only in C++ and is not the label name used in the packet.

more ▼

answered Sep 18 '18 at 02:53 AM

avatar image

SND R Keene
968 31 120 113

avatar image Omberone Sep 25 '18 at 01:36 PM

No, he means you should shorten the string, not the define.

(comments are locked)
10|2000 characters needed characters left
Viewable by all users
Your answer
toggle preview:

Up to 5 attachments (including images) can be used with a maximum of 5.2 MB each and 5.2 MB total.

Follow this question

Once you sign in you will be able to subscribe for any updates here

Answers to this question