In this article we explore how you can create a final executable store-ready app from your game project on the UWP platform for desktop or Xbox One (Microsoft have discontinued support for Windows 10 Mobile and don't allow new app uploads for phones, so this is not mentioned below).
It is assumed that you have already setup GameMaker for testing on at least one of the available UWP platforms, but if you haven't then you should do so now. See the following articles for help:
Once you have a project that can run on a UWP device you can then continue on with this article to create a final executable that can be uploaded to the Microsoft Store.
IMPORTANT NOTE ABOUT XBOX ONE: Creating a UWP package for the XBox One platform does not requires you to submit for Concept Approval, nor are you required to have an ID@XBox account, however you must have set up XBox Live within your game. For information on how to go about this see the article Setup UWP and XBox Live.
MS Developer Setup
The first thing to do if you want to publish your games to the Microsoft Store is to create a Developer Account. There is a small fee for signing up as an MS developer (at the time of writing it was $19 for individuals and $99 for business), but if you are a student then it's possible you could be eligible for a free account (see here) or if you are a startup/small business then you may be eligible to get a free, one-time, 12-month Windows Store account (see here). If none of this applies to you and you need to sign up as a regular user/business, then please go here:
Once you have set up a developer account you will need to reserve an App Name for the game, as you will not be able to sign your apps without having first reserved a name on the store. This will later be linked within Visual Studio so that it can create a Store Certificate that will be used to "sign" your final app for upload.
If you have set up your game project to use XBox Live functionality (see here) then you will have done all this already and you should go ahead and fill in the rest of the submission details for the app from the MS Developer dashboard, then skip down to the section on Compiling Your Game.
Prepare The Store Listing
Once you have your account and everything set up, you can move on to preparing a store listing for the game you want to sell. This is essentially a three step process:
- Reserve an app name for your game and prepare the initial listing
- Finish the listing information and then publish (Note that once published it won't actually be visible to anyone until it passes the Microsoft review process.)
- Sign your app and upload for submission to the store
The first thing to do is to reserve the App Name from within your Microsoft Developer Dashboard. The initial listing is created here by clicking the "Create A New App" button. This will begin the setting up of your game listing by first requesting that you reserve a name for your game and then checking it against the database of games already published. This ensures that your game will not have the same name as anything else, and the final name will also be used to generate your PFX file (more on this later).
Note that you should use the "Check Availability" button when giving an app name, as it may be taken by some other application or game, and once you register the name it will be registered as "yours" for a year (if you do not publish anything when the year is up, the name will be freed for anyone to reserve again).
Once you have reserved the App Name you will be taken to an Overview screen where you can click the "Start Submission" button to set up the store page, where you can fill in the details about your game.
Each of the sections is described briefly below as the MS page itself has a lengthy explanation of each option along with further links for more details, so you should go through each part and fill in the required information:
- Pricing and Availability - This section is for setting the different pricing options, sales, Store visibility and publishing dates for your project. Once you have completed this section you can click "Save" to continue.
- Properties - Here you can set certain app properties based on the "Category" that the app is in. You should always select the Games category, as that will then provide a list of games-specific properties to set. Once you have completed this section you can click "Save" to continue.
- Age Ratings - This section is used for giving your game an age rating. To start with you have to select the "Game" option and then complete the brief questionnaire that is shown about the content of the game. Once you have completed this section you can click "Save and Generate" to generate your age rating and continue.
- Packages - Here is where you will upload the final UWP package for distribution, flagging the platforms that it is to be published to. You can skip this part as we'll come back here once we've prepared everything else.
- Store Listings - Provide the text and images that customers will see in your Store listing for each language you want to support. This requires a UWP package to have been uploaded so we can skip it for now and come back later.
- Notes For Certification - Help your app get through the certification process by providing any required information (like test login accounts) or other information about how the app should be interacted with etc... Again, this is for when we finally submit the UWP package and so can be skipped for now.
Once that's done you can leave the dashboard and continue on with creating the PFX signing certificate in Visual Studio.
Reserve The App Name From Within Visual Studio
You don't have to go to the MS Developer pages to reserve an app name if you don't want to as you can also do it from within Visual Studio (if you want to set up the rest of the app properties for the store listing then you are better doing it the way outlined above, as using VS simply reserves the name and nothing else). Since this process requires you to have created an App Solution within VS, and we need to do that anyway to generate the PFX signing certificate, we'll explain how to reserve your app name as part of the rest of the article, so please continue on to the next section.
Create Your Own PFX Signing Certificate
When submitting your final app to the store a Store Certificate must be generated. This is done from within Visual Studio and requires you to first make a UWP app solution. To do this, open Visual Studio and go to File > New > Project:
This will open up the Project Wizard with a number of possible templates for you to choose from. In this case you want to choose Installed > Templates > Visual C++ > Windows > Blank App:
When you give you app solution a name this must be the same as the one set up in the store when you reserved your app name. If you haven't yet reserved the app name then ensure that the name you give here is the name that you want to use for the MS Store when you publish your app (we'll cover how to reserve the name in VS a moment).
When you click "Okay" here to create the app solution, you will prompted to give the Target and Minimum versions of Windows 10. In general you will want to leave this at the default values and simply click "Okay" to continue. For more information see this Microsoft article: Choose A UWP Version
This will now create the app solution, which you will now need to link with the MS Store. This is done from the Project > Store > Associate App With Store option in VS:
This will open up the Store wizard and you will be shown a list of your reserved names that have no package already associated with them. If you have reserved a name on the Developer Dashboard, then it should appear here, but if you have not then you can fill in the "Reserve a new app name" section here to create one (which will then be added to the list so you can select it).
NOTE: if you receive the error " An unexpected error occurred when attempting to reserve the app name", it is probable that the name you have given has already been reserved, so you should choose a different name and try again).
Once you have selected the reserved name to use, clicking "Next" will take you to a summary of the app that you want to associate with the store, including the Package Name. This name will be required when creating your game in GameMaker, so take note of it (or take a screenshot), then click the "Associate" button at the bottom to finalise the process:
The app is now associated with the store and Visual Studio has created two PFX signing certificate files for it, which you can see listed on the right (by default in the Solution Explorer) in Visual Studio. The one we need is the [GameName]_StoreKey.pfx:
You should now right click on the file name and select the Properties option. This will give you the full path for the file, which you can then use to reference it or copy it to a secure location (we recommend that you copy it to the source location for your game and also make a safe backup of it else where). Note where you store this file as we will now need it to set up GameMaker.
Set Your Game Options
We are finished with Visual Studio now and can go back to GameMaker to set things up and compile our UWP package for uploading. The first thing we have to do now is set up the UWP Game Options to use the correct package name and signing certificate, so open the UWP Game options now (double click the resource Options > Windows UWP):
You will first need to fill in the General information with the Display Name and other things for your game. The important thing to note here is the Package Name which should be the name that was shown in the summary when you linked the game to the store in Visual Studio (as explained above). You also need to ensure that the Publisher Display Name is the same that used in the Visual Studio project when you made the PFX file.
You may also want to set up what device families the package targets.
By default, the "Support Universal device family" option is checked, which means that the app will target all devices and families. In order to restrict the app to only supporting particular device families, the Universal option should be unchecked and the appropriate device families checked. It's also possible to support the Universal device family but restrict other device families to only certain platform versions - in this case you would keep the Universal device family checked, but also check the other device family for which you wish to support a different platform version, and input the version details for that family in the appropriate text boxes. See this page the following Microsoft support page for how this logic works:
In general you won't want to touch the target and minimum platform versions and should leave them at their default values, but if you are having build issues - specifically, if you can't install the Windows SDK set by default - then you'll need to change these to what you have installed. If you are unsure what values to set, then create a new UWP project in Visual Studio and have a look at what it sets the values to.
For more information on Device Families, please see the following Microsoft document:
The final step (apart from filling out the rest of the Game Options with icons, etc... See here for more information) is to link the PFX file we made previously with the game. This is done from the Packaging section of the Game Options:
Here you point GameMaker to the PFX file that we created earlier and click the "Install" button. This will install the file for the project (don't forget to click the Apply button before leaving the Game Options).
If you are using XBox Live functionality then you should have already filled in that section of the Game Options too (if you have not then you need do nothing here):
Compiling Your Game
With the Game Options all set up and the name reserved on the MS Store, you are now ready to create a final executable package for the game. This is done by clicking the Create Executable button in the GameMaker UI:
This will then open a window that will prompt you to select the target CPU architecture for the final package:
The store permits you to upload multiple different packages depending on the Windows 10 platform that you want to target, and you can use GameMaker to build different app packages depending on what you require. In general you want to choose:
- Package an ARM Build when you are targeting ARM devices
- Package a x86 Build when you are targeting x86 devices
- Package a x64 Build when you are targeting Xbox One or x64 devices.
GameMaker will create an *.appxbundle package which can then be distributed, but if you check the box marked Package For Store Upload, then the final package created will be an *.appxupload file, which is what Microsoft specifies should be used for submitting apps to their store, as explained in this article here (all chosen architectures will be included, just like with the *.appxbundle).
Once you have made your selection a window will open for you to select where to save the game package to. Once you have selected a location, the game project will be compiled and when it's finished GameMaker will open the file explorer on the project location so you can access the created packages for uploading to the store (note, if an explorer window does no open it's because this has been switched off in the GameMaker Preferences).
Uploading The Package
When you have compiled the final app package (or packages) for your game, you need to go to the Microsoft Developers page Dashboard. There you can select the app name that you reserved and set up the store listing. You can get full details of how to set up the listing from the Microsoft article here: App Submissions
It's worth noting that when you set up the listing, you can upload multiple packages for your game and then set the Device Family for the package:
Please note that whilst "Windows 10 Mobile" is shown as an option in this image, this is not supported by Microsoft for new apps anymore, so likely won't appear in the list for you now.
You can now go back to those parts of the submission process that required the package to be uploaded (the two sections Store Listings and any Notes For Certification) before submitting your game to the store.