Announcement

Collapse
No announcement yet.

Advanced Sessions Plugin

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

    Originally posted by Ethan_Sherr View Post
    Hi. Thank you for this functionality.
    Shouldn't the setup instructions remind the user to install from ue4 source, and then edit OnlineSessionAsyncServerSteam.cpp , changing STEAMPRODUCTNAME, STEAMGAMEDIR, and STEAMGAMEDESC? It has lead me to confusion (or maybe i'm wrong about needing this).
    You don't need to do any of that.


    Consider supporting me on patreon

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

    Comment


      Originally posted by cyan68 View Post
      I have a C++ class in my game, but it has nothing to do with the plugin. Not sure if its important tho... But i cant see how having a C++ class in a project would affect the plugin to work correctly...

      I installed the plugin on engine level (copy files to engines plugins folder)
      then created a "Plugins" folder in the projects directory and copied the files there too

      If I only copy the plugins files to the project folder I can't activate it in the Plugins Browser (its not in the list).

      This way I was able to package the game for WIN64 without any problems.

      Hope this helps for you too!

      Comment


        HI.When using this plugin, I have a problem and can not solve it. I have a dedicated server, and when I try to open a session by CreatedAdvincedSession or simply call OpenLevel with dedicated server IP, I get the following message on the server "No game present to join for session advinced session", but when the dedicated server is on the local machine, then there is no error and everything works correctly, the problem occurs only when the dedicated server is running on the remote machine. I would be grateful for any help.

        Comment


          I have noticed something very weird. Im using Advanced Sessions to get SteamAvatar, SteamName and SteamID and set those variables inside PlayerState. Then I can save all that and use it for Scoreboard list and NamePlate with Avatar and SteamNames. The thing is that SteamAvatar and SteamID fails. I finally got SteamID using my own C++ Class I found on Youtube and it works really fine but SteamAvatar still fails. I tried to get it using SlateBrush, Texture2D and UniqueNetID.

          I keep trying things and have seen that Server can set and print a real NetUniqueID so I get the Avatar.
          But when a client join the server, NetUniqueID in server and in new client change to ERROR: BAD UNIQUE NET ID and Avatar is not loaded.

          What could be doing that ERROR BAD UNIQUE NET ID?
          Last edited by gon.; 11-19-2018, 12:14 PM.

          Comment


            Awesome plugin thank you!

            Comment


              Originally posted by gon. View Post
              I have noticed something very weird. Im using Advanced Sessions to get SteamAvatar, SteamName and SteamID and set those variables inside PlayerState. Then I can save all that and use it for Scoreboard list and NamePlate with Avatar and SteamNames. The thing is that SteamAvatar and SteamID fails. I finally got SteamID using my own C++ Class I found on Youtube and it works really fine but SteamAvatar still fails. I tried to get it using SlateBrush, Texture2D and UniqueNetID.

              I keep trying things and have seen that Server can set and print a real NetUniqueID so I get the Avatar.
              But when a client join the server, NetUniqueID in server and in new client change to ERROR: BAD UNIQUE NET ID and Avatar is not loaded.

              What could be doing that ERROR BAD UNIQUE NET ID?
              Its kind of hard to read that paragraph, but you can pull unique net ids out of the player state array that is replicated in, it takes a bit for the replication to complete so you need to check if it is valid yet before loading an avatar from the id in it.


              Consider supporting me on patreon

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

              Comment


                Originally posted by mordentral View Post

                You don't need to do any of that.


                Hey thanks for the response. The reason I think I do need to edit OnlineSessionAsyncServerSteam.cpp. Here's a source that tells me I have to do that.
                https://wiki.unrealengine.com/Dedica...er_Guide_Steam
                (Fyi i am doing a dedicated server)

                what do you think about this? I'm pretty sure this is what's needed to have your game show up when searching servers, and you need to do it to have your game match what you set your dedicated steam server's name as... right?

                Comment


                  Originally posted by Ethan_Sherr View Post



                  Hey thanks for the response. The reason I think I do need to edit OnlineSessionAsyncServerSteam.cpp. Here's a source that tells me I have to do that.
                  https://wiki.unrealengine.com/Dedica...er_Guide_Steam
                  (Fyi i am doing a dedicated server)

                  what do you think about this? I'm pretty sure this is what's needed to have your game show up when searching servers, and you need to do it to have your game match what you set your dedicated steam server's name as... right?
                  You are talking about dedicated servers, my setup is for general servers, its pretty much an entirely different thing, but yes, for dedicated servers you should edit that to match your steam settings.


                  Consider supporting me on patreon

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

                  Comment


                    Originally posted by mordentral View Post

                    Mute should also be functional, but unregistering them is fine and stops checking them a bit earlier.
                    Unfortunately both muting and unregistering a remote player is not working, I can still hear people talking. Where is the best place to do such a thing? Right now I'm doing it in the GameState when game starts, on every single machine... Do I need to to something with Local User Num?
                    Last edited by ostinelli; 11-21-2018, 08:32 AM.

                    Comment


                      Originally posted by ostinelli View Post

                      Unfortunately both muting and unregistering a remote player is not working, I can still hear people talking. Where is the best place to do such a thing? Right now I'm doing it in the GameState when game starts, on every single machine... Do I need to to something with Local User Num?
                      You shouldn't no, not if there is only one, you do need to make sure that the UniqueNetID of the remote talker is valid though, if it hasn't replicated in from the player array yet then it won't do anything.

                      Are you not getting any console logs when you call it? You should be seeing one of the following log entries

                      Code:
                              UE_LOG_ONLINE_VOICE(Log, TEXT("Muting remote talker (%s)"), *PlayerId.ToDebugString());
                              UE_LOG_ONLINE_VOICE(Verbose, TEXT("Unknown remote talker (%s) specified to MuteRemoteTalker()"), *PlayerId.ToDebugString());
                              UE_LOG_ONLINE_VOICE(Warning, TEXT("Invalid user specified in MuteRemoteTalker(%d)"), LocalUserNum);
                      You can add

                      DefaultEngine.ini
                      Code:
                      [Core.Log]
                      LogOnlineVoice=Verbose
                      To show the full log entries for it (IE: Unknown remote talker).


                      Consider supporting me on patreon

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

                      Comment


                        Originally posted by mordentral View Post
                        You shouldn't no, not if there is only one, you do need to make sure that the UniqueNetID of the remote talker is valid though, if it hasn't replicated in from the player array yet then it won't do anything.
                        Even if the node returns `True`? Anyway I do this when the game starts, after player have slotted, when everything is fully replicated...

                        Unfortunately I don't see in the console because for some reason Steam does not run in the editor, no matter what I do, even when I use a Standalone mode (I'm on 4.21 now). When I do a proper build, though, everything works (steam interface, inviting to game, voice chat). I need to enable the logs for shipped builds, try it out and come back to you.

                        Thank you for your help...
                        Last edited by ostinelli; 11-21-2018, 02:52 PM.

                        Comment


                          Originally posted by ostinelli View Post

                          Even if the node returns `True`? Anyway I do this when the game starts, after player have slotted, when everything is fully replicated...

                          Unfortunately I don't see in the console because for some reason Steam does not run in the editor, no matter what I do, even when I use a Standalone mode (I'm on 4.21 now). When I do a proper build, though, everything works (steam interface, inviting to game, voice chat). I need to enable the logs for shipped builds, try it out and come back to you.

                          Thank you for your help...
                          I'll run some tests over the weekend to verify everything again, there were some changes to allow the Voip talker to work with steam but it shouldn't have effected that any.


                          Consider supporting me on patreon

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

                          Comment


                            Hey, I'm currently troubling with getting a running connection with steam and some strange behaviour.
                            Setup:
                            UE4.19
                            2 PC
                            2 Steam Accounts (both in the same LAN)
                            Steam OSS enabled
                            The game is late join. The server is already within the game, client shall be able to join into the running game. Server is already in the correct map while client tries to connect from MainMenu.
                            Presence is set to false as that only seems to create a Lobby.

                            When opening a server from one PC, with LAN=false
                            Click image for larger version  Name:	CreateServerData.PNG Views:	1 Size:	60.3 KB ID:	1554546
                            The client is able to find the server, but only when looking for LAN sessions (FindSessions LAN=true). The log also shows the LAN IP of the other computer for the found session. Trying to join that session, I only get a log spam of SetActiveLevelCollection attempted to use an out of date NetDriver: GameNetDriver until it finally times out and crashes.
                            The log originates from

                            UWorld::SetActiveLevelCollection
                            Code:
                              
                                ...
                                GameState = ActiveLevelCollection->GetGameState();
                                NetDriver = ActiveLevelCollection->GetNetDriver();
                                DemoNetDriver = ActiveLevelCollection->GetDemoNetDriver();
                            
                                // TODO: START TEMP FIX FOR UE-42508
                                if (NetDriver && NetDriver->NetDriverName != NAME_None)
                                {
                                    UNetDriver* TempNetDriver = GEngine->FindNamedNetDriver(this, NetDriver->NetDriverName);
                                    if (TempNetDriver != NetDriver)
                                    {
                                        UE_LOG(LogWorld, Warning, TEXT("SetActiveLevelCollection attempted to use an out of date NetDriver: %s"), *(NetDriver->NetDriverName.ToString()));
                                        NetDriver = TempNetDriver;
                                    }
                                }
                                ...
                            The piece of code exchanges the NetDriver of the world, which seems to be an obvious issue when trying to use the SteamNetDriver to connect ...

                            The config setup ( https://docs.unrealengine.com/en-us/...g/Online/Steam )
                            Code:
                            [/Script/Engine.GameEngine]
                            +NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")
                            
                            [OnlineSubsystem]
                            DefaultPlatformService=Steam
                            
                            [OnlineSubsystemSteam]
                            bEnableSteam=true
                            bEnabled=true
                            SteamAppID=924770
                            SteamDevAppId=924770
                            GameServerQueryPort=27015
                            bRelaunchInSteam=true
                            GameVersion=1.0.0.0
                            bVACEnabled=1
                            bAllowP2PPacketRelay=true
                            P2PConnectionTimeout=90
                            
                            [/Script/OnlineSubsystemSteam.SteamNetDriver]
                            NetConnectionClassName="OnlineSubsystemSteam.SteamNetConnection"

                            Other scenario:
                            When disabling stuff in the config:
                            Code:
                            ;    [/Script/Engine.GameEngine]
                            ;    +NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")
                            
                            [OnlineSubsystem]
                            DefaultPlatformService=Steam
                            
                            [OnlineSubsystemSteam]
                            bEnableSteam=true
                            bEnabled=true
                            SteamAppID=924770
                            SteamDevAppId=924770
                            GameServerQueryPort=27015
                            bRelaunchInSteam=true
                            GameVersion=1.0.0.0
                            bVACEnabled=1
                            bAllowP2PPacketRelay=true
                            P2PConnectionTimeout=90
                            
                            ;   [/Script/OnlineSubsystemSteam.SteamNetDriver]
                            ;   NetConnectionClassName="OnlineSubsystemSteam.SteamNetConnection"
                            The Internet server still displays as LAN. The client tries to connect, but fails and loads the MainMenu map again. Here is the client log of this scenario:
                            Code:
                               // found session
                            [2018.11.21-19.11.43:980][334]LogOnline: Warning: STEAM: Server response IP:192.168.1.188     // local IP
                            [2018.11.21-19.11.44:077][340]LogOnline: Warning: STEAM: Rules response GameName_s None
                            [2018.11.21-19.11.44:077][340]LogOnline: Warning: STEAM: Rules response OWNINGID 76561198154464056
                            [2018.11.21-19.11.44:077][340]LogOnline: Warning: STEAM: Rules response OWNINGNAME xxxxxxx
                            [2018.11.21-19.11.44:077][340]LogOnline: Warning: STEAM: Rules response P2PADDR 76561198154464056
                            [2018.11.21-19.11.44:078][340]LogOnline: Warning: STEAM: Rules response P2PPORT 7777
                            [2018.11.21-19.11.44:078][340]LogOnline: Warning: STEAM: Rules response SESSIONFLAGS 643
                            [2018.11.21-19.11.44:078][340]LogOnline: Warning: STEAM: Rules refresh complete
                            [2018.11.21-19.11.45:964][457]LogScriptCore: Script Msg: Found a session. Ping is 22
                            
                            
                             // trying to connect to session
                            [2018.11.21-19.12.00:060][330]LogNet: Browse: steam.76561198154464056//Game/PaintWorld/Maps/MainMenu/MainMenu
                            [2018.11.21-19.12.00:061][330]LogTemp: Display: ParseSettings for GameNetDriver
                            [2018.11.21-19.12.00:061][330]LogTemp: Display: ParseSettings for IpNetDriver_1
                            [2018.11.21-19.12.00:061][330]LogTemp: Display: ParseSettings for PendingNetDriver
                            [2018.11.21-19.12.00:061][330]LogInit: SteamSockets: Socket queue 32768 / 32768
                            [2018.11.21-19.12.00:061][330]LogNet: Warning: Failed to init net driver ConnectURL: steam.76561198154464056//Game/PaintWorld/Maps/MainMenu/MainMenu: SteamSockets: binding to port 0 failed (0)
                            [2018.11.21-19.12.00:061][330]LogNet: Warning: error initializing the network stack
                            [2018.11.21-19.12.00:061][330]LogNet: DestroyNamedNetDriver IpNetDriver_1 [PendingNetDriver]
                            [2018.11.21-19.12.00:062][330]LogExit: PendingNetDriver IpNetDriver_1 shut down
                            [2018.11.21-19.12.00:062][330]LogNet: Warning: Travel Failure: [PendingNetGameCreateFailure]: SteamSockets: binding to port 0 failed (0)
                            [2018.11.21-19.12.00:062][330]LogNet: TravelFailure: PendingNetGameCreateFailure, Reason for Failure: 'SteamSockets: binding to port 0 failed (0)'
                            [2018.11.21-19.12.00:062][330]UtilityFunctionLibrary: WriteToLog:[None] BP_PaintProjectGameInstance_C_0: Travel error: Pending Net Game Create Failure
                            [2018.11.21-19.12.00:064][330]LogNet: Warning: Travel Failure: [ClientTravelFailure]:
                            [2018.11.21-19.12.00:064][330]LogNet: TravelFailure: ClientTravelFailure, Reason for Failure: ''
                            [2018.11.21-19.12.00:064][330]UtilityFunctionLibrary: WriteToLog:[None] BP_PaintProjectGameInstance_C_0: Travel error: Client Travel Failure
                            [2018.11.21-19.12.00:077][331]LogNet: Browse: /Game/PaintWorld/Maps/MainMenu/MainMenu?closed
                            [2018.11.21-19.12.00:077][331]LogNet: Failed; returning to Entry
                            [2018.11.21-19.12.00:078][331]LogLoad: LoadMap: /Game/PaintWorld/Maps/MainMenu/MainMenu?closed?listen
                            - I found that steam requires seamless travel to be enabled in the GameMode, which is set to true. The game mode is set in the maps.
                            - Trying to host a LAN game, the session does not even show up. Is it even possible to host a LAN game with steam as OSS?
                            - Also tried to connect one PC to a different network with a devices that establishes a mobile network connection. Not able to find the session in this scenario.


                            Last edited by Rumbleball; 11-21-2018, 03:59 PM.
                            NodePrefabs | PluginBuilder | NotificationBackbone | WidgetBox | RuntimeMeshImportExport | DebugWidget | SteamWorkshopAccessor

                            Comment


                              Originally posted by Rumbleball View Post
                              Hey, I'm currently troubling with getting a running connection with steam and some strange behaviour.
                              Setup:
                              UE4.19
                              2 PC
                              2 Steam Accounts (both in the same LAN)
                              Steam OSS enabled
                              The game is late join. The server is already within the game, client shall be able to join into the running game. Server is already in the correct map while client tries to connect from MainMenu.
                              Presence is set to false as that only seems to create a Lobby.
                              You need to specify lan match in the level loading, not just listen
                              ?listen?bIsLanMatch=1


                              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'll run some tests over the weekend to verify everything again, there were some changes to allow the Voip talker to work with steam but it shouldn't have effected that any.
                                Thank you very much. I am not using VOIPTalker yet, I want to solve this before I start using it (the point being that I want to add walkie-talkie EQ on sound). Let me know if I can help.

                                Comment

                                Working...
                                X