Advanced Sessions Plugin

We cant seem to get any of our server information to show up on our server buttons, and we can get the Update session to work it seems to kill the session.

our Game instance with Host Join and Update server

and our server button that pulls the information stored in the server session

Also we don’t know why but when ever a client leaves a session and they search for a new game to search goes on forever, and if we use destroy session and on success have them goto the main menu the success seams to never happen and they don’t change to the main menu. I’m not sure what to do about that or if it has anything to do with the adv sessions. Also if the server closes the session the same thing happens for all that clients, where they cant find any new games and/or the search just runs forever. We are calling the destroy session from our UMG i dont know if that might be a bad place to call them. As the server if you call destroy session and change level on success it works, takes a bit and send the server back to the main menu, but the clients still have the issue that there server search goes on endlessly.

Also in game every once and a while some clients will get dropped. I have no clue if that is something that we did or if its just a bad connection, but I figure I would ask. here is the net error I found in the log:

[2015.08.20-03.28.43:758][223]LogNet: UChannel::ReceivedSequencedBunch: Bunch.bClose == true. ChIndex == 0. Calling ConditionalCleanUp.
[2015.08.20-03.28.43:758][223]LogNet: UChannel::CleanUp: [GameNetDriver] [Tiki_InGame_Controller_C_12] [Tiki_InGame_Controller_C_12]. ChIndex == 0. Closing connection.
[2015.08.20-03.28.43:758][223]LogNet: UNetConnection::Close: Name: SteamNetConnection_4, Driver: GameNetDriver SteamNetDriver_1, PC: Tiki_InGame_Controller_C_12, Owner: Tiki_InGame_Controller_C_12, Channels: 290, RemoteAddr: 76561198076780155:7777, Time: 2015.08.20-03.28.43
[2015.08.20-03.28.43:758][223]LogNet: UChannel::Close: Sending CloseBunch. ChIndex == 0. Name: ControlChannel_4
[2015.08.20-03.28.43:758][223]LogNet:Warning: Network Failure: GameNetDriver[ConnectionLost]: Your connection to the host has been lost.
[2015.08.20-03.28.43:758][223]LogNet: NetworkFailure: ConnectionLost, Error: ‘Your connection to the host has been lost.’
[2015.08.20-03.28.43:759][223]LogNet:Warning: FObjectReplicator::UpdateUnmappedObjects: Connection->State == USOCK_Closed
[2015.08.20-03.28.43:759][223]LogNet:Warning: FObjectReplicator::UpdateUnmappedObjects: Connection->State == USOCK_Closed
[2015.08.20-03.28.43:759][223]LogNet:Warning: FObjectReplicator::UpdateUnmappedObjects: Connection->State == USOCK_Closed
[2015.08.20-03.28.43:759][223]LogNet:Warning: FObjectReplicator::UpdateUnmappedObjects: Connection->State == USOCK_Closed
[2015.08.20-03.28.43:759][223]LogNet:Warning: FObjectReplicator::UpdateUnmappedObjects: Connection->State == USOCK_Closed
[2015.08.20-03.28.43:759][223]LogNet:Warning: FObjectReplicator::UpdateUnmappedObjects: Connection->State == USOCK_Closed
[2015.08.20-03.28.43:795][224]LogNet: Browse: /Game/Maps/Tiki_StartMenuLevel?closed
[2015.08.20-03.28.43:795][224]LogNet: Failed; returning to Entry
[2015.08.20-03.28.43:799][224]LogLoad: LoadMap: /Game/Maps/Tiki_StartMenuLevel?closed
[2015.08.20-03.28.43:799][224]LogNet: World NetDriver shutdown SteamNetDriver_1 [GameNetDriver]
[2015.08.20-03.28.43:799][224]LogNet: DestroyNamedNetDriver SteamNetDriver_1 [GameNetDriver]
[2015.08.20-03.28.43:800][224]LogExit: GameNetDriver SteamNetDriver_1 shut down

Any help would be great and thank you!

Only the host should be calling destroy session, clients should simply be “open level” to the main menu to disconnect. Server searches will also fail if you are currently in/hosting a session. I would assume that if the server is trying to shutdown that it should send a notice to the clients first so that they can leave prior to it by going back to the menu.

Also if you are using the test steam app id of 480 when you are searching you will see a lot of junk lobbies in the log. It is because other devs are hosting lobbies, these results won’t show on your session results array as the servers “build” is different but it will still pass “OnSuccess”, I’m not sure if this is the correct behavior since people share 480 but for someone with their own steam ID it won’t matter anyway.

The winsock error is not because of my plugin btw I can’t help with it.

I am double checking the server info functions but last test they were fine.

Edit yeah tested across two computers on steam and they were able to host and get session properties fine. However you are right the update session node is killing the session on steam right now, i’ll look into it.

I hope that in 4.9 is changed something about plugins and blueprint only projects,I see a lot of people having the same issue with other plugins ( I can,t package my project ).

By the way I made C++ project and I still can’t package my project.

Yeah man I wish I could help you but besides forgetting the folder that one upload I haven’t ever had a problem packaging projects.

That is super fantastic, thank you very much.


