Some pitfalls to avoid when publishing....

Hi All,

 

My first game, Electron Swarm, has just gone live on the App store and Google play.

I’ll plug it elsewhere :slight_smile: but I just wanted to share some of the pitfalls I’ve come across along the way, in the hope that it might save someone a bit of time working it out for themselves.

 

Apple - Making an app preview.

When making an app preview in iMovie, you can’t select the size of the output. The size of the output is determined by the very first piece of media you import.

You need 4 sizes of video / screen shot so the easiest thing to do is to get the original footage on an iPhone 6+ if possible, then downsize the video to the appropriate video size. I downloaded Quicktime 7 for this as it was easiest and only cost £20 or so…. there are free options, but they were a pain and the output wasn’t always very good.

Unfortunately I didn’t know this, and I don’t have an iPhone 6+ so I took my in-game footage from a 5s and upscaled it! It still looked fine if exported from iMovie on the highest settings then resized.

 

You will also need to grab footage from an iPad as the aspect ratio is significantly different so it won’t work and stands a chance of getting rejected for not being a true representation of what it looks like on iPad.

 

Once you resize the videos (search for the video settings on the apple developer portal) you may find that despite your best efforts, the video appears to upload to iTunes connect, but will then give an error saying “Try Again”. I tried for days…. eventually it seemed to be a problem with one of the setting used in Quicktime 7 to re-size the video, I never worked out which as I followed the docs. So to fix it, I created a new iMovie app preview project for every size, then imported the whole previously resized video into it, then exported it. This fixed any settings issues and all the videos loaded up first time.

 

So for me the work flow was: Game footage -> iMovie -> Quicktime 7 resize -> iMovie -> Export app store preview.

 

Apple Contracts

When you first sign up for the developer program you electronically sign a load contracts. THIS IS NOT THE END OF IT!

When you publish your game there are another set of contracts to sign if you are selling your game. I didn’t know this, then published the app and it ended up in a “Waiting for Contracts” state. I went to compete the contract and two happened immediately, but the third, the bank details, were a real issue that took nearly a week to sort out. Do this upfront if you can, especially if you have a release date set.

 

Apple Bank payments

As my business bank is a small bank, it does not do it’s own clearing, so when inputting the IBAN number the automated Apple system kept kicking it out as the IBAN number did not match a normal IBAN format. The IBAN number was of the clearing bank not mine, and my account detains needed to be added to the “For further credit” section.

Well I got nowhere fast with a ticket raised with Apple Financial about how to add a bank account with a separated clearing bank…. after a week of no response despite an initial quote of 24 hours I eventually found the answer myself buried deep in the apple developer docs:

 

“Apple makes all payments electronically. If you can’t identify your bank in iTunes Connect, it may be that Apple can’t send payments to that bank. For example, Apple doesn’t send payments to bank accounts that require additional instructions such as “For Further Credit.” Apple also doesn’t send payments through intermediary or correspondent banks.”

 

So I can’t actually use my business account with Apple! A solution is to enter your personal account details and IBAN, then when any payments come in from Apple, transfer them immediately to the business account. Its a bit of a pain, but the only other solution is to get another business account, and that costs. So it depends if my game actually makes any money really.

 

Apple Review Process

Really easy, but make sure you use their icons on your web page if you are linking. The review took 7 days the first two times, then 6 the last…. we found a bug on the day of release!

 

Google

I found the developer console quite confusing at times, however if you go to the help pages, there is usually a “Live chat” option. Use it! They generally sort stuff out there and then.

 

Developer console funnies

When you upload a Beta, you then need to add some testers. You need to create a google+group for this, and add your testers to that. There is a lot of old info on the web that says you can add individual email addresses. You can’t. At least couldn’t two weeks ago… they just added their open beta testing so it may have changed!

When you add testers, the pages talk about your testers accepting a link to be a tester. It says the link is “Below”. The link wasn’t “Below” I looked for ages…. it only shows up once you have published your app.

This is confusing as Hell.

