Advanced Sessions Plugin

BTW guys, for those having problems, Yun-Kun’s tutorial was a huge help in getting some of this stuff working.

I was also able to get Steam join/hosting working by setting up a separate Steam account and hosting/joining from two separate accounts.

  • I noticed that if you enable voice without a microphone connected, it will crash the engine. I think it’s probably an engine bug though.
1 Like

[QUOTE=n00854180t;512808]
BTW guys, for those having problems, Yun-Kun’s tutorial was a huge help in getting some of this stuff working.

I was also able to get Steam join/hosting working by setting up a separate Steam account and hosting/joining from two separate accounts.

  • I noticed that if you enable voice without a microphone connected, it will crash the engine. I think it’s probably an engine bug though.

You probably want to use the “Is Headset Present” node first with that, but yeah the engine shouldn’t crash entirely it is definitely an engine bug.

1 Like

Ah well the problem I had was that it crashed on startup, before even hitting play or anything.

1 Like

Welp…that sounds like an issue, hope it is fixed soon.

Looks like it is already being reported.

1 Like

Is it working in blueprint only projects in UE 4.11?

1 Like

This does not find dedicated server sessions, they show up in steam server browser but Find Advanced Sessions node returns 0 results. No Firewall and all ports open.

1 Like

[QUOTE=Blue man;513677]
Is it working in blueprint only projects in UE 4.11?

Yes? It has been for awhile, you still need a compiler though for packaging.

[QUOTE=ChrisMackle;513875]
This does not find dedicated server sessions, they show up in steam server browser but Find Advanced Sessions node returns 0 results. No Firewall and all ports open.

It can find dedicated sessions from what I understand, others have done it and I had to change some settings to get it to work for them. That being said I haven’t tested it myself as I’ve never needed a dedicated server for a project yet.

1 Like

[QUOTE=;514922]

It can find dedicated sessions from what I understand, others have done it and I had to change some settings to get it to work for them. That being said I haven’t tested it myself as I’ve never needed a dedicated server for a project yet.

I tried it on a fresh project and it still cant find the dedicated server so in it’s current state it can’t find them. Do you know what settings were changed to make it work?

1 Like

Yup I also could not do dedicated server with this plugin. But luckily for me we decided to go listen server only (during development) then maybe we add dedicated.

1 Like

[QUOTE=ChrisMackle;515362]
I tried it on a fresh project and it still cant find the dedicated server so in it’s current state it can’t find them. Do you know what settings were changed to make it work?

Edit Someone appears to have put up a Git with a modified version of my plugin that gets dedicated servers working, he never reported in here so i’ll download it and run a file diff and see what he changed.

*Re-edit, and it was a one IF change, wish he had just mentioned it here so I could have fixed it earlier

1 Like

Ok, when I moved to server sided filtering I accidentally defaulted to search for presence enabled sessions so it didn’t work with dedicated servers. I’ve added an enum for searching for servers that will turn off/on searching with presence enabled as is appropriate to what you want to do.

AllServers : Find all servers
ClientServersOnly : Find all servers that are hosted with presence enabled
DedicatedServersOnly : Find all servers that are hosted without presence enabled

I’ll patch it and release a new build with that fixed, let me know if it works for you then, specifically the “All servers” enum. I can’t test with dedicated but I want to know if that actually pulls all results or just the dedicated.

Edit ?Fixed? Version uploaded

1 Like

[QUOTE=;515572]
Ok, when I moved to server sided filtering I accidentally defaulted to search for presence enabled sessions so it didn’t work with dedicated servers. I’ve added an enum for searching for servers that will turn off/on searching with presence enabled as is appropriate to what you want to do.

AllServers : Find all servers
ClientServersOnly : Find all servers that are hosted with presence enabled
DedicatedServersOnly : Find all servers that are hosted without presence enabled

I’ll patch it and release a new build with that fixed, let me know if it works for you then, specifically the “All servers” enum. I can’t test with dedicated but I want to know if that actually pulls all results or just the dedicated.

Edit ?Fixed? Version uploaded

Ok I tried all the options and it still wont find a dedicated server, “allservers” and “dedicatedserversonly” dont find anything at all, only “ClientServersOnly” actually finds anything.
Edit Il check build ID’s of the server and client tomorrow if I have time incase thats also part of the issue

1 Like

[QUOTE=ChrisMackle;516786]
Ok I tried all the options and it still wont find a dedicated server, “allservers” and “dedicatedserversonly” dont find anything at all, only “ClientServersOnly” actually finds anything.
Edit Il check build ID’s of the server and client tomorrow if I have time incase thats also part of the issue

Ok, All servers setting I was unsure about working with steam, that is unfortunate that it doesn’t behave logically. It’s getting to the point where I might have to just compile a dedicated build myself and figure out the solution as I can’t be entirely sure what is my plugin and what is other peoples implementations. I’ll take another look at it today.

Edit I set it to no longer set the SEARCH_PRESENCE var at all for dedicated servers now (instead of setting it to false), removed the All_Servers enum option and have re-uploaded, this version Should work?

1 Like

