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

    Interesting, even though I installed the XBoxLiveSDK using NuGet within Visual Studio, and it completed successfully, the build failed with the GetXboxLiveSDK.bat. It was reporting that NuGet.exe wasn't found. So, I downloaded the executable from (https://www.nuget.org/) but now I'm getting an inconsistent command-line option:

    Click image for larger version

Name:	33.Inconsistent.CommandLine.jpg
Views:	1
Size:	81.7 KB
ID:	1127972

    Comment


      Yes, we expect the Live packages inside the ThirdParty folder of the plugin itself, not the root packages folder; we're trying to follow the UE pattern rather than the VS pattern. Hence the bat to take care of this (annoyingly NuGet commands aren't part of a regular Powershell environment, so Nuget.exe is the best option I could come up with).

      For the pch problem, I wouldn't expect OnlineSubsystemLive to be compiled for Win64. It's whitelisted for UWP (and Xbox One) only. Did you add an explicit reference from your game's build.cs that might be forcing it to build?

      Comment


        Ouch, I didn't realize that my build was set to Win64. It now builds using UWP64.

        Are you able to post a code snippet to verify that I'm connecting to XboxLive?

        What include files:
        Code:
        #include "../Plugins/Online/XboxOne/OnlineSubsystemLive/Source/Public/OnlineSubsystemLive.h"
        Or other include files, and a couple of calls to test the connection. . .

        Btw, do I need to include OnlineSubsystemLive to the Build.cs list of modules:

        Click image for larger version

Name:	36.Modules.jpg
Views:	1
Size:	63.0 KB
ID:	1127973
        .
        .
        Click image for larger version

