Advanced Sessions Plugin

[QUOTE=Cronk;478506]
Is this already compatible with 4.10.3? First post only states 4.10.2 as of now

I haven’t tried it, but my guess is yes. So far I haven’t had weird issues with any plugins in a patch release. Usually in major.minor.patch releases the changes don’t break things. But I could be wrong.

1 Like

[QUOTE=;478948]
I haven’t tried it, but my guess is yes. So far I haven’t had weird issues with any plugins in a patch release. Usually in major.minor.patch releases the changes don’t break things. But I could be wrong.

I guessed so and it seems to be working just fine, but I haven’t had much time to test it yet and do not know much about the internals of the plugin. Maybe someone else does know something that could go wrong? If not, I’m fine

1 Like

[QUOTE=Cronk;478960]
I guessed so and it seems to be working just fine, but I haven’t had much time to test it yet and do not know much about the internals of the plugin. Maybe someone else does know something that could go wrong? If not, I’m fine

I just rebuilt and uploaded it for 4.10.3, generally the subsystem backend doesn’t change even in major engine patches (let alone hotfixes) so it should be fine. The only real issue is that if you are using a blueprint only project then it will not load the plugin as it was built for a different version (even if the code is the same).

If you have even a single c++ file in your project then it should just recompile for you and be fine and you won’t even need to download version only updates.

[QUOTE=kuboxus;478509]
I have one problem. When I’m using your plugin and trying to package project I get “Unknown Error”. When I disable it everything is fine. I don’t have any idea how to make it work.

This is usually caused by you having the folder structure wrong, the plugin packages fine by itself (all of my projects have it just in case I want any of the features and I package them daily). Although if you don’t have a compiler installed than it might have issues packaging the plugin as it compiles it for release.

Granted you shouldn’t be getting an Unknown Error, it should be telling you the problem, do you have any text in your output log from packaging?

1 Like

[QUOTE=;478999]
This is usually caused by you having the folder structure wrong, the plugin packages fine by itself (all of my projects have it just in case I want any of the features and I package them daily). Although if you don’t have a compiler installed than it might have issues packaging the plugin as it compiles it for release.

Granted you shouldn’t be getting an Unknown Error, it should be telling you the problem, do you have any text in your output log from packaging?

