Announcement

Collapse
No announcement yet.

Unreal Engine 4 is available for Win10 UWP app dev now

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

    Originally posted by Jerry.Richards View Post
    I'm back, now trying to make use of the Xbox Live Services. On the UWP page should I check:

    Is Creators Program Title?

    When exiting and restarting the UE Editor it appeared that my setting for it was lost.

    I'm performing a UWP build and will upload it to the Store to see if the process works. Additionally, I have my sandbox setup, and if I understood correctly, I should be able to perform testing without the upload to the Store. I just need to start with the items that I would like to include in my project such as Social, Leaderboards, and Achievements.

    Currently, I'm reviewing the documentation to save results to the Leaderboards. That appears to be the easiest place to start. The trick is how to tie in UWP libraries to access the Microsoft Parallel Programming Library, as shown at the bottom of this page: https://developer.microsoft.com/en-u...s/leaderboards

    Or is there another set of API's we should be using from UE4, C++ (unmanaged)?
    Yes, you should check the 'Is Creators Program Title' box. Do you have commit f5362d5? That should have addressed some problems with newer settings persisting across editor sessions. I should also note that if you're using this fork with the Creators Program you're blazing a trail (and we appreciate it!)

    For coding against Live features I'd recommend starting with the existing functionality that's wrapped to the standard UE4 online interfaces, e.g. IOnlineLeaderboards. The MS docs are still great for building an understanding of Xbox Live concepts, but less useful for code in UE unless you find yourself needing to extend what's already there.

    Comment


      Originally posted by jsyarrow View Post
      Yes, you should check the 'Is Creators Program Title' box. Do you have commit f5362d5? That should have addressed some problems with newer settings persisting across editor sessions. I should also note that if you're using this fork with the Creators Program you're blazing a trail (and we appreciate it!)

      For coding against Live features I'd recommend starting with the existing functionality that's wrapped to the standard UE4 online interfaces, e.g. IOnlineLeaderboards. The MS docs are still great for building an understanding of Xbox Live concepts, but less useful for code in UE unless you find yourself needing to extend what's already there.
      1. I just refreshed from the repo and rebuilding now. I've been working locally for the past 15 days so I'm not sure what level my version was at.

      2. My upload to the Store worked flawlessly which was nice to see.

      3. I should have known about the IOnlineLeaderboards Hopefully I'll have something working by tomorrow.

      Better yet, it would be nice to get my game published under UE UWP. So I appreciate all the help. Thank you.

      Comment


        Does anyone know how to fix this?

        Click image for larger version

