Announcement

Collapse
No announcement yet.

Advanced Sessions Plugin

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

    After hosting a game other players can see the available lobby but cant join it. The lobby ping appears as "9999".

    How can I fix it ?

    Comment


      Originally posted by CaranvalGame View Post
      After hosting a game other players can see the available lobby but cant join it. The lobby ping appears as "9999".

      How can I fix it ?
      Look on answerhub for the ping issue, 9999 is an engine "bug", the lobby not being joinable is something that you are doing wrong.

      Originally posted by adipFTW View Post
      Hey mord,

      I've just made a new project for 4.14 and have the old Sessionflags problem again. I thought I 'fixed' it by using just a small boolean as extra setting when creating the session, but even without any additional settings, the error now occurs. This is the servers log:

      [/CODE]
      You are on a dedicated build right? The lobby builds use the full larger alternative string for hosting and get away with more, the dedicated ones are locked into the short string. There actually isn't much I can help you with about it through a plugin. I can't change the subsystem macros without remaking the subsystem itself. If you need to save space then I would suggest turning map names and other longer values you are trying to pass into enums and sending the enum value instead as it will take faaaaar less space in the total string that Steam stores.

      Same for game modes and the like, if you know what they are then sending the full qualified name is overkill and you can just send an ID for it instead. Instead of key "GAMEMODE" "THIS IS THE MODE NAME" you can do "GM" "0", "GM" "1", and then translate it to the enum value on the client side.


      There was a while when dedicated servers ALWAYS caused the bufffer overflow because the engine passes in the clients system name as the hostname and that can get really long. It might be doing it again.....


      Originally posted by Dr_Jerm View Post
      I just spent the last two days trying to encode my own player count in the session settings (both your plugin and with C++ source) and haven't had any luck. Whenever I update my session (when a player joins or leaves) it causes the dedicated server to no longer be returned in a session search. Can you think of a work-around for player count? It seems pretty critical to have... if one server fills up you have to be able to know to pick another one.
      Are you updating it with dedicated unticked or presence ticked or some other conflicting setting?


      Consider supporting me on patreon

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

      Comment


        Originally posted by mordentral View Post
        Are you updating it with dedicated unticked or presence ticked or some other conflicting setting?
        Merging in the Steam Auth pull request (https://github.com/EpicGames/UnrealEngine/pull/2135) seemed to have resolved the issue :/ hopefully that functionality gets added to core soon. Thanks again for being so responsive/active on this thread.

        Comment


          Originally posted by Dr_Jerm View Post
          Merging in the Steam Auth pull request (https://github.com/EpicGames/UnrealEngine/pull/2135) seemed to have resolved the issue :/ hopefully that functionality gets added to core soon. Thanks again for being so responsive/active on this thread.
          Yeah...it would be really nice if it eventually got merged (though it needs changes).


          Consider supporting me on patreon

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

          Comment


            altnabla passed me along a link about the 9999 ping problem. http://www.aclockworkberry.com/ping-...ssion-results/ He did fix the issue for another project but isn't allowed to share the code. Maybe this will interest someone here? Have you seen this before mordentral?

            Metahusk: A 501(c)(3) Creative Development Cooperative
            Projects | Forums | Repositories | Nonprofit | Donate

            Comment


              Originally posted by Parvan View Post
              altnabla passed me along a link about the 9999 ping problem. http://www.aclockworkberry.com/ping-...ssion-results/ He did fix the issue for another project but isn't allowed to share the code. Maybe this will interest someone here? Have you seen this before mordentral?
              No I haven't seen that, but it makes sense, that would be why when Epic tested sessions they got ping. They must have been testing over LAN instead of internet.

              That being said, his manual handshake in there isn't going to be implemented with this plugin considering how it would have to be done.


              Consider supporting me on patreon

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

              Comment


                Can anyone tell me how the host can get the session result?

                When a client searches for a session, they get a list of session results and can join one of them. The client can then keep a reference to that session result and use it to query any extra settings on the session. However, when the host creates a session, they don't get a session result returned back to them and from what I can tell, there doesn't appear to be any nodes that the host can use to get the current session they are in. So how can the host query extra settings about their own session that they set when originally creating the session?

                Comment


                  Originally posted by wilberolive View Post
                  Can anyone tell me how the host can get the session result?

                  When a client searches for a session, they get a list of session results and can join one of them. The client can then keep a reference to that session result and use it to query any extra settings on the session. However, when the host creates a session, they don't get a session result returned back to them and from what I can tell, there doesn't appear to be any nodes that the host can use to get the current session they are in. So how can the host query extra settings about their own session that they set when originally creating the session?
                  The GetSessionSettings node may do what you are looking for.

                  Comment


                    On the matter of friend invites:
                    * Player 1 is located on a dedicated server at the time of sending the request while Player2 is sitting in the entry screen of the game.
                    * Using the SteamOnlineSubModule and the SendSessionInviteToFriend player 1 sends a session invite to a Steam friend (player 2)
                    * Player 2 sees the invite through the Steam Overlay
                    * Player 1's SendSessionInviteToFriend's OnFailure fires
                    * Player 2 attempts to join session through steam overlay
                    * Player 2 this gets logged: LogOnline:Warning: STEAM: Invalid session or search already in progress when accepting invite. Ignoring invite request.

                    In my PlayerController class I've implemented the OnPlayerLoginStatusChanged function from the Advanced Friends Interface however I don't think it ever gets called. Any suggestions?
                    Last edited by Dr_Jerm; 12-05-2016, 10:11 PM.

                    Comment


                      Originally posted by Dr_Jerm View Post
                      The GetSessionSettings node may do what you are looking for.
                      Indeed it is. Thank you kind sir.

                      I note however that it does not appear to work in PIE. Always hits the Failure pin when running in PIE. Only ever gives a result when running in standalone. I assume this is expected behaviour.

                      Comment


                        I decided to investigate an easy way around the Steam listen server ping 9999 issue. I got pings working. I'll release it with the Cardinal Menu System once some plugin issues with UE4.14 are ironed out.

                        What I did: Basically, I used VaRest to fetch the external IP of the host using REST and ipify.org and then I told Steam to broadcast the fetched IP with the server information. When the clients receive the list of the servers, they then use Descendent Studios' PingPlugin to get the ping from the router of the host. (I don't think PingPlugin supports 4.14 yet. I'll release it once I get PingPlugin working with the new engine version.)

                        If ping response is disabled on the host's router, the ping will display as a ?. Also, if the ping fails for some reason it will park the ping as a -.

                        If someone wants to work on a better method, I'm all ears. I'm using this way as an easy fix for now.

                        Click image for larger version

Name:	WorkingPingFriends.JPG
Views:	1
Size:	73.4 KB
ID:	1119666
                        Last edited by Parvan; 12-07-2016, 05:42 AM.

                        Metahusk: A 501(c)(3) Creative Development Cooperative
                        Projects | Forums | Repositories | Nonprofit | Donate

                        Comment


                          Ug, it creates a subclass and FRunnable for every detected server and the suggested method is to tick a timer and check each until resolve?

                          I like that one less than the mass packet mailer that averaged out response times and required subsystem changes.


                          Consider supporting me on patreon

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

                          Comment


                            Originally posted by mordentral View Post
                            Ug, it creates a subclass and FRunnable for every detected server and the suggested method is to tick a timer and check each until resolve?

                            I like that one less than the mass packet mailer that averaged out response times and required subsystem changes.
                            Me too, but I don't want to change a whole lot of things. I don't want to put a lot of work into it only to run the risk of Epic putting the feature into the engine in the near future.

                            I'm trying to keep everything simple with using only blueprints and plugins so others can modify the project or use it to learn.

                            *Maybe I shouldn't be posting this in this thread. I was just sharing information on the 9999 ping issue.
                            Last edited by Parvan; 12-08-2016, 08:41 AM.

                            Metahusk: A 501(c)(3) Creative Development Cooperative
                            Projects | Forums | Repositories | Nonprofit | Donate

                            Comment


                              Originally posted by Parvan View Post
                              Me too, but I don't want to change a whole lot of things. I don't want to put a lot of work into it only to run the risk of Epic putting the feature into the engine in the near future.

                              I'm trying to keep everything simple with using only blueprints and plugins so others can modify the project or use it to learn.

                              *Maybe I shouldn't be posting this in this thread. I was just sharing information on the 9999 ping issue.
                              I mean, its fine to post is here, but most projects don't actually need ping to player hosted servers, more so if they method of doing it directly exposes the servers IP without actually joining it. There is a lot of room for mass DDOS attack exploits if you are returning the hosts WAN address with results, steam returns a host ID instead normally.


                              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 mean, its fine to post is here, but most projects don't actually need ping to player hosted servers, more so if they method of doing it directly exposes the servers IP without actually joining it. There is a lot of room for mass DDOS attack exploits if you are returning the hosts WAN address with results, steam returns a host ID instead normally.
                                Oh wow, I didn't know it was that easy to DDOS attack the engine. I did some research on the subject. Interesting... a server will crash with enough invalid packets? Dang...

                                Metahusk: A 501(c)(3) Creative Development Cooperative
                                Projects | Forums | Repositories | Nonprofit | Donate

                                Comment

                                Working...
                                X