There is no “Publish to a test store” button… just a “publish” one…. and to all intents and purposes it looks like it’s going to publish your beta app.

Well it actually does, but the only people who can see it are the people who signed up to be a tester using the link above that you don’t have yet.

There is no test store, just the real thing with filters, so this is how you test your licensing…. which leads me onto the next mistake I made.

 

Google Licensing / Copy protection.

Maybe I’m a bit thick sometimes or I just miss big things, but I got as far as being ready to publish my App on Play before realising I needed to add the google licensing to my app. See this post by develephant: Its great!

https://forums.coronalabs.com/topic/41900-using-google-licensing-to-protect-your-corona-sdk-app-in-3-steps/

 

This was the code I finally used in my main.lua 

I can’t claim credit since I pieced it together from other posts, but it works across platforms and only does the check on Google Play. You’ll notice I also added a bit of code from Ingemar, in checking the type of network error. Since I wasn’t able to find out how long a valid license is cached for once checked, I decided that I didn’t want the game to stop working in Airplane mode. So, even though this creates a bit of a hole, if the device is in airplane mode it will still run.

local device = require("device") local store = require( "store" ) -- if were not on a simulator and we an android device then check. if not device.isSimulator and store.target == "google" then     local licensing = require( "licensing" )     licensing.init( "google" )     -- Callback for the listener.     local function licensingListener( event )         local networkError = (event.errorType == "network")         if event and (not networkError) and (not event.isVerified) then             native.showAlert("Error", "License Invalid.\nPlease Download from Google Play Store and support an Indy!”,{“OK"}, function(event) native.requestExit() end );         else             -- On google play, but license is cool.             composer.gotoScene("intro")             print()                     end     end     licensing.verify( licensingListener )      else     -- IOS or not on google play     composer.gotoScene("intro")     print() end

I know there are better solutions (writing a file after checking etc), but since I only discovered this requirement as I was about to publish, I went for the easy option.

 

Google Payments Setup

I thought that setting up my google wallet was where the funds would go to from the play store. Not so. You need to go to the Financial setup page and setup the payments. This is a bit confusing as at no time was I prompted to do this. I published the app without it in place, and only found out by luck that I actually needed this bit. Also the Payments page, looks like it is payments TO google, but it’s FROM google. Like I said perhaps I’m thick sometimes, but this wasn’t obvious to me.

Its easier than the apple process…. just a bank account number and sort code, so google money will go directly into my business account at least.

 

Google spurting your home address to the world