Name:	Captureue4.PNG
Views:	1
Size:	29.3 KB
ID:	1129226

        Comment


          Originally posted by ErnestoEFL View Post
          Does anyone know how to fix this?
          I haven't yet pushed the change to pull the UWP UBT and UAT dependencies from the Windows SDK and/or VS2017, so there's currently a requirement to have VS2015 installed (after which you can go back to using VS2017). From the look of things that's what you're missing. Proper fix should be in soon.

          Comment


            Originally posted by jsyarrow View Post
            I haven't yet pushed the change to pull the UWP UBT and UAT dependencies from the Windows SDK and/or VS2017, so there's currently a requirement to have VS2015 installed (after which you can go back to using VS2017). From the look of things that's what you're missing. Proper fix should be in soon.
            Is it alright if you let me know when its available Private Message please?

            Comment


              When I include OnlineSubsystemLive in my Build.cs, while debugging, my game doesn't load, it hangs at the splash icon being displayed. Is my setup below correct?

              Code:
              PublicDependencyModuleNames.AddRange(new string[]
                      {
                          "Core",
                          "CoreUObject",
                          "Engine",
                          "InputCore",
                          "InputDevice",
                          "AIModule",
                          "GameplayTasks",
                          "UMG",
                          "XmlParser",
                          "OnlineSubsystem"
                      });
              
                      // Uncomment if you are using Slate UI
                      PrivateDependencyModuleNames.AddRange(new string[]
                      {
                          "Slate",
                          "SlateCore",
                          "OnlineSubsystem"
                      });
              
                      DynamicallyLoadedModuleNames.Add("OnlineSubsystemLive");

              Additionally, in DefaultEngine.ini I have the following:

              Code:
              [OnlineSubsystem]
              DefaultPlatformService=OnlineSubsystemLive

              Comment


                Actually, I forget to enable the Online Subsystem Live plugin. But now I'm getting an unresolved external NtoHS from the UDPEchoImpl class. Searching for it fails too.

                Comment


                  I'm having a couple of issues:

                  1. If I enable the Online Framework with Online Subsystem, I get unresolved externals for HtoNS, and others.

                  2. When I enable Online Subsystem, and OnlineSubsystemLive, the debugger connects to the Cook Server, but the game doesn't get past the splash screen. The logs does contain some information, which may not be useful:

                  [2017.06.08-21.05.33:146][ 0]LogFileServer : Display: Client Client For UWP connected.
                  Last edited by Jerry.Richards; 06-08-2017, 05:49 PM.

                  Comment


                    OnlineFramework depends on ICMP, which doesn't have a complete UWP implementation at the moment. Are you sure you need OnlineFramework? If so, you may have to fill in some gaps yourself. The Windows desktop implementation (in ICmpWindows.cpp) will almost certainly be a good start - it may even just work.

                    You shouldn't need OnlineSubsystemLive in your build.cs either - just enabling the plugin should be sufficient. Though I doubt that's causing your hang.

                    That line from the server spew is, unfortunately, not very useful. Can you get the output from the client by running it under the VS debugger?
                    Last edited by jsyarrow; 06-08-2017, 06:14 PM.

                    Comment


                      I have OnlineFramework disabled. My setup is as follows:

                      Code:
                      	PublicDependencyModuleNames.AddRange(new string[]
                              {
                                  "Core",
                                  "CoreUObject",
                                  "Engine",
                                  "InputCore",
                                  "InputDevice",
                                  "AIModule",
                                  "GameplayTasks",
                                  "UMG",
                                  "XmlParser",
                                  "OnlineSubsystem"
                              });
                      
                              // Uncomment if you are using Slate UI
                              PrivateDependencyModuleNames.AddRange(new string[]
                              {
                                  "Slate",
                                  "SlateCore"
                              });
                      
                              //DynamicallyLoadedModuleNames.Add("OnlineSubsystemLive");

                      It was throwing an exception in FOnlineSubsystemLive::Init()

                      Code:
                      		// [MENTION=59935]A[/MENTION]TG_CHANGE : BEGIN 
                      		ApplicationConfig = XboxLiveAppConfiguration::SingletonInstance;
                      		// [MENTION=59935]A[/MENTION]TG_CHANGE : END

                      Comment


                        Do you know the specific exception type? Perhaps ClassNotRegistered?

                        Comment


                          Originally posted by jsyarrow View Post
                          Do you know the specific exception type? Perhaps ClassNotRegistered?
                          Let me try to get it. It looked odd given that it appeared to be a simple assignment.

                          Comment


                            Do I need anything in DefaultEngine.ini:

                            [/Script/Engine.GameEngine]
                            !NetDriverDefinitions=ClearArray
                            +NetDriverDefinitions=(DefName="GameNetDriver",DriverClassNameFallback="/Script/OnlineSubsystemUtils.IpNetDriver")

                            [OnlineSubsystem]
                            DefaultPlatformService=OnlineSubsystemLive

                            Comment


                              That should be enough. Things to check:

                              - have you provided your title id and scid in the UWP platform settings? These are what back the XboxLiveAppConfiguration instance you're trying to load on that line.
                              - does your output package layout (in [Project]/Binaries/UWP64/AppX, or [Project]/Saved/StagedBuilds/UWP64) contain an xboxservices.config? This is the file from which that title id and scid are actually read at runtime.
                              - does your output package layout contain the file Engine\Plugins\Online\XboxOne\OnlineSubsystemLive\ThirdParty\XSAPI\UWP\build\native\lib\x64\v140\release\Microsoft.Xbox.Services.dll?
                              - does your output appxmanifest.xml contain a block like the below (note in particular the element for Microsoft.Xbox.Services.XboxLiveAppConfiguration)

                              Code:
                              		<Extension Category="windows.activatableClass.inProcessServer">
                              			<InProcessServer>
                              				<Path>Engine\Plugins\Online\XboxOne\OnlineSubsystemLive\ThirdParty\XSAPI\UWP\build\native\lib\x64\v140\release\Microsoft.Xbox.Services.dll</Path>
                              				<ActivatableClass ActivatableClassId="Microsoft.Xbox.Services.XboxLiveContextSettings" ThreadingModel="both" />
                              				<ActivatableClass ActivatableClassId="Microsoft.Xbox.Services.System.XboxLiveUser" ThreadingModel="both" />
                              				<ActivatableClass ActivatableClassId="Microsoft.Xbox.Services.Multiplayer.MultiplayerSessionReference" ThreadingModel="both" />
                              				<ActivatableClass ActivatableClassId="Microsoft.Xbox.Services.System.TitleCallableUI" ThreadingModel="both" />
                              				<ActivatableClass ActivatableClassId="Microsoft.Xbox.Services.Social.SocialGroupConstants" ThreadingModel="both" />
                              				<ActivatableClass ActivatableClassId="Microsoft.Xbox.Services.Social.ReputationFeedbackItem" ThreadingModel="both" />
                              				<ActivatableClass ActivatableClassId="Microsoft.Xbox.Services.XboxLiveAppConfiguration" ThreadingModel="both" />
                              				<ActivatableClass ActivatableClassId="Microsoft.Xbox.Services.UserStatistics.RequestedStatistics" ThreadingModel="both" />
                              				<ActivatableClass ActivatableClassId="Microsoft.Xbox.Services.Multiplayer.MultiplayerQualityOfServiceMeasurements" ThreadingModel="both" />
                              				<ActivatableClass ActivatableClassId="Microsoft.Xbox.Services.Tournaments.TournamentTeamResult" ThreadingModel="both" />
                              				<ActivatableClass ActivatableClassId="Microsoft.Xbox.Services.Multiplayer.MultiplayerSessionCapabilities" ThreadingModel="both" />
                              				<ActivatableClass ActivatableClassId="Microsoft.Xbox.Services.Tournaments.TournamentReference" ThreadingModel="both" />
                              				<ActivatableClass ActivatableClassId="Microsoft.Xbox.Services.Multiplayer.MultiplayerRoleInfo" ThreadingModel="both" />
                              				<ActivatableClass ActivatableClassId="Microsoft.Xbox.Services.Multiplayer.MultiplayerRoleType" ThreadingModel="both" />
                              				<ActivatableClass ActivatableClassId="Microsoft.Xbox.Services.Multiplayer.MultiplayerSession" ThreadingModel="both" />
                              				<ActivatableClass ActivatableClassId="Microsoft.Xbox.Services.Multiplayer.MultiplayerGetSessionsRequest" ThreadingModel="both" />
                              				<ActivatableClass ActivatableClassId="Microsoft.Xbox.Services.Multiplayer.MultiplayerQuerySearchHandleRequest" ThreadingModel="both" />
                              				<ActivatableClass ActivatableClassId="Microsoft.Xbox.Services.Multiplayer.MultiplayerSearchHandleRequest" ThreadingModel="both" />
                              				<ActivatableClass ActivatableClassId="Microsoft.Xbox.Services.Presence.PresenceData" ThreadingModel="both" />
                              				<ActivatableClass ActivatableClassId="Microsoft.Xbox.Services.TitleStorage.TitleStorageBlobMetadata" ThreadingModel="both" />
                              				<ActivatableClass ActivatableClassId="Microsoft.Xbox.Services.XboxLiveContext" ThreadingModel="both" />
                              				<ActivatableClass ActivatableClassId="Microsoft.Xbox.Services.XboxLiveHttpCall" ThreadingModel="both" />
                              				<ActivatableClass ActivatableClassId="Microsoft.Xbox.Services.Multiplayer.Manager.MultiplayerManager" ThreadingModel="both" />
                              				<ActivatableClass ActivatableClassId="Microsoft.Xbox.Services.Privacy.PermissionIdConstants" ThreadingModel="both" />
                              				<ActivatableClass ActivatableClassId="Microsoft.Xbox.Services.Social.Manager.SocialManager" ThreadingModel="both" />
                              				<ActivatableClass ActivatableClassId="Microsoft.Xbox.Services.ServiceCallLoggingConfig" ThreadingModel="both" />
                              				<ActivatableClass ActivatableClassId="Microsoft.Xbox.Services.System.XboxLiveServicesSettings" ThreadingModel="both" />
                              			</InProcessServer>
                              		</Extension>
                              Last edited by jsyarrow; 06-08-2017, 06:40 PM.

                              Comment


                                Originally posted by jsyarrow View Post
                                - have you provided your title id and scid in the UWP platform settings? These are what back the XboxLiveAppConfiguration instance you're trying to load on that line.
                                Yes, and the information is saved across sessions.

                                Originally posted by jsyarrow View Post
                                - does your output package layout (in [Project]/Binaries/UWP64/AppX, or [Project]/Saved/StagedBuilds/UWP64) contain an xboxservices.config? This is the file from which that title id and scid are actually read at runtime.
                                I cleaned the UWP64 binaries folder and rebuilt. Appx isn't there, but debug executable is UWP64-Debug.exe. More importantly (I think) is that the xboxservices.config has a file size of 0 bytes. Is this okay?

                                Originally posted by jsyarrow View Post
                                - does your output package layout contain the file Engine\Plugins\Online\XboxOne\OnlineSubsystemLive\ThirdParty\XSAPI\UWP\build\native\lib\x64\v140\release\Microsoft.Xbox.Services.dll?
                                After deleting the binaries and performing a Build from within VisualStudio there is no Engine folder. It may have been there before though. Let me perform a complete rebuild. . .but it will take some time to perform.

                                Originally posted by jsyarrow View Post
                                - does your output appxmanifest.xml contain a block like the below (note in particular the element for Microsoft.Xbox.Services.XboxLiveAppConfiguration)
                                Yes, AppxManifest.xml is present (7 KB), and it from a cursory view it looks the same. I will take a detail look at it in a moment. But I can confirm the following are present:

                                Code:
                                		<Extension Category="windows.activatableClass.inProcessServer">
                                			<InProcessServer>
                                				<Path>Engine\Plugins\Online\XboxOne\OnlineSubsystemLive\ThirdParty\XSAPI\UWP\build\native\lib\x64\v140\release\Microsoft.Xbox.Services.dll</Path>
                                				<ActivatableClass ActivatableClassId="Microsoft.Xbox.Services.XboxLiveContextSettings" ThreadingModel="both" />
                                				<ActivatableClass ActivatableClassId="Microsoft.Xbox.Services.System.XboxLiveUser" ThreadingModel="both" />
                                				<ActivatableClass ActivatableClassId="Microsoft.Xbox.Services.Multiplayer.MultiplayerSessionReference" ThreadingModel="both" />
                                				<ActivatableClass ActivatableClassId="Microsoft.Xbox.Services.System.TitleCallableUI" ThreadingModel="both" />
                                				<ActivatableClass ActivatableClassId="Microsoft.Xbox.Services.Social.SocialGroupConstants" ThreadingModel="both" />
                                				<ActivatableClass ActivatableClassId="Microsoft.Xbox.Services.Social.ReputationFeedbackItem" ThreadingModel="both" />
                                				<ActivatableClass ActivatableClassId="Microsoft.Xbox.Services.XboxLiveAppConfiguration" ThreadingModel="both" />
                                				:
                                				<ActivatableClass ActivatableClassId="Microsoft.Xbox.Services.System.XboxLiveServicesSettings" ThreadingModel="both" />
                                			</InProcessServer>
                                		</Extension>

                                Comment

                                Working...
                                X