Announcement

Collapse
No announcement yet.

Epic Online Services

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

    [PLUGIN] Epic Online Services

    Hi Everyone,

    I'm currently working on a Plugin for the newly announced Epic Online Services (EOS) and thought it might be something others would be interested in.

    You can find the latest version of the Plugin here.

    You'll need to register and download the EOS SDK from Epic, here. Hit the middle option (Online Services), login/register and download the SDK Zip. Once you have the Zip (and the Plugin and/or sample project from my repo' above), you'll need to copy the Bin, Include and Lib folders into the ThirdParty folder in my plugin. This is to ensure I fully comply with the EULA from Epic, hence not adding the SDK within the repo.

    Once you have the Plugin (or the sample), you'll need to:
    • Set up your Project on the Portal
    • Get your ProductId, SandboxId, DeploymentId, ClientId & Client Secret
    • Add your ProductId, SandboxId, DeploymentId, ClientId & Client Secret to your DefaultEngine.ini
    The project uses the Online Subsystem methodology, from Epic. I'd highly recommend anyone new to this to start by reading up about how they work, how to integrate them, how you can switch between various OSS' etc.
    EOS SDK Initialization and Shutdown now happens via the Plugin Module - i.e. it occurs before the rendering API (DirectX/OpenGL) occurs, so that the overlay should be able to acquire its necessary hooks. This is the same approach as the Steam OSS/Plugin.

    You can Login, by pressing "i"
    NOTE: Logging in requires all of the above details (IDs and Secret) and currently only works via the Dev Auth Tool. This will be rectified in the coming days.

    The project, blueprint nodes and comments have more direct usage information. It has also only (currently) been tested with 4.25.1 and SDK v1.6.2. Additional support for engine version 4.24 has been added.

    I'll be adding the other events and content to the Plugin over the coming days, and more features when they become available... but for now, everything links, compiles and can be used within a UE4 project!

    Enjoy!

    Questions, Problems and Errors:

    "EOSSDK-Win64-Shipping.dll is Missing"
    The DLL is currently in the Plugin's ThirdParty folder. Copy this to your project's Bin directory and you should be good to go!

    "Module cannot be loaded"
    Or a similar error. First, check that you can compile and run the EOSBasic project. If you are using that project (or even if you're using your own), check under Saved/Logs for ProjectName.log file. Start from the end and work your way backwards, and in here you should see more details about why it cannot load the module. Most likely, the Editor cannot find the EOSSDK-Winxx-Shipping.dll file. And if that's the case, see the point above!

    Currently only built/tested against UE 4.25.1 and 4.24
    Any other versions might not work as expected!

    What's the license? And can I use it for a commercial project?
    You can absolutely use this in any of your own projects, commercial or free. No limitations. The plugin is provided "as is," so no warranty, use at your own understanding etc. And you can totally use it as a "jumping off point."
    I'd only ask that if it's of use, and you extend or fix something, do consider contributing back to the plugin :-)

    "Where is the NAT P2P Support?"
    I'm working on it! :-)
    We're investigating how to use the Third Party login mechanism. Why is that important? Well, in order to use the P2P NAT mechanism (and then the "Sessions" system), we first need to use the EOS "Connect" interface. By default, we can use an Epic Account... but this needs a valid Auth Interface, which one can only get with valid ClientId/ClientSecret credentials. These are only available if you are an Epic Store partner. So, without the Auth, we cannot (easily) get a valid Connect Handle, to be able to initialize the P2P NAT and beyond.

    "I'm pressing 'i' but it's failing to Login?"
    Have you set-up your project through EAS (Epic Account Services)? Have you accepted the terms and ticked all the appropriate elements in the EAS section? Have you created a "Client" and retrieved your Client ID and Client Secret? AND have you put those over into the DefaultEngine.ini?

    Updates:

    Updated to migrate the project to an Online Subsystem (OSS).
    Begun migrating the functionality over to an OSS approach.
    Initialize and Shutdown the SDK via the Module. Initial support for logging in and out.

    Updated the Project and Plugin to 4.25.0. Fixed invalid enum issues from previous pull. Updated to support logging in/out.
    Fixed some spelling mistakes above and added initial support for User Info queries.

    Merged a pull request, initial support for EOS SDK v1.6
    Fixed changes to enums.

    Updated to EOS SDK v1.5.
    Fixed changes to enums.

    Updated to EOS SDK v1.3.
    Fixed requirements, new elements etc.
    Still only have the same features as the previous build. New items (like P2P networking) are in the works!
    Some features are only available to Epic Store partners. Investigating what we can add and other ways we can implement more features.

    Some bug fixes found by the awesome community and contributors!
    Built against EOS SDK v1.1.0, with everything working as expected.
    New (simple) instructions Widget.
    Last edited by Jawdy; 06-06-2020, 05:55 AM.
    Epic Online Services Plugin for UE4 [github] [forum]

    #2
    Sounds great, so I can access it via Blueprints?

    Comment


      #3
      Originally posted by DeepShader View Post
      Sounds great, so I can access it via Blueprints?
      Absolutely!

      You'll need to add the plugin to either your project or the engine (loads more details on this AnswerHub page). And then everything is done in the Editor, either through the Project Settings page or via Blueprints.

      Of course, anyone who wants it, can access everything via C++, too.
      Epic Online Services Plugin for UE4 [github] [forum]

      Comment


        #4
        Oh hey, I was just working on this myself but this'll save me some time! Nice work!

        Comment


          #5
          Originally posted by Jawdy View Post

          Absolutely!

          You'll need to add the plugin to either your project or the engine (loads more details on this AnswerHub page). And then everything is done in the Editor, either through the Project Settings page or via Blueprints.

          Of course, anyone who wants it, can access everything via C++, too.
          Great!!!

          Comment


            #6
            Originally posted by disseminate View Post
            Oh hey, I was just working on this myself but this'll save me some time! Nice work!
            Thanks!

            I'm in the middle of sorting the Authentication and Metrics side, which will lead to good sized update and make this whole plugin much more useful :-)
            Epic Online Services Plugin for UE4 [github] [forum]

            Comment


              #7
              Hi,
              I'm experiencing a problem when I open the EOS Basic project I'm giving the error the program can not start because EOSSDK-Win64-Shipping.dll is missing from your computer. Specifically, I have introduced the Bin, Include and Lib files in the ThirdParty and still give me this error what to do?
              Excuse me of my English.

              Comment


                #8
                Originally posted by MariusEm View Post
                Hi,
                I'm experiencing a problem when I open the EOS Basic project I'm giving the error the program can not start because EOSSDK-Win64-Shipping.dll is missing from your computer. Specifically, I have introduced the Bin, Include and Lib files in the ThirdParty and still give me this error what to do?
                Excuse me of my English.
                Ah - so this is you trying to launch the project itself, rather than in the Editor?
                To solve this, you also need to put that DLL into your projects Bin directory - I'll update the notes in the first post :-)
                Epic Online Services Plugin for UE4 [github] [forum]

                Comment


                  #9
                  Today I hope to solve the Authentication side and can then continue with the other elements.
                  Epic Online Services Plugin for UE4 [github] [forum]

                  Comment


                    #10
                    Originally posted by Jawdy View Post
                    Today I hope to solve the Authentication side and can then continue with the other elements.
                    After fighting with this for a while, I finally caved and upgraded everything my end to VS2017 (hey, I got comfortable with 2015... and it still worked!) so that I could properly build the sample.
                    Added my ProductID and SandboxID, everything initialized, just like my Plugin. Great.
                    Couldn't login... getting the same EOS_InvalidParameters message...

                    Then I re-checked the documents and within this page is this Important message:
                    Player authentication and identity features are currently only accessible for games that are published in the Epic Games Store.
                    Not at all frustrating - as I thought I'd screwed up!

                    OK, so the Authentication (Login, Friends List etc) part of the Plugin will take a while longer... need to figure out how to "test" this stuff. Such as the way Valve do it with Steam and that you can test the API using a SteamDevAppId of 480, rather than having or needing a proper ID. Or if I can get something on the Epic Store, just not fully published... or???

                    I'll shift over to the Metrics side.
                    Within here, there are two types of User/Account for Metrics: Epic Account; or External.
                    So to begin with, my Plugin will focus on the External.
                    Epic Online Services Plugin for UE4 [github] [forum]

                    Comment


                      #11
                      Another update:

                      Added support for Metrics: Initializing; Begin Player Session; and End Player Session.

                      One must currently use the "External" account type, not the Epic type. I've updated the Plugin and the sample project on Github. :-)
                      Epic Online Services Plugin for UE4 [github] [forum]

                      Comment


                        #12
                        What exactly are the sessions supposed to be for the metrics system? When to start and stop tracking player activity?

                        Comment


                          #13
                          Originally posted by Mootjuh View Post
                          What exactly are the sessions supposed to be for the metrics system? When to start and stop tracking player activity?
                          Yup, exactly.

                          There's an extra data tag (currently unused), so you can track specific session types - like which level a player is on, that sort of thing. Once that goes live on the back-end, it'll be a parameter in the function and Blueprint node.
                          Epic Online Services Plugin for UE4 [github] [forum]

                          Comment


                            #14
                            Already copy SDK's folders to ThirdParty..already generate vs project....but, when I try to compile...this error happens...

                            Comment


                              #15
                              Originally posted by Demonrras View Post
                              Already copy SDK's folders to ThirdParty..already generate vs project....but, when I try to compile...this error happens...
                              The image isn't loading :-/

                              Can you copy/paste the text from the "Output" panel into here?
                              Epic Online Services Plugin for UE4 [github] [forum]

                              Comment

                              Working...
                              X