Announcement

Collapse
No announcement yet.

Advanced Sessions Plugin

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Originally posted by mordentral View Post
    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.
    Storyteller - An immersive VR audiobook player

    Dungeon Survival - WIP First person dungeon crawler with a focus on survival and environmental gameplay ala roguelikes

    Comment


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

      Code:
      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.

      Comment


        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
        Last edited by mordentral; 02-24-2016, 09:57 AM.


        Consider supporting me on patreon

        My Open source tools and plugins
        Advanced Sessions Plugin
        VR Expansion Plugin

        Comment


          Originally posted by Parvan View Post
          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!

          Comment


            Originally posted by mordentral View Post
            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

            EDIT: All is working, cheers.
            Last edited by Joshua_NZ; 02-26-2016, 10:31 PM.

            Comment


              How do I go about setting filters for finding sessions?
              Click image for larger version

Name:	asplugin.PNG
Views:	1
Size:	213.7 KB
ID:	1101423

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

              Do I have to do things differently?

              Comment


                Hi, mordentral, 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.

                Comment


                  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!
                  displacemedia.com / @displacemedia / @thevfxguy13

                  Vortex - Unreal Engine 4 Powered 2-4 Player Physics Driven Top Down Shooter

                  Comment


                    Originally posted by aondw View Post
                    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?



                    Originally posted by xinran View Post
                    *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.

                    Originally posted by thevfxguy13 View Post
                    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.
                    Last edited by mordentral; 02-29-2016, 09:18 AM.


                    Consider supporting me on patreon

                    My Open source tools and plugins
                    Advanced Sessions Plugin
                    VR Expansion Plugin

                    Comment


                      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
                      My Assets
                      https://www.unrealengine.com/marketplace/profile/Gabeee

                      Consider supporting me on Patreon or Paypal

                      Comment


                        Originally posted by Gabeee View Post
                        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
                        I haven't attached any requirements what so ever to it, feel free to use for whatever you want.


                        Consider supporting me on patreon

                        My Open source tools and plugins
                        Advanced Sessions Plugin
                        VR Expansion Plugin

                        Comment


                          Originally posted by mordentral View Post
                          I haven't attached any requirements what so ever to it, feel free to use for whatever you want.
                          Thank you very much! I really appreciate it!
                          My Assets
                          https://www.unrealengine.com/marketplace/profile/Gabeee

                          Consider supporting me on Patreon or Paypal

                          Comment


                            I remade every session based parts in my blueprints but I think I found a bug of some sort, not sure yet. When I use the UpdateSession node the players gets mixed up or something. The players/maxplayers goes -(Original Max - 1)/0 for me and yes it goes - and always Original - 1, any idea what can it be? sorry if my explanation was hard to understand, I can show pics if it's needed. (In case I don't use the UpdateSession node everything is fine (but I really want to update it cause I have a loading screen that shows a picture of the map, also the server lister shows the gamemode and map that's currently active.)

                            Edit:
                            Now that I manually set 12, it say 5/12 when I'm alone on the server.
                            Last edited by Gabeee; 02-29-2016, 06:23 PM. Reason: Further testing
                            My Assets
                            https://www.unrealengine.com/marketplace/profile/Gabeee

                            Consider supporting me on Patreon or Paypal

                            Comment


                              Originally posted by mordentral View Post

                              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.
                              Thank you so much for your reply! It is very thoughtful and inspiring, and I truly appreciate it!

                              However, I have a minor question. Probably I misunderstand some knowledge somewhere. I thought that OnlineSubsystems (including NULL) and "open IPAddress" are two separate (i.e. parallel) approaches. So I do not entirely understand how it is possible that "subsystem null can be used with direct IP connections". Could you please explain it a little bit? For example, do you mean that executing command "open IPAddress" can take a client into a specific Session on a server? Or can we use voice chat with only "open IPAddress" (i.e. without Sessions at all)? I don't think we can do these two things, right? Or do you mean that the usage of direct IP connections can apply at both LAN and Internet scales? Thank you again!

                              Comment


                                Problem seem to be solved through this :
                                Click image for larger version

Name:	000270.png
Views:	1
Size:	71.0 KB
ID:	1101535
                                My Assets
                                https://www.unrealengine.com/marketplace/profile/Gabeee

                                Consider supporting me on Patreon or Paypal

                                Comment

                                Working...
                                X