[QUOTE=;517000]
Ok, All servers setting I was unsure about working with steam, that is unfortunate that it doesn’t behave logically. It’s getting to the point where I might have to just compile a dedicated build myself and figure out the solution as I can’t be entirely sure what is my plugin and what is other peoples implementations. I’ll take another look at it today.

Edit I set it to no longer set the SEARCH_PRESENCE var at all for dedicated servers now (instead of setting it to false), removed the All_Servers enum option and have re-uploaded, this version Should work?

Just tried, still no luck Client Servers is fine dedicated still returns nothing

Could just be an issue my end its impossible to tell

1 Like

[QUOTE=ChrisMackle;517664]
Just tried, still no luck Client Servers is fine dedicated still returns nothing

Could just be an issue my end its impossible to tell

I’ll just end up compiling a dedicated server to test, the current join node is the exact same functionality as the one that was “fixed” for the one guys personal use and I can’t be sure what your problem is at this point.

Honestly with how many issues dedicated servers have for people in general (outside of the plugin) I should have done it awhile ago and tried to simplify things for people.

1 Like

How does the get friends avatar node work?

Do I need to pass it my controller and their steam ID? Does it only work for friends or can I use this for anybody match made with? Also, do you happen to know what the sizes of the avatars are?

1 Like

[QUOTE=GotSomePills;519243]
How does the get friends avatar node work?

Do I need to pass it my controller and their steam ID? Does it only work for friends or can I use this for anybody match made with? Also, do you happen to know what the sizes of the avatars are?

You know, technically that function shouldn’t require a player controller, I must have been attempting to get it within the player context or got carried away since all of the subsystem ones do, but that is unnecessary (using the current version you will still need to pass any valid controller as it checks it). I will change it to not require one after I test with dedicated servers.

I kept the name as “GetFriendAvatar” but it is a generic call to get the avatar, for that matter there are actually a lot of generic steam specific functions that are accessible but aren’t used in the UE4 subsystem at large (clan chat, played with counts, clan info, name history, ect).

The way it works is that it requests the information for all of your friends list and it gets download asynchronously afterwards, to get the avatar or information for a non friend you should use the node “RequestSteamFriendInfo” first to the player for retrieval. It will download the smallest to the largest avatar sizes so when I was doing it I would check for validity on the avatars from largest and fall back to smaller sizes until it found a valid avatar (or not).

The size definitions are below but it is a UTexture2D so you should also be able to pull them from that:


	// gets the small (32x32) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set
	virtual int GetSmallFriendAvatar( CSteamID steamIDFriend ) = 0;

	// gets the medium (64x64) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set
	virtual int GetMediumFriendAvatar( CSteamID steamIDFriend ) = 0;

	// gets the large (184x184) avatar of the current user, which is a handle to be used in IClientUtils::GetImageRGBA(), or 0 if none set
	// returns -1 if this image has yet to be loaded, in this case wait for a AvatarImageLoaded_t callback and then call this again
	virtual int GetLargeFriendAvatar( CSteamID steamIDFriend ) = 0;

The get user information is declared as:


	// requests information about a user - persona name & avatar
	// if bRequireNameOnly is set, then the avatar of a user isn't downloaded 
	// - it's a lot slower to download avatars and churns the local cache, so if you don't need avatars, don't request them
	// if returns true, it means that data is being requested, and a PersonaStateChanged_t callback will be posted when it's retrieved
	// if returns false, it means that we already have all the details about that user, and functions can be called immediately
	virtual bool RequestUserInformation( CSteamID steamIDUser, bool bRequireNameOnly ) = 0;

I’ll remove the player controller requirement from the RestSteamFriendInfo and GetSteamAvatar nodes and next upload will be without them.

1 Like

Maybe 2 dumb questions. When I’ve created the session. How do I store a reference to it or get a reference to it as the hosting player? It seems like I create a session then instantly open the level and if I want my next level to show information about the session I don’t know how to get it. Also, this video uses your library and suggests that I have separate custom client events that call server events to do the execution of the advanced session events. Do the advanced session blueprint events need to be called from events only running on the server? I can’t figure why this would need to be the case.

1 Like

Hello, I have not tried the plugin yet because I’m not home yet but I have 2 questions.

#1. Epic’s create session node allows, just like yours, to enter an in of the max. Public connections. Now here’s my issue. My game makes use of local multiplayer so one connection could add 4 players to the game. 2 clients, 1 with 3 local players and 1 with 2 local players registers as 2 players. The join session node is fired per local player and that works, ingame the locaa players are recognized as separate player controllers. But the server browser still says 2 players. Again, I do not know if you have this or not.

My question basically boils down to: Does this plugin support a mix between local and online multiplayer?

#2. Say I have made a pregame lobby and my party of 8 want to join a server found in the server browser. Is there a way to make the partyleader( host) merge his session into an existing one, making all players in his session join the new session and destroy his old?

1 Like

Does this plugin happen to expose the Steam unique player ID to blueprints or would I have to still write a C++ class to do that?

Nevermind I found it and it’s the Steam64 version :slight_smile:

1 Like