This really annoyed me. If you are selling your game, then google will publish your address. If you are a one man band working from home like me, then thats my home address all over the google play store. I had a long live chat with a google rep ( see here: https://forums.coronalabs.com/topic/58101-google-play-store-displays-home-address/) and the bottom line is they don’t seem to care as long as its somewhere they can sent you a letter. Po Box, accountant, bloke next door. I used my accountants address in the end.

 

Google Indexing

If you “Unpublish” your game on Play, it will be removed from the search index. It can take 24 hours or so for it to be added again when you publish as they only re-index once per day. So I published in the evening (uk time) and we couldn’t find it on the play store, even though the listing was live. Don’t panic! It will show up the following day in searches.

 

Additional bits and pieces.

If you are in the UK and have a limited company (even it it’s just you) when signing contract you need to select “Corporate” as the entity type.

 

Make sure there is a Copyright notice in your game. I forgot…. BANG! 7 more days to wait for a review on the App Store, just for adding a line of text to the “About screen”

 

TEST TEST TEST. We had it in Beta for two months… on the day of release my builder found a bug on the main screen in the interface. I had forgotten to cancel a timer, and if you pressed the start button in a 250ms window the timer would get set and awful things happened on the next scene. We pulled it, and that was another 6 days wait for an apple review. Check your timers between scenes! This almost made it to the wild and would have looked terrible for my first game release.

 

Literally as I was typing this, I got an email from apple financial. Yeah they don’t support banks with additional steps for clearing, as I worked out… took them 9 days to respond in the end. Lucky I wasn’t waiting!

 

Anyway… I’m off to go drink a beer…. my game is finally live and I’m a happy man!

 

Good luck all

Doug

Thanks for the information, Doug.

I will be re-reading this in a couple of months when (hopefully) I will be releasing my own first game.

Good luck with Electron Swarm.

Jules.

Great post!  Thanks for taking the time to organize your thoughts and share them with the community.

No problem at all, sometimes simple things are frustrating so I was just hoping to save someone a bit of time!

Thanks to you too, a lot of your posts have helped me to learn Lua and Corona SDK.

Great post!  I will definitely be looking back at this when the right time comes.

Still a long way to go though.   

Thank you!

Great post, I’d like to add a few things that we’ve picked up over the years.

Apple - Making an app preview.

If you are struggling to capture video on certain devices (because you don’t have them), try using FRAPS to capture footage from the simulator. You can set it to capture only a certain window, and it will capture the internal resolution (for lack of a better description), not the resolution that it appears on your screen. So if you set the sim to display an iPad retina screen (2048*1536) and your monitor is not that big, it doesn’t matter. It will still capture the footage at 2048*1536.

You can also use the simulator for capturing your static screenshots, display.save() will capture the screen and save the image at the resolution that the sim is set to. This is much easier than doing it on lots of devices.

Apple Review Process

“Really easy” is subjective in this case. We’ve experienced review times of up to 14 days, however they do seem to be closer to 7 at the moment. Also, it’s reviewed by a person, not a machine, and as such is subject to personal opinion. I’ve heard of devs resubmitting a failed ipa without making any changes, and getting it to pass the second time.

Google

Personally I find their console much easier to use. It may have a lot of sections but they’re clearly named, it’s much faster than Apple’s, and is easier to export/import things like IAP.

Additional bits and pieces.

This is directed to tastymushroom, but applies to everyone I guess. I would advise that if you can, try and pull things like copyright text from a server. That way you can update them without having to resubmit the whole app. Obviously you still need a hardcoded string in case there is no internet connection, but pulling up to date info from your server (or a file on S3 etc) will make it much easier for you to make instant changes if needed. 

Thanks a lot Alan, top tips!

Unfortunately FRAPS doesn’t exist for OSX, but that would have been ideal. It still might be worth me trying it in my windows VM and see what it’s like… Hell of a lot easier (and cheaper) than devices… the only downside I guess is the mouse cursor. I never thought about using display.save(). That.s a great idea… In the end I just saved individual frames from the video as a screen shot, as my game is a pretty fast arcade game, so timing screen grabs was difficult. It was a lot easier to go through the video and pick out what I though were good screens… of course now it’s out I’m completely re-vamping parts of it, so I’ve got that to do all again!

Yeah I guess I can only go on experience, but I did find that I was on the instant chat with google support quite a lot… but they were pretty good I have to say. I have’t got as far as IAP yet, so time will tell… I’m dreading that bit :slight_smile:

The text from a server idea is sound, in the case of my copyright I just plain forgot about doing it, so that first time I had to re-submit anyway. Doh!

Cheers

If you haven’t done IAP yet, I’ll give you another piece of advice. 

When you set up your IAP on iTunes, they need to be approved by Apple. To do this, setup your IAP in the IAP section of iTunes. Then when you submit your app make sure you check “submit IAPs” (or something like that) and then tick all the IAPs that you need to be approved. Then when the app itself is submitted, the IAP will be reviewed too. You only need to do this once, unless you add new IAPs later.

If you don’t do this, your IAP will not work and then you will have to resubmit your app and wait another 7+ days.

One option is to submit a build much earlier than your final build, and submit the IAP with that. I believe the IAP actually get reviewed separately from the app itself, so you may find that the IAP gets approved even if the app fails (but that failure won’t matter if it’s an alpha build). You could perhaps submit a build which is technically suitable for sale, but is not the finished product with all content, and then just not release it once it gets approved.

Thanks a lot Alan,

Yeah I get the feeling IAP is a minefield waiting to happen first time round!

Much appreciated

Doug

Thanks for the information, Doug.

I will be re-reading this in a couple of months when (hopefully) I will be releasing my own first game.

Good luck with Electron Swarm.

Jules.

Great post!  Thanks for taking the time to organize your thoughts and share them with the community.

No problem at all, sometimes simple things are frustrating so I was just hoping to save someone a bit of time!

Thanks to you too, a lot of your posts have helped me to learn Lua and Corona SDK.

Great post!  I will definitely be looking back at this when the right time comes.

Still a long way to go though.   

Thank you!

Great post, I’d like to add a few things that we’ve picked up over the years.

Apple - Making an app preview.

If you are struggling to capture video on certain devices (because you don’t have them), try using FRAPS to capture footage from the simulator. You can set it to capture only a certain window, and it will capture the internal resolution (for lack of a better description), not the resolution that it appears on your screen. So if you set the sim to display an iPad retina screen (2048*1536) and your monitor is not that big, it doesn’t matter. It will still capture the footage at 2048*1536.

You can also use the simulator for capturing your static screenshots, display.save() will capture the screen and save the image at the resolution that the sim is set to. This is much easier than doing it on lots of devices.

Apple Review Process

“Really easy” is subjective in this case. We’ve experienced review times of up to 14 days, however they do seem to be closer to 7 at the moment. Also, it’s reviewed by a person, not a machine, and as such is subject to personal opinion. I’ve heard of devs resubmitting a failed ipa without making any changes, and getting it to pass the second time.

Google

Personally I find their console much easier to use. It may have a lot of sections but they’re clearly named, it’s much faster than Apple’s, and is easier to export/import things like IAP.

Additional bits and pieces.

This is directed to tastymushroom, but applies to everyone I guess. I would advise that if you can, try and pull things like copyright text from a server. That way you can update them without having to resubmit the whole app. Obviously you still need a hardcoded string in case there is no internet connection, but pulling up to date info from your server (or a file on S3 etc) will make it much easier for you to make instant changes if needed. 

Thanks a lot Alan, top tips!

Unfortunately FRAPS doesn’t exist for OSX, but that would have been ideal. It still might be worth me trying it in my windows VM and see what it’s like… Hell of a lot easier (and cheaper) than devices… the only downside I guess is the mouse cursor. I never thought about using display.save(). That.s a great idea… In the end I just saved individual frames from the video as a screen shot, as my game is a pretty fast arcade game, so timing screen grabs was difficult. It was a lot easier to go through the video and pick out what I though were good screens… of course now it’s out I’m completely re-vamping parts of it, so I’ve got that to do all again!

Yeah I guess I can only go on experience, but I did find that I was on the instant chat with google support quite a lot… but they were pretty good I have to say. I have’t got as far as IAP yet, so time will tell… I’m dreading that bit :slight_smile:

The text from a server idea is sound, in the case of my copyright I just plain forgot about doing it, so that first time I had to re-submit anyway. Doh!

Cheers

If you haven’t done IAP yet, I’ll give you another piece of advice. 

When you set up your IAP on iTunes, they need to be approved by Apple. To do this, setup your IAP in the IAP section of iTunes. Then when you submit your app make sure you check “submit IAPs” (or something like that) and then tick all the IAPs that you need to be approved. Then when the app itself is submitted, the IAP will be reviewed too. You only need to do this once, unless you add new IAPs later.

If you don’t do this, your IAP will not work and then you will have to resubmit your app and wait another 7+ days.

One option is to submit a build much earlier than your final build, and submit the IAP with that. I believe the IAP actually get reviewed separately from the app itself, so you may find that the IAP gets approved even if the app fails (but that failure won’t matter if it’s an alpha build). You could perhaps submit a build which is technically suitable for sale, but is not the finished product with all content, and then just not release it once it gets approved.

Thanks a lot Alan,

Yeah I get the feeling IAP is a minefield waiting to happen first time round!

Much appreciated

Doug