Announcement

Collapse
No announcement yet.

Advanced Sessions Plugin

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

    Originally posted by MADHOUSE View Post
    I could compile it when adding it to a c++ only project, after which it could be used with a BP only project, and seems to work as expected.
    Not sure if that is by design or just an anomaly. Im pretty sure plugins used to compile when starting projects even if they are BP based.

    Perhaps im just wrong and im remembering incorrectly, if so I apologize!

    No plugins typically don't compile when starting BP only projects, which is why I have to provide the pre-packaged binaries. Where you running a source build or the pre-packaged one?


    Consider supporting me on patreon

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

    Comment


      Im running the source build from github, I might just have assumed wrongly that the plugin should compile on project load for a BP project as well.

      edit: Thanks for helping out! <3
      Last edited by MADHOUSE; 07-25-2017, 11:23 AM. Reason: reply
      ______________________________________________
      https://www.facebook.com/madhousesoftware
      Where sanity is a virtue

      Comment


        Originally posted by MADHOUSE View Post
        Im running the source build from github, I might just have assumed wrongly that the plugin should compile on project load for a BP project as well.
        Yeah, ok then, i'll stop re-compiling the pre-packaged

        You need to compile from IDE for at least the first launch.


        Consider supporting me on patreon

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

        Comment


          Originally posted by JJGG117
          I do mean GameInstance :P
          I'm a little confused though. Neither of my two GameInstances are C++, which I want to combine. If I create two GameInstances, one for AdvancedFriends and one for my other...well neither one of them can reparent because the parent class is already set to that gameinstance.

          Also, what about Steam Overlay Friend Invites? Is it possible?
          Thanks!

          Oh, P.S.
          The Interface being added to GameInstance allows for access to the nodes... O_O
          So...why wouldn't it work? I don't see any of the AdvancedFriends checkboxes in the Details Panel though...!
          The interface is used for the player controllers, the game isntance calls the interface function on the number player controller that received a session invite if it exists. The game instance has its own nodes and is used to bind to the subsystem delegates.

          If neither of your gameinstances are c++ then you want "AdvancedFriendsGameInstance -> parent of -> 1st game instance -> parent of -> second game instance".

          Overlay Friend invites are not currently bound to anything, but they typically aren't used in game anyway.


          Consider supporting me on patreon

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

          Comment


            Originally posted by JJGG117
            Not sure why Interace in GameInstance and in the PlayerController wouldn't work. GameInstance Interace will allow the Events to be called.\\\just like in PlayerController? Or is it different?

            I reparent and then I lose AdvancedFriends Details Panel checkboxes. It's blank and the warning pops up saying Data Loss may happen.

            I just want Steam Overlay Friend Invites to work because Steam Overlay is "in-game"
            The game instance is what is CALLING the interface functions.

            Also re-parenting should be fine as long as the very bottom game instance derives/is parented from the AdvancedFriendsGameInstance.


            Consider supporting me on patreon

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

            Comment


              Originally posted by JJGG117
              My game instance is not just GameInstance so I don't believe re-parenting twice does anything. It will remove AFGI as soon as I parent to something else. Do you have a step by step procedure I can follow?
              Not re-parenting twice......


              AdvancedFreindsGameInstance -> parent of -> Your other game instance -> parent of -> your final game instance


              Consider supporting me on patreon

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

              Comment


                Originally posted by mhnoni View Post
                Thanks for the quick response, Could you please elaborate more about password ? do you mean its possible via BP only ? if so then can you give me a clue on how ?

                Thanks a lot btw for all the free stuff you shared with the community really appreciated .
                To further elaborate on the answer to this, I didn't like the "put the password in settings" option so I whipped up a cheap hack: Send ONLY a boolean indicating that the server is private. If it's private, in your server browser, when trying to join, bring up a dialog box or something that requests a password, and save the password attempt in the GameInstance (so it persists client-side). Then just let the player join.

                In the GameMode, in OnPostLogin, well if it's not a private server I just give the new player their ball (it's a golf game) and set them up. But if it's private, then I call a custom event in their PlayerController that retrieves the password attempt from the GameInstance and sends it to the server. If it's right, then the GameMode gives them a ball and sets them up - if it's wrong, it kicks them. At no point does the client ever get sent the password.

                Allowing the join and then kicking afterward is obviously suboptimal, so I think what I'm going to do is hash the password and send the hash in the session settings as well - this way the dialog box hashes the password attempt too and never tries to join if it's wrong, but a hacked client (that bypassed the check) would still get kicked from the server by the GameMode.

                All in all it's probably a bit much for a golf game but ¯\_(ツ)_/¯

                (Also, if I manage to implement friend invites... no idea if they will even work given some of what I've read... I'll have to find some way to bypass the password check. The invite will be sent by the host, so maybe set up a 'whitelist' of players - defined by Steam ID? - in the GameMode who won't be queried for a password attempt. Whenever the host invites anyone, their ID gets added to the whitelist.)

                But hopefully that solution should be both convenient (immediately tells the player that their password attempt was wrong) and secure.

                Comment


                  Originally posted by Shivan Hunter View Post
                  To further elaborate on the answer to this, I didn't like the "put the password in settings" option so I whipped up a cheap hack: Send ONLY a boolean indicating that the server is private. If it's private, in your server browser, when trying to join, bring up a dialog box or something that requests a password, and save the password attempt in the GameInstance (so it persists client-side). Then just let the player join.

                  In the GameMode, in OnPostLogin, well if it's not a private server I just give the new player their ball (it's a golf game) and set them up. But if it's private, then I call a custom event in their PlayerController that retrieves the password attempt from the GameInstance and sends it to the server. If it's right, then the GameMode gives them a ball and sets them up - if it's wrong, it kicks them. At no point does the client ever get sent the password.

                  Allowing the join and then kicking afterward is obviously suboptimal, so I think what I'm going to do is hash the password and send the hash in the session settings as well - this way the dialog box hashes the password attempt too and never tries to join if it's wrong, but a hacked client (that bypassed the check) would still get kicked from the server by the GameMode.

                  All in all it's probably a bit much for a golf game but ¯\_(ツ)_/¯

                  (Also, if I manage to implement friend invites... no idea if they will even work given some of what I've read... I'll have to find some way to bypass the password check. The invite will be sent by the host, so maybe set up a 'whitelist' of players - defined by Steam ID? - in the GameMode who won't be queried for a password attempt. Whenever the host invites anyone, their ID gets added to the whitelist.)

                  But hopefully that solution should be both convenient (immediately tells the player that their password attempt was wrong) and secure.
                  Thanks a lot yes your method is good , let me know if "implement friend invites" works as it should which make it a lot easier

                  Comment


                    Originally posted by JJGG117
                    I check DedicatedServer on the CreateAdvancedSession node but how do I set a Dedicated Server's map and join it?
                    Dedicated servers still require a source build of the engine (and likely always will from what Epic has stated). The checkbox is there for people that want to keep blueprint nodes for the logic even when using dedicated servers.


                    Consider supporting me on patreon

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

                    Comment


                      Originally posted by Shivan Hunter View Post
                      *Snip*
                      I must have deleted it from my original response to him, but yes, a one way encryption / hash is best for checking the password, but as you stated a hacked client bypasses it, the problem with your method is that a hacked client STILL ignores the kick command as well.

                      Friend invites DO work btw, the engine doesn't hook up the "received invite" event but it DOES implement the "Accepted Invite" event. So people getting invites through the overlay works.


                      *Edit* I have it on my TODO list to implement the game session kick methods for the plugin since true kicking (dropping connection) currently seems to requires c++.
                      Last edited by mordentral; 07-31-2017, 08:32 AM.


                      Consider supporting me on patreon

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

                      Comment


                        Originally posted by JJGG117
                        Is this tutorial all encompassing: https://wiki.unrealengine.com/Dedica...ows_%26_Linux) ?

                        Can I put these source code files in my packaged shipping project for people to use and create a Dedicated Server?
                        People will have to join by IP Address, but will players be able to find those dedicated servers using FindAdvancedSession?

                        Maybe maybe not? Do you have a good dedicated link for me to check out and implement alongside Advanced Sessions if not?
                        That is the de-facto guide as far as I know currently.

                        The sessions system works with dedicated servers as well, but you have to actually forward the correct ports with a dedicated server.

                        You don't need to distribute source, and in fact you CAN'T since it is part of the engine. It is a seperate .exe compilation that runs as a dedicated server.


                        For the sessions side nothing really changes except pinging works.


                        Consider supporting me on patreon

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

                        Comment


                          Originally posted by JJGG117
                          So are most games using listen servers?

                          Also if anyone creates a listen Server and intends for others to join their steam game, no port forwarding is necessary?

                          How do I ping a steam listen Server?

                          And don't dedicated servers run better? Hold more players and larger maps? Or is that myth surrounded around the extra player a listen Server generates, the local network associated with a listen Server...etc?
                          All UE4 servers are listen servers, just how they network to the server differs, default UE4 servers over steam use Steams NAT Punchthrough to connect to each other so there is no port forwarding required, Dedicated servers do not and require the ports to be open.

                          Dedicated servers run with many optimizations to the engine and features removed that aren't required for a non client, they should generally have far less overhead, the reason they require a seperate compiled version of the engine is that packaging everything needed for them in a launcher version would cause it to be much larger and Epic wasn't willing to bloat the download size that much.


                          Consider supporting me on patreon

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

                          Comment


                            I'm trying to create a server browser but for some reason it loads 4 servers when i just create 1..
                            https://gyazo.com/a398f3896d443a3e4aa99e14f64c0995

                            Creation of server: https://gyazo.com/30344214b78afd9b2abbbcba5314fbe6
                            Finding servers: https://gyazo.com/bf1c9b328a90ce6c0b12f015a667251e

                            Comment


                              Originally posted by JJGG117
                              So AdvancedSessions uses NAT Punchthrough...aka Steam's networking...so that clients can use whatever ports they have at their disposal to display the proper packets and establish connection?
                              AKA Situation: I create a LAN listen server because I know my connection is bad and I don't have ports forwarded (thus why I have 2 friends over connected to my internet) so we can play
                              HOWEVER
                              If I chose non-LAN and non-Dedicated then my server will be displayed to the world and my connection is just the limitation of myself to that server? UNLESS of course I close my program then the server dies along with everyone else on it. But their connections are not limited by my crappy connection, correct?
                              STEAM uses Nat punchthrough, Advanced Sessions does nothing network wise, it just interfaces to c++ functions for blueprint.

                              Non Lan and Non Dedicated the HOST is the HOST, so your connection totally effects things.
                              Last edited by mordentral; 07-31-2017, 08:37 PM.


                              Consider supporting me on patreon

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

                              Comment


                                Originally posted by JJGG117
                                Soo...does AdvancedSessions allow people all over the world to join anyone's non-Dedicated (checkbox) non-LAN "listen" server without the creator's ports to be open?
                                No.......Steam lobbies allow for that, which is what you are hosting when you make a session that isn't dedicated. Advanced sessions has nothing to do with it, this plugin is for opening up extra options for the sessions system.

                                That part works just fine with or without the plugin.


                                Consider supporting me on patreon

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

                                Comment

                                Working...
                                X