Can you please take a look at saving player data to Steam cloud,it is not possible with blueprints (I think) :smiley:

I got it working with 4.9,I am now able to package my project :slight_smile: :slight_smile:

Nice, have a dozen or so changes / additions currently for the plugin. When I finish the voice part i’ll probably upload. Might be a couple of days yet until I get around to it though.

(Added a way to cancel searching for servers btw, it is pretty useful.)

08/27/2015 - Updated the 4.8 and 4.9 Plugins

Sessions Interface Changes:

  • Find Sessions Node: Changed to initially filter on Subsystem side, please let me know if it is working for your implementation, can be further filtered with the filter sessions node.
  • Update Session Node: Added a bool for dedicated servers (Can not find anything wrong with my implementation that would be causing sessions to drop, may be an engine issue for 4.8)
  • End Session Node: Added, needs further testing, should be CLIENT side version of Destroy Session.
  • Cancel Find Session Node: Added, cancels searching for sessions
  • Modify or Add Setting Node: Added, pass in new/modified settings and a settings array and will either replace or add the settings and output a new modified array of settings

Voice Interface - Added:

Added Many Voice Interface blueprint nodes, due to hardware limitations for the past few days I have not fully tested everything in this, it follows the interfaces exactly though and should work, please let me know if any issues are found.

The Advanced Friends Game Instance now also has a Delegate called when a player in the session’s talking state is changed. There are two new booleans for the Game Instance to control whether it registers and fires off the new delegate.

The Advanced Friends Interface now also includes a callback delegate that can be called from the Advanced Friends Game Instance when a players talking state is changed.

Setup Info

  1. Extract the file inside the zip to ProjectFolder/Plugins/AdvancedSessions (create /Plugins/AdvancedSessions if you have to).

  2. Copy the example blueprint file into your content folder if you want to look at the examples.

  3. To get the ability to join a session when it has been accepted through the online subsystem you will need to derive your GameInstance from AdvancedFriendsGameInstance so that it will bind the Delegate, you can also use the added event in the graph. This game instance also enables accessing the “PlayerTalkingStateChanged Delegate”.

  4. If you want the AcceptedSessionInvite event to be called in the owning player controller you also need to add the AdvancedFriendsInterface to the blueprint for your player controller.

  5. To use Push To Talk, bind a key to “Stop Networked voice / Start networked voice” for a local player.

  6. To enable voice in your build copy the following settings (From Epic Answerhub).

New Voice Interface Related Blueprint Functions - They all have info text on hover in editor to explain them briefly

Note The engine by default registers players for talking on game join currently, I have included the functions in case someone needs to do more advanced features.

This is fantastic, downloading now and will report back later. Thanks!!!

amazing update! Will test it out when 4.9 gets released :slight_smile:

Can you update this plugin for 4.9?

Doing it right now, these releases always come out when I am at the office and it takes awhile to download.

Thanks :smiley:

Ok, version compiled under the full release of 4.9 is uploaded.

Also I’ve been looking into cloud support through blueprints but haven’t decided how I would handle the file interface. It would be best to support any current file I/O nodes to prevent implementation overlap but i’m not sure if it is possible to do cleanly. When I get some more time to sit down and go over it i’ll decide on the direction I want to take it in and then flesh it out.

Thank you for the fast update :smiley:

That is awesome! :slight_smile:

@mordentral - going to test this puppy out this weekend. Finally got some free time. Thanks for this awesome contribution. 8-}

Ok, I did some digging regarding the UpdateSessions function as I had checked and it should be working without a problem. After updating a session when searching for the session in the steam susbsystem it finds it but then throws “Unable to parse session result” in the log and fails out. I’ll so some digging and see where it fails and why and try to fix it.

Edit Also did a complete test of the voice functions last night and they all seem perfectly fine so far.

Re-Edit Ok found the problem, when updating the session it is overwriting the Unique Build ID that filters sessions of different builds and passing 0. I modified the BP Update function to manually get the current build ID when modifying the settings and pass it in now. Got a clean test of modifying a session and still being able to find it in the server list.

Also added the unique build id output to “GetSessionSettings” and have a “GetCurrentUniqueBuildID” node for comparison or passing as a setting to display and a “GetUniqueBuildID” to get the build id of a session result.

Currently these aren’t all that useful for filtering as the steam subsystem does not pass sessions with different builds to you anyway, however if you want to display it in the server or something or as a build identifier then you can with these nodes, otherwise ignore that they exist. I am keeping them mainly in case I need them to test something later on.

I’ll have the 4.9 download updated in a little bit, i’ll hold off on updating the 4.8 unless someone specifically asks me too.

– Uploaded –

Maybe I’m thinking about this incorrectly (wouldn’t be the first time) but wouldn’t it make a lot of sense to expose the created session as a return value pin on the Create Session node for storing and eventual passing into Invite events/functions?

I’m taking my first awkward steps with the Steam OSS here, but I’m not seeing a native handler for receiving an invite, so I’m a little lost as to where the receiving controller would get the Session struct to pass into a Join node. Again, good chance I’m looking at it incorrectly here, or overlooking something silly, but I’m kinda stymied right now. Anyone?