Name:	37.DefaultOnline.jpg
Views:	1
Size:	38.4 KB
ID:	1127974
        Last edited by Jerry.Richards; 05-11-2017, 09:28 PM.

        Comment


          Ok after some struggeling I'm able to pack a UWP app.

          However I'm not able to install and test it. I'm in Developer mode and can't install the App-Installer from store (button is greyed out) and powershell is telling me that there is no trust cert or something like that.
          So i tried to install the certificate (https://msdn.microsoft.com/en-us/lib...v=vs.85).aspx)

          Certutil -addStore TrustedPeople C:\Users\Daniel\Desktop\UEUWPShooter.cer
          pause
          But this didn't change anything. Now I'm stuck here. What do I need to do next to test the app?

          And what is also important to know is what I'm actually doing. I'm just building a local test app now or is this app valid to upload to the store right after testing? I'm, still missing the overview of the entire progress.

          Comment


            If you're using the steps above to generate the certificate, which I believe is used for local testing, the package may not be uploaded to the Store as is. I'm not positive about that, but I believe our certificate is generated for testing purposes. The steps we're taking however, may be similar for the real thing.

            As for the package manifest we'll need information from the Windows Dev Center (https://developer.microsoft.com/en-us/windows) portal, specifically from the App Identity screen:

            Click image for larger version

Name:	50.App.Identity.jpg
Views:	1
Size:	164.5 KB
ID:	1127995
            .
            .

            Try installing the certificate using a right-mouse on the file to bring up the context-sensitive menu, then observe the two things that were important to get it to work correctly (for me anyway):

            1. Install the Certificate for the Local Machine
            2. Place all certificates in the following store: Trusted People

            Once you have the certificate installed, you should be able to run the application.


            To upload our games to the Windows Store, James noted above how we create an .appxupload file, which may be necessary to upload the game content, which may or may not be part of the APPX file. The Flying Starter Kit shipping build resulted in a whopping 960 MB folder. Contained inside the folder is the UEUWPFlying.appx file, which is 363MB. Under that there is UEUWPFlying\Content folder, which also has another PAK file of 559MB. Even zipped that file is over 339MB, so it is possible that it is contained within the APPX file but not certain.
            Last edited by Jerry.Richards; 05-12-2017, 08:49 AM.

            Comment


              I'm curious if the Store will generate a Certificate for us, or do we generate it ourselves and upload it. There doesn't seem to be a method for uploading a certificate. It appears that we're filling the package manifest information from the Store into the UE4 Editor Project Settings Description screen, and the UWP Platform screen. And as long as that information matches we should be able to download our application on another machine and run it.

              Comment


                After installing a pending Windows Update which I was missing since my clean windows 10 reinstall I'm able to launch the app.
                I don't have much time this weekend to work on UWP, if there are no further informations in the next days' I'll just set up a demo/test app, request some promo/tester codes and give you one code and you could test and verify if it works or not.

                Comment


                  Glad to hear your issue is resolved.

                  Yes, that is a good idea, me downloading your application

                  I'll be looking for it.

                  Comment


                    The appx contains the entire shipping game, including that content folder. Appx is the package distribution format for UWP apps. It's essentially a zip plus some metadata. You can actually give it a zip extension, unpack it using the Windows shell, and go look to see what's inside.

                    The Store will ultimately want an unsigned appx (included in that appxupload archive). The Store signature will be applied to your package once it has been through certification and is ready for release. You can't, however, install a packed-but-unsigned app on any Windows 10 device. So when you want to test a packaged app before you submit to the store, that's when you go through the process of creating and installing your own certificate for signing. In Developer Mode you can install a loose, unsigned app. This is what you are doing when you use F5 in Visual Studio, or when you use the Project Launcher in UE (without a custom profile that includes packaging). In this case your app is never put into an appx; instead, it is laid out on disk with the file structure that would be packed, and then a special, Developer Mode only registration step is run that allows it to run from this location (Powershell equivalent: Add-AppxPackage -register [path to appxmanifest.xml]). This is the workflow I recommend for day-to-day iteration since it avoids the packaging and signing steps, both of which take some time.

                    You shouldn't worry about your final appx size too much. As someone pointed out above, we've shipped fairly enormous games like Gears and Forza. That said, there's a new feature in the Windows 10 Creators Update to improve the user experience when downloading large packages: Streaming Install. It's not part of our UE integration though, so would require additional engine customization work to add.

                    To get started with Xbox Live, you'll need to be part of either the Creators Program or ID@Xbox. Creators Program is currently in preview and requires that you apply, but will become fully self-service. It's a great way to start. Once you're in you can get your Title ID and Service Configuration ID (SCID) from Dev Center, which you should then add to your UE project settings for UWP. The integration uses these to automatically generate the xboxservices.config file described towards the end of this page. Note, however, that we're not currently adding this line:
                    Code:
                    "XboxLiveCreatorsTitle":"true"
                    You'll need to manually add that, or else change the generation logic inside UnrealBuildTool (UWPDeploy.cs). I intend to make a change at some point so this can be toggled through project settings - or someone is welcome to PR me one!

                    Once your app is associated with Live, you can sign a user in via
                    Code:
                    IOnlineExternalUI::ShowLoginUI
                    Note that this might skip UI completely if the system is able to sign the user in without interaction.

                    Phew! Hope that all helps!

                    Comment


                      Yes, James, that does help And the XboxLive repository is a nice reference. . .both the CreatorsSDK, and XboxSDK.

                      If I can assist in development in any way, I certainly will.

                      Comment


                        Alright tested and played a bit with UWP and run into another issue. After uploading a .appx to the store I get the error Invalid package identity name and Invalid package family name.

                        Click image for larger version

Name:	Developer.Microsoft.PNG
Views:	1
Size:	65.9 KB
ID:	1128100

                        Click image for larger version

Name:	AppIdentity.PNG
Views:	1
Size:	31.7 KB
ID:	1128101

                        Click image for larger version

Name:	UnrealEngine.PNG
Views:	1
Size:	33.3 KB
ID:	1128102

                        I tried several combinations of adding PolygonArt. infront of the Project Name and so on but it did not help. I tought on changing the entire Project name to PolygonArt.UnrealEngine4TestTest App by updating the folder and .uproject but it's a to long file name for UE4. The app is running fine on my local PC but uploading failed due to invalid names. Any idea what I need to change?

                        Comment


                          I'm working on trying to get my project packaged for the Windows Store. Unfortunately I'm encountering an error for signing:

                          Code:
                          UATHelper: Packaging (UWP (x64-64bit)): CommandUtils.Run: Run: C:\Program Files (x86)\Windows Kits\10\bin\x64\signtool.exe sign /a /f "E:\UEUWP\Source\UWPLongshotHero\Build\UWP\SigningCertificate.pfx" /fd SHA256 "E:\UEUWP\Source\UWPLongshotHero\Saved\StagedBuilds\UWP\LongshotHero.appx"
                          UATHelper: Packaging (UWP (x64-64bit)): signtool: SignTool Error: An unexpected internal error has occurred.
                          Does anyone know how to remove the certificate from the UE4 Property pages?

                          I know how to remove the certificates from my machine [C:>CertMgr] but that doesn't help with this problem. I don't know how to tell UE4 to remove the certificate.

                          [EDIT 2017.05.17 @ 12:25PM MST]
                          I'm not certain my steps are correct but I found a key in the BUILD folder (I think), which I deleted, and ran the packaging again. Near the end of the packaging process the key generation window popped automatically, and I selected NONE for the password. I thought about CANCEL and the possible repercussions from that choice, meaning the packaging may have failed. So I chose none. The build/packing was successful, my APPX file is 4.2GB in size. Now I'm uploading to the store to see if I got the settings correct or not. I think I may have missed one. . .which I'll know shortly.
                          Last edited by Jerry.Richards; 05-15-2017, 02:32 PM.

                          Comment


                            I'm running into the same problem you are. Different versions cause different errors.

                            Are you getting prompted for the certificate password?

                            Now I'm building again, and thinking of unzipping the contents and manually setting the values in the manifest. The Store is asking for:

                            Code:
                            Package/Identity/Name:   9999RvBGames.ProductName
                            Package/Identity/Publisher:   CN=10ABCDEF-FFFF-AAAA-BBBB-123456789ABC
                            Package/Properties/PublisherDisplayName:   RvBGames
                            Likewise, the AppManifest.xml has a few interesting keys, which I believe matchup as shown below:

                            Code:
                            <?xml version="1.0" encoding="utf-8"?>
                            <Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10" xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest">
                            	<Identity Name="FlyingGameTemplate" ProcessorArchitecture="x64" Publisher="CN=RvBGames" Version="1.0.0.0" />
                            	<Properties>
                            		<DisplayName>Flying Game Template</DisplayName>
                            		<PublisherDisplayName>RvBGames</PublisherDisplayName>
                            		<Description>Flying</Description>
                            		<Logo>Resources\StoreLogo.png</Logo>
                            	</Properties>
                            	<Resources>
                            		<Resource Language="en" />
                            	</Resources>
                            	<Dependencies>
                            		<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.10240.0" MaxVersionTested="10.0.10586.0" />
                            		<PackageDependency Name="Microsoft.VCLibs.140.00" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" MinVersion="14.0.0.0" />
                            	</Dependencies>
                            	<Capabilities>
                            		<Capability Name="internetClientServer" />
                            		<Capability Name="privateNetworkClientServer" />
                            	</Capabilities>
                            	<Applications>
                            		<Application Id="AppFlyingGameTemplate" Executable="UEUWPFlying\Binaries\UWP64\UEUWPFlying-UWP64-Shipping.exe" EntryPoint="AppFlyingGameTemplate.App">
                            			<uap:VisualElements DisplayName="ms-resource:ProjectName" Description="ms-resource:Description" BackgroundColor="#000040" Square150x150Logo="Resources\Logo.png" Square44x44Logo="Resources\SmallLogo.png">
                            				<uap:SplashScreen BackgroundColor="#000040" Image="Resources\SplashScreen.png" />
                            			</uap:VisualElements>
                            		</Application>
                            	</Applications>
                            </Package>
                            The elements and attributes that look the most interesting are:

                            Code:
                            <Identity Name="Package/Identity/Name" Publisher="Package/Identity/Publisher" />
                            <Properties>
                               <DisplayName>Description of Game?</DisplayName>
                               <PublisherDisplayName>Package/Properties/PublisherDisplayName<PublisherDisplayName/>
                            </Properties>

                            Assuming that I am setting the correct values in the UE4 settings, I am getting an unexpected error, which I'll enter on GitHub if it is the case:

                            Click image for larger version

Name:	52.App.Identity.LSH.02.jpg
Views:	1
Size:	32.6 KB
ID:	1128131

                            And from the manifest we can see why:

                            Code:
                            	<Identity Name="1101RvBGames.LongshotHero" ProcessorArchitecture="x64" Publisher="CN=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" Version="1.0.0.0" />
                            	<Properties>
                            		<DisplayName>1101RvBGames.LongshotHero</DisplayName>
                            		<PublisherDisplayName>RvBGames</PublisherDisplayName>
                            		<Description>Longshot Hero</Description>
                            		<Logo>Resources\StoreLogo.png</Logo>
                            	</Properties>

                            I'm hoping the 1101RvBGames. is the problem in the DisplayName. I'm uploading it now, which has taken over an hour to do so.


                            [EDIT 2017.05.16 @ 12:26PM MST]
                            Well, that didn't work because the message digest wasn't correct, something I thought was going to happen but felt it was the quickest test.

                            Now I'm trying a slight modification I made to Engine\Config\UWP\UWPEngine.ini file:

                            Code:
                            ;***************************************************************************************************
                            Package.Properties.DisplayName=$/Script/EngineSettings.GeneralProjectSettings:ProjectDisplayedTitle$
                            ;***************************************************************************************************
                            DisplayName was set to ProjectName, so I'm expecting (incorrectly maybe) the manifest will be populated with the right data.
                            Last edited by Jerry.Richards; 05-16-2017, 02:31 PM.

                            Comment


                              I think the trouble with using ProjectDisplayedTitle is that it's an FText, not FString, which the build tools don't properly understand so you may still get an incorrect value.

                              For now the simplest is probably to add a [Game]\Config\UWP\UWPEngine.ini in which you set Package.Properties.DisplayName to a literal value of your own choosing. Alternatively for a one-off you can hand-edit the appxmanifest, and then re-run makeappx from the command line.

                              Really though this field should have a value something like ms-resource:ProjectName where ProjectName is a key in a localized resw file (that gets compiled into the resources.pri file which ultimately goes into the appx). The process for doing this properly is kind of half-baked at present - resw files are actually being generated to an intermediate directory, but there's no current mechanism to the [Game]\Intermediate\Deploy directory, but there's no mechanism to put localized source content into them. I'm experimenting with some small changes as a stopgap improvement for this. Will update here if they work out.

                              Comment


                                Re-running the makeappx is nice to know about. Thank you for that tip

                                Okay, so I was able to upload my project to the Windows Store, even with the above change. A problem I encountered with the verification process was that, again, my names didn't match. The solution was rather easy though:

                                1. From the Dev Center, go to App Management, Manage app names, and entered the name I needed
                                2. Return to the Submissions, Packages, and select Retry

                                Retry was a nice choice, it eliminated the need to re-upload my package again. It is worth noting that you can enter several names for the same product on Windows Store.

                                As it stands now, I'm using the below from the Project Description page in the UE4 Editor:

                                Project Name <- Package/Identity/Name
                                Company Distinguished Name <- Package/Identity/Publisher
                                Company Name <- Package/Properties/PublisherDisplayName
                                Project Displayed Title <- a name contained in the Windows Store list of reserved app names

                                Is this correct or not?

                                Initially the first problem I ran into was that I had to change the UE4 Editor Project Name to match the Windows Store XXXXXX.MyGameName. This caused an error due to the Project Name being used for the Display Name. After the upload to the Windows Store the validation process reported there was mismatch between the Display Name and Reserved names. If I had known better, I might have been able to just add the XXXXX.MyGameName to the list and be done with it.
                                Last edited by Jerry.Richards; 05-16-2017, 05:14 PM.

                                Comment

                                Working...
                                X