Advanced Sessions Plugin

[quote=“MrRaccoon58, post:2668, topic:30020”]

Hi everyone! I have a problem with my project. Im package my project. All four people are my friends in Steam. But i see server only 1 friends and he sees my server. The other two friends don’t see any servers? What could be the problem? Sorry for my English

The default AppID of 480 is region locked, if you want to test with multiple people make sure that everyone has their steam client set to the same download region.

Hello ,

First of all, thanks for the amazing utility and work that went in to the plugin :slight_smile:

Now, I am trying to have the loading of avatars a smooth process and I just saw after testing that (as described in the tooltip of the function) avatars aren’t always ready when requested. So, I saw that you had a section in your function for an Async return, but nothing is implemented there. I was thinking of having my own setup for an async loading with a delegate but wanted to know if you had any pointers for me seeing that you have more experience with Steamworks.

Thank you :slight_smile:

[quote=“, post:2632, topic:30020”]

Epic stores remote unique net ids in the player state struct. Get the GameState->PlayerArray each player in that list you can get the unique net id from and use it.

Should be the same as “get unique Net ID From Player State” with or in a replicated player state, right?

Any idea why calling “get unique Net ID From Player State” is giving me “ERROR BAD UNIQUE NET ID”?

  • Steam Is running of course
  • Also I can create steam sessions and find steam sessions
  • I also see the Steam Overlay
  • But I wondering why I get this message for “get unique Net ID From Player State” :frowning:
    See attachment. The nodes you see are in a player state of the local running player (listen server self in my last test case).

[quote=“TheFlow3k, post:2671, topic:30020”]

Should be the same as “get unique Net ID From Player State” with or in a replicated player state, right?

Any idea why calling “get unique Net ID From Player State” is giving me “ERROR BAD UNIQUE NET ID”?

  • Steam Is running of course
  • Also I can create steam sessions and find steam sessions
  • I also see the Steam Overlay
  • But I wondering why I get this message for “get unique Net ID From Player State” :frowning:
    See attachment. The nodes you see are in a player state of the local running player (listen server self in my last test case).

You’re not passing anything to “Get Unique Net IDFrom Player State” it doesn’t automatically pull self if it’s called inside the Playerstate, you need to give it the “Self” reference so it knows which PlayerState to use.

Thanks a lot. I thought like many BP nodes with targets it will use self as default. But you are right! thank you!
Warning or error message on compile would be nice of ue4 editor. Seems to make no sense to plug nothing into it.

[quote=“LatFoued, post:2670, topic:30020”]

Hello ,

First of all, thanks for the amazing utility and work that went in to the plugin :slight_smile:

Now, I am trying to have the loading of avatars a smooth process and I just saw after testing that (as described in the tooltip of the function) avatars aren’t always ready when requested. So, I saw that you had a section in your function for an Async return, but nothing is implemented there. I was thinking of having my own setup for an async loading with a delegate but wanted to know if you had any pointers for me seeing that you have more experience with Steamworks.

Thank you :slight_smile:

You would have to bind to the “AvatarImageLoaded_t” callback in the steam API and translate the CSteamID into a FSteamUniqueNetID for comparison. There wasn’t a good place to put a callback like that without forcing the use of a manager or class on the end user so I left it up for manual polling where it will return AsyncLoading if the image isn’t ready yet. I didn’t want it to be an actual latent node as people looping over it for a large list could cause issues then.

[quote=“TheFlow3k, post:2673, topic:30020”]

Thanks a lot. I thought like many BP nodes with targets it will use self as default. But you are right! thank you!
Warning or error message on compile would be nice of ue4 editor. Seems to make no sense to plug nothing into it.

There is a large list of player states, and you aren’t calling that from a player state anyway so a “self” reference wouldn’t make much sense there regardless.

[quote=“, post:2674, topic:30020”]

You would have to bind to the “AvatarImageLoaded_t” callback in the steam API and translate the CSteamID into a FSteamUniqueNetID for comparison. There wasn’t a good place to put a callback like that without forcing the use of a manager or class on the end user so I left it up for manual polling where it will return AsyncLoading if the image isn’t ready yet. I didn’t want it to be an actual latent node as people looping over it for a large list could cause issues then.

Thanks, I think I’ll build some sort of Async loader for them in combination with your function.

On another note, have you experienced problems using Steam’s DRM with the plugin or Multiplayer? I get the error “Executables with a TLS callback can only be wrapped in compatibility mode”

Thanks

[quote=“, post:2675, topic:30020”]

… you aren’t calling that from a player state anyway so a “self” reference wouldn’t make much sense there regardless.

In my example it was simply called in player state. So, here the “self” reference work of course. Which also was my solution, to plug self reference into it.

Any chance of getting a “ping” before being in the same session? There is a BP node to get a ping from a session, but it retrieves 9999.
Anyone get it run to get pings from servers to list pings beside the available server list?
Using steam as online subsystem

[quote=“TheFlow3k, post:2678, topic:30020”]

Any chance of getting a “ping” before being in the same session? There is a BP node to get a ping from a session, but it retrieves 9999.
Anyone get it run to get pings from servers to list pings beside the available server list?
Using steam as online subsystem

Implement the steam online authentication setup and you should have lobby ping

