I still have several projects I’m working on using GameSalad, but having spent the last two weeks porting Zen Hopper over to Windows Phone 8 using Construct 2 to port the game and going through the publishing process I wanted to share a few things that I feel might be missed if you’re new to WP8 publishing. I’ve come across a few gotchas that I and another developer experienced and I figured I’d pass these on for anyone who might be preparing to submit. These issues are unique to Windows Phone 8.
– Avoid Icons with any transparency. I have published an app once for iOS (Cyball) and used a transparent texture. I did fix it later because it didn’t look good, but it wasn’t rejected for this reason. So just be sure your PNG files have no transparency in them.
– Games and apps have different back button standards and support is required. Unlike android apps, WP8 games are required to have the back button perform certain behaviors. Using Gamesalad the back button simply quit an android app. I imagine this is something gamesalad bakes into the app rather than making an option to tweak. Construct 2 doesn’t, but there is a plugin that gives you the ability to access this button. More on that later in this post.
Straight Apps can simply use the back button to quit the app. This is fairly straightforward with the plugin, but games have a few more requirements and the games will be rejected without them. The main menu needs to quit like other apps when the back button is pushed. While in-game you need to use the button as a pause button and in that pause state, a menu of options need to be available. The minimum would be to be able to resume or exit to main menu. The back button pressed again should take you back to the main menu. Any game over screens and such should also return you to the main menu.
There are several ways to do the in-game pause screen. I used a Modulo (aka modulus) approach where each time the back button is pressed, I advance the counter by one. Something like this.. (PauseState+1)%3 and I start the variable “PauseState” at “2”.. so the first push jumps back to 0 then pushed again it becomes 1.
I really can’t explain it properly off the top of my head and i’m too rushed to look it up, but basically the way i see it is that it simply resets your value to 0 when you hit a certain value.. so 2 incremented to 3 goes back to 0.. then increments back up till it hits 3 again.. if i said %4 then it would go up till it hits 4 and goes back to 0. If you want the full scoop you can read about it here 🙂
The other way that Jim O’Neil showed me which works great also is through the use of an Else statement shown below. I’m still new to C2 in a lot of ways so I never thought to try something like this. Each time the back button is pushed it’s going in and checking a variable for 0 or 1.
Thanks to help from folks at Microsoft, I learned a few things that someone new to C2 / WP8 publishing that someone new might not catch. here they are:
– you don’t need to change all the file names and such.. my file that I uploaded is called WindowsPhonePluginForConstruct2_Release_AnyCPU.xap as long as you change the “Display Name” under WMAppManifest.xml to your game name, so it shows up named right on the phone.
– if you notice the blue loading screen with the graphic.. if you want to change the color, update the line in MainPage.xaml below to reflect black (#000000) or whatever color you want.
if you’re using Construct 2 to build an app for WP8 you need to follow this tutorial and install the plugin https://www.scirra.com/tutorials/593/windows-phone-games-with-construct-2
NOTE: I’m experiencing some audio trouble with their WP8 specific audio functions. I’m not sure at this time for sure if it’s me or the plugin. I will update when I know more, but I’m lead to believe that the issue is with the plugin because I’ve heard one other developer report trouble and when I ported over the sample “finished” project the tutorial provides, it too, locks up in game. So either way be it user error on my part or plugin / C2 issues.. I’ll update folks on this as I know more.