Hi All,
My first game, Electron Swarm, has just gone live on the App store and Google play.
I’ll plug it elsewhere
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!
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!
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