MainFrameActions: Packaging (Windows (64-bit)): Project.Build: ********** BUILD COMMAND STARTED **********
MainFrameActions: Packaging (Windows (64-bit)): BuildCommand.Execute: ERROR: BUILD FAILED
MainFrameActions: Packaging (Windows (64-bit)): Program.Main: ERROR: AutomationTool terminated with exception:
MainFrameActions: Packaging (Windows (64-bit)): Program.Main: ERROR: Exception in AutomationUtils.Automation: You are attempting to compile on a machine that does not have a supported compiler!
MainFrameActions: Packaging (Windows (64-bit)): Stacktrace: w AutomationTool.UE4Build.Build(BuildAgenda Agenda, Nullable1 InDeleteBuildProducts, Boolean InUpdateVersionFiles, Boolean InForceNoXGE, Boolean InUseParallelExecutor, Boolean InForceNonUnity, Boolean InForceUnity, Boolean InShowProgress, Dictionary2 PlatformEnvVars)
MainFrameActions: Packaging (Windows (64-bit)): w Project.Build(BuildCommand Command, ProjectParams Params, Int32 WorkingCL)
MainFrameActions: Packaging (Windows (64-bit)): w BuildCookRun.DoBuildCookRun(ProjectParams Params)
MainFrameActions: Packaging (Windows (64-bit)): w BuildCommand.Execute()
MainFrameActions: Packaging (Windows (64-bit)): w AutomationTool.Automation.Execute(List1 CommandsToExecute, CaselessDictionary1 Commands)
MainFrameActions: Packaging (Windows (64-bit)): w AutomationTool.Automation.Process(String] CommandLine)
MainFrameActions: Packaging (Windows (64-bit)): w AutomationTool.Program.MainProc(Object Param)
MainFrameActions: Packaging (Windows (64-bit)): w AutomationTool.InternalUtils.RunSingleInstance(Action`1 Main, Object Param)
MainFrameActions: Packaging (Windows (64-bit)): w AutomationTool.Program.Main()
MainFrameActions: Packaging (Windows (64-bit)): ProcessManager.KillAll: Trying to kill 0 spawned processes.
MainFrameActions: Packaging (Windows (64-bit)): Program.Main: AutomationTool exiting with ExitCode=Error_Unknown
MainFrameActions: Packaging (Windows (64-bit)): Domain_ProcessExit
MainFrameActions: Packaging (Windows (64-bit)): copying UAT log files…
MainFrameActions: Packaging (Windows (64-bit)): RunUAT.bat ERROR: AutomationTool was unable to run successfully.
MainFrameActions: Packaging (Windows (64-bit)): BUILD FAILED
PackagingResults:Error: Error Unknown Error

These are the last lines of output log.

1 Like

[QUOTE]
Program.Main: ERROR: Exception in AutomationUtils.Automation: You are attempting to compile on a machine that does not have a supported compiler!

You need to install a compiler, even if you aren’t using c++ for anything it is actually pretty core to the engine still when using plugins.

1 Like

[QUOTE=;477510]
There is no current built in way to do that in the engine with voice chat and they are overhauling the audio system so it would be a waste of effort to try and make one.

Right now the only real solution is a hard off/on.

BTW if you’re interested in spatialized audio, I looked into it and basically it needs two things right now: one is changing AllowSpatialization flag to true in the voice chat’s code for creating the audiocomponent, and then setting it up so that the audiocomponent can get the transform of the player when needed for the spatialization.

1 Like

[QUOTE=;479361]
You need to install a compiler, even if you aren’t using c++ for anything it is actually pretty core to the engine still when using plugins.

I have Visual Studio installed, do I need to set something up to make it work with UE? Or do I need to install different program?

1 Like

[QUOTE=n00854180t;479474]
BTW if you’re interested in spatialized audio, I looked into it and basically it needs two things right now: one is changing AllowSpatialization flag to true in the voice chat’s code for creating the audiocomponent, and then setting it up so that the audiocomponent can get the transform of the player when needed for the spatialization.

I was about to say how altering the code for base voice modules isn’t exactly plugin compatible (it isn’t) but I had an idea mid typing. Its not the cleanest thing ever but I might be able to hack together something that forces access to the audio component, we’ll see if it pans out. **Edit Scratch that, all of the voice engine implementations are linked privately in their modules, they are not plugin accessible. It would be wayyyyy too wonky to get it working at this point.
**

[QUOTE=kuboxus;479498]
I have Visual Studio installed, do I need to set something up to make it work with UE? Or do I need to install different program?

4.10 and up require Visual Studio 2015 now to compile.

1 Like

First thanks for an awesome Plugin.

I am having a lot of problems trying to get dedicated server to work with Steam. Right now the dedicated server shows up in steam’s server browser but Advanced Find Server node cant find the server at all. The only warning I am getting from the logs is that “session callback player state not found”. However I am not sure what I am doing wrong. Can anyone help with this or verify that they got dedicated servers to work with Steam? I am using presence false and dedicated true.

1 Like

[QUOTE=kuboxus;479498]
I have Visual Studio installed, do I need to set something up to make it work with UE? Or do I need to install different program?

If you have VS2015 installed you may need to modify the install to include all the things it needs. I can’t remember the names of what all needs to be installed… C++ components? A google search should answer that.

1 Like

[QUOTE=;479641]
I was about to say how altering the code for base voice modules isn’t exactly plugin compatible (it isn’t) but I had an idea mid typing. Its not the cleanest thing ever but I might be able to hack together something that forces access to the audio component, we’ll see if it pans out. **Edit Scratch that, all of the voice engine implementations are linked privately in their modules, they are not plugin accessible. It would be wayyyyy too wonky to get it working at this point.
**

4.10 and up require Visual Studio 2015 now to compile.

Ah yeah true, true - it’s definitely an engine level thing. I don’t really think twice about modifying that stuff for my own purposes, but it’s not very friendly to package for others’ use.

1 Like

Hi I am trying to package for linux and I get an issue due to the plugin.


MainFrameActions: Packaging (Linux): CommandUtils.Run: Run: Took 1.9522655s to run MSBuild.exe, ExitCode=0
MainFrameActions: Packaging (Linux): CommandUtils.Run: Run: I:\UE4.10\Engine\Binaries\DotNET\UnrealBuildTool.exe MyProject4 Linux Development  "C:\Users\joshu\Documents\project\project Game\MyProject4.uproject"  -remoteini="C:\Users\joshu\Documents\project\project Game" -noxge -generatemanifest -NoHotReloadFromIDE
MainFrameActions: Packaging (Linux): UnrealBuildTool: Performing full C++ include scan (building a new target)
MainFrameActions: Packaging (Linux): CommandUtils.Run: Run: Took 1.8491922s to run UnrealBuildTool.exe, ExitCode=0
MainFrameActions: Packaging (Linux): UE4Build.PrepareManifest: Copied UBT manifest to I:\UE4.10\Engine\Programs\AutomationTool\Saved\Logs\UBTManifest.0.xml
MainFrameActions: Packaging (Linux): CommandUtils.Run: Run: I:\UE4.10\Engine\Binaries\DotNET\UnrealBuildTool.exe MyProject4 Linux Development  "C:\Users\joshu\Documents\project\project Game\MyProject4.uproject"  -remoteini="C:\Users\joshu\Documents\project\project Game" -noxge -NoHotReloadFromIDE -ignorejunk
MainFrameActions: Packaging (Linux): UnrealBuildTool: Creating makefile for MyProject4 (UnrealBuildTool.exe is newer)
MainFrameActions: Packaging (Linux): UnrealBuildTool: Performing 3 actions (4 in parallel)
MainFrameActions: Packaging (Linux): UnrealBuildTool: [1/3] Compile AdvancedFriendsLibrary.cpp
MainFrameActions: Packaging (Linux): UnrealBuildTool: In file included from C:\Users\joshu\Documents\project\project Game\Plugins\AdvancedSessions\Source\AdvancedSessions\Private\AdvancedFriendsLibrary.cpp:4:
MainFrameActions: Packaging (Linux): UnrealBuildTool: In file included from ThirdParty/Steamworks/Steamv136/sdk/public\steam/steam_api.h:13:
MainFrameActions: Packaging (Linux): UnrealBuildTool: In file included from ThirdParty/Steamworks/Steamv136/sdk/public\steam/isteamclient.h:14:
MainFrameActions: Packaging (Linux): UnrealBuildTool: ThirdParty/Steamworks/Steamv136/sdk/public\steam/steamtypes.h(99,9) :  error: 'ARRAY_COUNT' macro redefined -Werror,-Wmacro-redefined]
MainFrameActions: Packaging (Linux): UnrealBuildTool: #define ARRAY_COUNT(COUNTER) CLANG_ATTR( "array_count:" #COUNTER ";" )
MainFrameActions: Packaging (Linux): UnrealBuildTool:         ^
MainFrameActions: Packaging (Linux): UnrealBuildTool: I:\UE4.10\Engine\Source\Runtime/Core/Public/Templates\UnrealTemplate.h(119,9) :  note: previous definition is here
MainFrameActions: Packaging (Linux): UnrealBuildTool: #define ARRAY_COUNT( array ) (sizeof(ArrayCountHelper(array))+0)
MainFrameActions: Packaging (Linux): UnrealBuildTool:         ^
MainFrameActions: Packaging (Linux): UnrealBuildTool: C:\Users\joshu\Documents\project\project Game\Plugins\AdvancedSessions\Source\AdvancedSessions\Private\AdvancedFriendsLibrary.cpp(105,4) :  error: unknown type name 'BYTE'
MainFrameActions: Packaging (Linux): UnrealBuildTool:                         BYTE *oAvatarRGBA = new BYTE[Width * Height * 4];
MainFrameActions: Packaging (Linux): UnrealBuildTool:                         ^
MainFrameActions: Packaging (Linux): UnrealBuildTool: C:\Users\joshu\Documents\project\project Game\Plugins\AdvancedSessions\Source\AdvancedSessions\Private\AdvancedFriendsLibrary.cpp(105,28) :  error: unknown type name 'BYTE'
MainFrameActions: Packaging (Linux): UnrealBuildTool:                         BYTE *oAvatarRGBA = new BYTE[Width * Height * 4];
MainFrameActions: Packaging (Linux): UnrealBuildTool:                                                 ^
MainFrameActions: Packaging (Linux): UnrealBuildTool: 3 errors generated.
MainFrameActions: Packaging (Linux): UnrealBuildTool: -------- End Detailed Actions Stats -----------------------------------------------------------
MainFrameActions: Packaging (Linux): UnrealBuildTool: ERROR: UBT ERROR: Failed to produce item: C:\Users\joshu\Documents\project\project Game\Plugins\AdvancedSessions\Binaries\Linux\libMyProject4-AdvancedSessions.a
MainFrameActions: Packaging (Linux): UnrealBuildTool: Total build time: 8.49 seconds
MainFrameActions: Packaging (Linux): CommandUtils.Run: Run: Took 8.5263603s to run UnrealBuildTool.exe, ExitCode=5
MainFrameActions: Packaging (Linux): BuildCommand.Execute: ERROR: BUILD FAILED
MainFrameActions: Packaging (Linux): Program.Main: ERROR: AutomationTool terminated with exception:
MainFrameActions: Packaging (Linux): Program.Main: ERROR: Exception in AutomationUtils.Automation: Command failed (Result:5): I:\UE4.10\Engine\Binaries\DotNET\UnrealBuildTool.exe MyProject4 Linux Development  "C:\Users\joshu\Documents\project\project Game\MyProject4.uproject"  -remoteini="C:\Users\joshu\Documents\project\project Game" -noxge -NoHotReloadFromIDE -ignorejunk. See logfile for details: 'UnrealBuildTool-2016.02.24-20.07.16.txt' 
MainFrameActions: Packaging (Linux): Stacktrace:    at AutomationTool.CommandUtils.RunAndLog(String App, String CommandLine, String Logfile, Int32 MaxSuccessCode, String Input, ERunOptions Options, Dictionary`2 EnvVars) in I:\UE4.10\Engine\Source\Programs\AutomationTool\AutomationUtils\ProcessUtils.cs:line 800
MainFrameActions: Packaging (Linux):    at AutomationTool.CommandUtils.RunUBT(CommandEnvironment Env, String UBTExecutable, String CommandLine, String LogName, Dictionary`2 EnvVars) in I:\UE4.10\Engine\Source\Programs\AutomationTool\AutomationUtils\UBTUtils.cs:line 63
MainFrameActions: Packaging (Linux):    at AutomationTool.UE4Build.BuildWithUBT(String ProjectName, String TargetName, Unre
MainFrameActions: Packaging (Linux): alTargetPlatform TargetPlatform, String Config, String UprojectPath, Boolean ForceMonolithic, Boolean ForceNonUnity, Boolean ForceDebugInfo, Boolean ForceFlushMac, Boolean DisableXGE, String InAddArgs, Boolean ForceUnity, Dictionary`2 EnvVars) in I:\UE4.10\Engine\Source\Programs\AutomationTool\AutomationUtils\UE4Build.cs:line 345
MainFrameActions: Packaging (Linux):    at AutomationTool.UE4Build.Build(BuildAgenda Agenda, Nullable`1 InDeleteBuildProducts, Boolean InUpdateVersionFiles, Boolean InForceNoXGE, Boolean InUseParallelExecutor, Boolean InForceNonUnity, Boolean InForceUnity, Boolean InShowProgress, Dictionary`2 PlatformEnvVars) in I:\UE4.10\Engine\Source\Programs\AutomationTool\AutomationUtils\UE4Build.cs:line 1459
MainFrameActions: Packaging (Linux):    at Project.Build(BuildCommand Command, ProjectParams Params, Int32 WorkingCL) in I:\UE4.10\Engine\Source\Programs\AutomationTool\Scripts\BuildProjectCommand.Automation.cs:line 114
MainFrameActions: Packaging (Linux):    at BuildCookRun.DoBuildCookRun(ProjectParams Params) in I:\UE4.10\Engine\Source\Programs\AutomationTool\Scripts\BuildCookRun.Automation.cs:line 209
MainFrameActions: Packaging (Linux):    at BuildCommand.Execute() in I:\UE4.10\Engine\Source\Programs\AutomationTool\AutomationUtils\BuildCommand.cs:line 35
MainFrameActions: Packaging (Linux):    at AutomationTool.Automation.Execute(List`1 CommandsToExecute, CaselessDictionary`1 Commands) in I:\UE4.10\Engine\Source\Programs\AutomationTool\AutomationUtils\Automation.cs:line 395
MainFrameActions: Packaging (Linux):    at AutomationTool.Automation.Process(String] CommandLine) in I:\UE4.10\Engine\Source\Programs\AutomationTool\AutomationUtils\Automation.cs:line 369
MainFrameActions: Packaging (Linux):    at AutomationTool.Program.MainProc(Object Param) in I:\UE4.10\Engine\Source\Programs\AutomationTool\Program.cs:line 134
MainFrameActions: Packaging (Linux):    at AutomationTool.InternalUtils.RunSingleInstance(Action`1 Main, Object Param) in I:\UE4.10\Engine\Source\Programs\AutomationTool\AutomationUtils\Utils.cs:line 708
MainFrameActions: Packaging (Linux):    at AutomationTool.Program.Main() in I:\UE4.10\Engine\Source\Programs\AutomationTool\Program.cs:line 53
MainFrameActions: Packaging (Linux): ProcessManager.KillAll: Trying to kill 0 spawned processes.
MainFrameActions: Packaging (Linux): Program.Main: AutomationTool exiting with ExitCode=5
MainFrameActions: Packaging (Linux): Domain_ProcessExit
MainFrameActions: Packaging (Linux): AutomationToolLauncher exiting with ExitCode=5
MainFrameActions: Packaging (Linux): copying UAT log files...
MainFrameActions: Packaging (Linux): RunUAT.bat ERROR: AutomationTool was unable to run successfully.

1 Like

Mmmm, sorry I had a windows macro’d type in the avatar code, I reverted it to uint8 instead so the two BYTE errors won’t show up anymore. I’ll upload with the correct types when it finishes building all versions.

The first error is another thing entirely though, steam appears to have a macro that is conflicting with an Unreal Engine macro. I looked it up and this was a problem before on visual studio but they merged a fix for it into the engine. I am directly accessing the file that caused the issue so it appears again when not using visual studio.

I included Epics #undef of the macro in my header as well, should fix it for you now. Hopefully I can remove that at some point though when / if either UE4 or Steamworks redefines that macro.

Fix will be up soon.

Edit Uploaded

1 Like

[QUOTE=;479819]
If you have VS2015 installed you may need to modify the install to include all the things it needs. I can’t remember the names of what all needs to be installed… C++ components? A google search should answer that.

Ok! I installed Visual C++ to Visual Studio and now everything is working!
Thanks everyone for help!

1 Like

[QUOTE=;480369]
Mmmm, sorry I had a windows macro’d type in the avatar code, I reverted it to uint8 instead so the two BYTE errors won’t show up anymore. I’ll upload with the correct types when it finishes building all versions.

The first error is another thing entirely though, steam appears to have a macro that is conflicting with an Unreal Engine macro. I looked it up and this was a problem before on visual studio but they merged a fix for it into the engine. I am directly accessing the file that caused the issue so it appears again when not using visual studio.

I included Epics #undef of the macro in my header as well, should fix it for you now. Hopefully I can remove that at some point though when / if either UE4 or Steamworks redefines that macro.

Fix will be up soon.

Edit Uploaded

Thank you, I will give it a try now :slight_smile:

EDIT: All is working, cheers.

1 Like

How do I go about setting filters for finding sessions?

I’m getting this error:
LogOnline:Warning: STEAM: Unable to set search parameter IsLegit: Value=true : Equals

Do I have to do things differently?

1 Like

Hi, , first of all, thank you so much for sharing such an amazing plugin with the whole community! I really appreciate it!

I have a (stupid) question though. We are making a multi-player game and we were pretty happy with using the basic “open IPAddress” approach until we want to add voice chat into our game. As far as I understand, voice chat requires Sessions. And OnlineSubsystem = NULL only works in LAN. So I am under the impression that in order to enable Internet-scale voice chat, I have to deal with Sessions, and also OnlineSubsystem such as Steam (i.e. not NULL). Please correct me if I am wrong.

However, the problem is that we have already implemented our own master server which keeps a list of listen server IP addresses created by players on their own machines and heart-beat detection and other functionalities. And, if possible, we want to avoid using Steam (or similar services), because we do not want to force our users to install other software and register other account. Right now, our approach is to let the player either set up a server (by executing command “open SomeLevelName?listen”) or join into one of the IP addresses in the list (by executing command “open ServerIPAddress”).

My question is, is it possible that I can search/join a session by only specifying an IP address which is chosen from our own list of IP addresses, without using Steam to keep such a list, because our master server knows for sure there is a Session on that IP address’s machine? I know the Find Sessions node works in LAN or with using Steam, but it does not work at the Internet scale without using Steam (or similar services), so will our own list of server IP addresses help overcome this limitation? Does your plugin somehow help to solve this situation? Or, you as an expert in these topics, could you please provide any advice to work around such a problem?

Right now I feel kind of frustrated because I am under the impression that the only way to enable Internet-scale voice chat is to use Sessions and OnlineSubsystem Steam (or similar services, excluding NULL), even though we keep a list of listen server IP addresses on our own master server already.

Thank you again sincerely for your amazing plugin and continuous updates in the past months! Looking forward to your reply.

1 Like

First off, I want to say thanks for this amazing plugin. Secondly, I am having an issue where the Break BPFriendInfo node is not returning the correct bool for Is Playing Same Game as it is always returning True. I currently do not have a Steam AppID and am using the Spacewar AppID instead. It’s not going to break what I am doing but I was just wondering if you have heard of any other issues related to this. Thanks!

1 Like

[QUOTE=aondw;483231]
How do I go about setting filters for finding sessions?
I’m getting this error:
LogOnline:Warning: STEAM: Unable to set search parameter IsLegit: Value=true : Equals

Do I have to do things differently?

No that is exactly how I was testing it and it was working for me. Mind posting the entire log instead of a snippet? Also if you change the Key name or use a different base value does it not have problems then?

[QUOTE=xinran;483392]
Snip
Right now I feel kind of frustrated because I am under the impression that the only way to enable Internet-scale voice chat is to use Sessions and OnlineSubsystem Steam (or similar services, excluding NULL), even though we keep a list of listen server IP addresses on our own master server already.

Thank you again sincerely for your amazing plugin and continuous updates in the past months! Looking forward to your reply.

Onlinesubsystem NULL also supports voice chat, and subsystem null can be used with direct IP connections. You are free to rip the voice chat stuff from the null subsystem and use it yourself, but this plugin only supports interfacing through a subsystem.

Here is your easy way out (and also the one that follows UE4’s coding conventions), take the NULL subsystem and make a copy of it’s files, rename it to “MYMASTERLISTSubsystem” and change the server searching code to refer to your server instead of how it currently is implemented. Keep the UniqueID implementations as they are now and interface them with your master server, then the voice chat that is part of NULL will plug right in and all of Epics and my blueprint nodes will work and the game data that gets send with player states also gets populated correctly.

The null subsystem is a base to build off of, use it.

[QUOTE=thevfxguy13;483486]
First off, I want to say thanks for this amazing plugin. Secondly, I am having an issue where the Break BPFriendInfo node is not returning the correct bool for Is Playing Same Game as it is always returning True. I currently do not have a Steam AppID and am using the Spacewar AppID instead. It’s not going to break what I am doing but I was just wondering if you have heard of any other issues related to this. Thanks!

In case you were thinking it meant that they were in your server, the bIsPlayingSameGame means that they are in the GAME you are playing, not the server you are playing the game in.

Here is the direct variable I am pulling from:
Friend.bIsPlayingSameGame = fr->GetPresence().bIsPlayingThisGame;

Also yes I am now aware that the boolean name I chose is a little obtuse.

1 Like

Hello, I didn’t seem to find it in the thread, can you use it for commercial project? I have a really hard time with the basic session nodes so I was wondering if I could use this plugin. It’s freaking awesome

1 Like