Hi when i package my project i cant start my game if I disable the plugins it works but only in version 4.25 please helpn btw it works in PIE

[quote=“Skiddybison5924, post:2680, topic:30020”]

Hi when i package my project i cant start my game if I disable the plugins it works but only in version 4.25 please helpn btw it works in PIE

Generate visual studio source files and compile your project before you can package it with plugins that require C++ usage. Right click an asset in the editor and select ‘show in explorer’. Locate your main project file, right click it and select ‘generate visual studio source files’. You may need to install additional Visual Studio components.

[quote=“TheFlow3k, post:2678, topic:30020”]

Any chance of getting a “ping” before being in the same session? There is a BP node to get a ping from a session, but it retrieves 9999.
Anyone get it run to get pings from servers to list pings beside the available server list?
Using steam as online subsystem

I had this same issue recently and I found that UE4’s newer Steam Sockets plugin fixes the ping issue. Now my searched lobbies show the correct ping. You’ll need to modify your ini to use Steam Sockets instead though. It’s surprisingly simple. I’ve had no issues with it.

How to setup advanced voice chat?

Hello, I look for a way to make a listen server not able to be find on find session anymore, after the maingame on the server-session is started.

I think I can make use of advanced sessions plugin here, right?
I see “filter” when investigating the nodes Advances Sessions bring with. I see “filter” in “find Sessions Advanced” and also on “Create Session”. Can I change the filter also with blueprint in a already running game? That would be good, so I can change a filter on running server so the server will be hidden on “find sessions”.

But I see no blueprint node for change the applied filter when the server is running. Is that possible? Or any other way to set a already running server “hidden” for next Clients who do a “Find Sessions Advanced”?
Thanks a lot

Edit: I think the correct term I should use is “change the server to not advertise the server anymore when game is running”. And did not see the node “Update Session”. Is update sessions the one I can use to update a session on already running multiplayer server (without people get disconnected or other side effects)?

[quote=“TheFlow3k, post:2684, topic:30020”]

Hello, I look for a way to make a listen server not able to be find on find session anymore, after the maingame on the server-session is started.

I think I can make use of advanced sessions plugin here, right?
I see “filter” when investigating the nodes Advances Sessions bring with. I see “filter” in “find Sessions Advanced” and also on “Create Session”. Can I change the filter also with blueprint in a already running game? That would be good, so I can change a filter on running server so the server will be hidden on “find sessions”.

But I see no blueprint node for change the applied filter when the server is running. Is that possible? Or any other way to set a already running server “hidden” for next Clients who do a “Find Sessions Advanced”?
Thanks a lot

Edit: I think the correct term I should use is “change the server to not advertise the server anymore when game is running”. And did not see the node “Update Session”. Is update sessions the one I can use to update a session on already running multiplayer server (without people get disconnected or other side effects)?

Yes it just updates the sessions information, you can use it for that.

[quote=“, post:2685, topic:30020”]

Yes it just updates the sessions information, you can use it for that.

Thanks , I just wanted to make sure. I dig deeper into your plugin yesterday night and want to say thank you. I have integrated it in my game project to make use of custom servername and other things which default ue4 subsystem for steam is not providing. Works nicely. Thanks a lot for your effort you put input to expose things to BP!

One question I have. I mange to get the Session result and use it with “get extra settings” and then pass it to every node (bool, string, byte) to get the Property by using a “Get Session Property **”. At the moment, I pass the “Session result” and access is several times with “get extra settings” -> “Get Session Property”. I just want to know, are all properties “saved locally” into the “session result” (or better say into session result array) after the “find sessions advanced” so the “get extra settings” -> “Get Session Property **” are just “locally executed” functions. Or are the “Session results” just links to the real online session and “get extra settings” and also each “Get Session Property **” is doing a Request to the online session to get the current value again?

[quote=“TheFlow3k, post:2686, topic:30020”]

Thanks , I just wanted to make sure. I dig deeper into your plugin yesterday night and want to say thank you. I have integrated it in my game project to make use of custom servername and other things which default ue4 subsystem for steam is not providing. Works nicely. Thanks a lot for your effort you put input to expose things to BP!

One question I have. I mange to get the Session result and use it with “get extra settings” and then pass it to every node (bool, string, byte) to get the Property by using a “Get Session Property **”. At the moment, I pass the “Session result” and access is several times with “get extra settings” -> “Get Session Property”. I just want to know, are all properties “saved locally” into the “session result” (or better say into session result array) after the “find sessions advanced” so the “get extra settings” -> “Get Session Property **” are just “locally executed” functions. Or are the “Session results” just links to the real online session and “get extra settings” and also each “Get Session Property **” is doing a Request to the online session to get the current value again?

Gettting a session property takes a SessionResult as an input, so it is a local check.

At the moment I face sporadically problems with client player state. Sometimes after running`a steam game and ServerTravel from Lobby-Level to Gameplay-Level, the Client get not player state assigned. I see it clearly in the logs because the client who has no playerstate fires not the begin play of playerstate and also when check for valid playerstate in player controller, it get the result player state is not valid. Also seconds after servertravel to new map.
Somebody had a “random” issue like that before?
It seems working fine on my local machine on stand alone testing in two instances. But get the strange behavior often after publish the game to steam and then use real steam clients and do the servertravel. :frowning: