Following on from my first failed entry I have managed to finish the game this week based on the recently popular Lub v Dub and Jump Chump!.
The principal of the game is to make the coloured blocks jump the green and brown obstacles. Press "A" key to make the top block jump and the "Z" key to make the bottom one. The principal is to last as long as possible.
Please have a play at http://www.parachutingfrog.com/gaw/lubdub/lubdub.html and feel free to leave comments below as to ways to improve and things you like and dont like about it. After all the purpose is to learn as much as possible from GAW.
The principal of the game is to make the coloured blocks jump the green and brown obstacles. Press "A" key to make the top block jump and the "Z" key to make the bottom one. The principal is to last as long as possible.
Please have a play at http://www.parachutingfrog.com/gaw/lubdub/lubdub.html and feel free to leave comments below as to ways to improve and things you like and dont like about it. After all the purpose is to learn as much as possible from GAW.
I read a fantastic article a few weeks a go by the ever influential Rami Ismail who wrote about the importance of failure and how getting this experience is an important learning for any game developer.
For those who have followed me over the years I have certainly struggled with an idea that grabbed me. I dabbled last year with a game a month and got lucky with 1800 but at times I felt almost like that time was too long to be working on something that didn't interest me or too short to have something polished and marketable.
As such I started this week off by following Rami's article to fail fast. Focus on something that I hadn't done before, cobble together something that just about worked and then from there see if I enjoyed working on it enough to pursue at a later date and build it into something bigger.
To start off with I thought I would tackle an "Unlock Me" type game. You have probably played this sort of game where you slide blocks around in order to get a designated block to escape the gaming arena.
As always the game is written in Unity, Futile and C# and represents about 5 days of work. However for me 5 days is only about 12 hours.
What interested me over this time is that I quickly become bored with working on it and the buzz of this concept disappeared just as soon as it had arrived. This for me was a lesson to not push through with something that I couldn't get passionate about because if I couldn't then how could I expect anyone else to.
For those who have followed me over the years I have certainly struggled with an idea that grabbed me. I dabbled last year with a game a month and got lucky with 1800 but at times I felt almost like that time was too long to be working on something that didn't interest me or too short to have something polished and marketable.
As such I started this week off by following Rami's article to fail fast. Focus on something that I hadn't done before, cobble together something that just about worked and then from there see if I enjoyed working on it enough to pursue at a later date and build it into something bigger.
To start off with I thought I would tackle an "Unlock Me" type game. You have probably played this sort of game where you slide blocks around in order to get a designated block to escape the gaming arena.
As always the game is written in Unity, Futile and C# and represents about 5 days of work. However for me 5 days is only about 12 hours.
What interested me over this time is that I quickly become bored with working on it and the buzz of this concept disappeared just as soon as it had arrived. This for me was a lesson to not push through with something that I couldn't get passionate about because if I couldn't then how could I expect anyone else to.
It is a workable grid where all the blocks can be moved around but after this short period I have decided to abandon the project a couple of days ahead of time and to move on to something a little more fulfilling.
On to week 2 :)
Its very common at the end of a year to look back and see what has been achieved over the previous 12 months and to look forward to the new year with vigour and positivity. For me it offered up a greater opportunity to not just look back on last year but also my "project" I have been on for 26 months.
On the 9th October 2011 I kicked off a journey of writing games and hopefully turn it into a pursuit that would secure the financial future of my family while applying the 10,000 hour principle to my dream. Back then I wrote a blog entry that set out goals of which all going well as I sit here today I would be writing this blog as a full-time game developer and having secured at least a number one game.
I knew when I wrote it (the blog) I was being incredibly ambitious and, in fairness, set myself some pretty unrealistic goals. Well the reality is I haven't hit any of my targets, in fact nowhere near, but nonetheless I am as involved and as motivated in the pursuit of writing games as I was when I penned the blog over 2 years ago.
The best advice I got early on was getting your early apps out the way as quickly as possible. Strange advice you would think but hidden within that simple sentence was that you gain so much from each app you write there is no point dwelling nor seeking perfection nor never releasing but to take something from it and move on. Yet despite this so many people give up after their first game as they think they will make a load of money or its easier to do than it actually is.
I know having completed Astavoid I really struggled for the second game not that Astavoid was any kind of success but difficult without the experience to know where to go next. What was a blessing was a concept called one game a month (1GAM) which as it suggests sets focus on writing small games in iterations of a month. This really changed the focus for me and so I kicked off 2013 in quite a structured way.
January
Kicking off the year I took quite a big decision to move from Corona SDK to Unity3D. At the time it was a very big decision because the little I did know I gained through learning the LUA programming language as well as writing for Android and iOS in Corona. However, the types of games I wanted to move on to in 2013 were hampered by the lack of progress the Corona platform was making and while Cocos2D was a consideration I felt Unity3D would cover off most scenarios I could come up with. As this was a big shift for me I decided to turn a game around in a month I would stick to what I knew and rewrite Astavoid in c# and in Unity3D not least for future support. I'll be honest I found Unity3D overwhelming at first because as a developer I was far more code centric, programming sat better with me. This is why I decided to engage with Unity3D using Futile the 2D code centric framework which worked pretty well for me and got the job done.
February
Having ticked off the first month I wanted to do something completely different so I decided to write a game that could fit on one screen but would build upon what I had previously learnt. I decided to write a game that was a twist on the classic game frogger as I wouldn't need to consider game play elements as in principle I could copy but then put my own twist on it. My twist was on the joke "Why did the chicken cross the road ..." where I changed the frog for a chicken. This really helped as I learnt to use packages such as glyphdesigner and customised and scaled fonts. Not a bad little game in the end but one I was never going to push on to iOS as it lacked polish and depth.
Have a play here there if you fancy seeing progress made.
March
March was really where my year started to change. As it happened Easter was falling quite early in 2013 so I thought seasonal games always did well so I would make that the focus of my March game. However, over half way through the month I really hadn't come up with anything good but was determined to not fail with 1GAM so early in the year. Instead I decided to focus on something that wasn't graphic focused but could easily generate a number of levels of code rather than anything too time consuming. I had played and enjoyed games like Gauge and decided something like this would be the direction and from which 1800 was born. In essence the game was written within a week and the last week of the month was taken up implementing the analytics framework, Flurry, and reacquainting myself with Testflight for beta testers and the invaluable feedback.
I won't bloat this brain dump anymore than I need to but all the intricate details of 1800 can be found in the postmortem I wrote back in June.
April
I mentioned in March I wanted to not give up on 1GAM but to be honest April is where it ended. But it was positive reasons this time as 1800 did far better than I ever expected. As such I had review sites wanting press kits and players of the app (1800) wanting to remove adverts via IAP. It was during this month that I decided to turn my progress to "One new skill a month" ensuring that while I wouldn't be pumping out a new game I at least was learning.
So having put a press kit of sorts together of various press releases (via prMac), icons, images et al and implementing in app purchases using the Prime31 plugin I was pretty content with the first third of the year.
May
As 1800 continued to be downloaded I wanted to make as much use of the user base I was acquiring to promote future games to. It was for this reason I wrote a new game mode for 1800 called "reaction" and decided rather than unlocking via an In App purchase to experiment via Twitter followers. This meant implementing another plugin from Prime31 for social networking which if the user clicked the call to action within the game to follow us it unlocked the game mode. It didn't get a huge up take but it did at least get some new followers and I had learnt a new skill.
During this month I also refactored some of the code I had butchered over the previous couple of months and also implemented a scene manager to help the additional game modes and screens I was adding.
June
I drew a line under 1800 in June and started writing a new game. This was focused on something that I could apply my new found knowledge of In-app purchases to and the game design would be driven from this. I started writing a game based on consumables that meant the player would have to engage in some monetary activity of which I chose Black Jack (twenty-one). I created a basic game system and implemented GameCenter and Turn-based plugins for the social and community side to keep people on the game. A busy month.
July
Throughout the month I worked on artificial intelligence of the computer (dealer) player for the one player aspect of the game. This was a first for me as I had only ever worked on one player games to this point. Furthermore, I worked on the turn based aspect of Game Center which I found a very very time consuming process while testing. This meant me testing either on the same app and logging in and out to see if move had passed or having two devices with a potentially buggy piece of code. A large amount of this month was taken up with not much progress.
August
Over the previous two months the game was certainly coming on I just wasn't convinced by it and if I wasn't why would anybody else. Already I had spent around 10 weeks on something that I felt was not any closer to being launched and therefore had become disillusioned. There were certainly positives to this time spent but not something I could call a game.
Being mindful I struggled for over six months the previous year for inspiration and misdirection I decided I wanted to be a little more structured with my next game(s) that I could apply the principles of app flipping to I had read so much about during this period to help me achieve the goals I had set about in the initial project blog. I decided I would write a grid framework that I could write Match-3-esque games that was flexible and I could build upon as my skills grew.
With that the start of writing a game focused code library and framework started as well as deciding to include localisation in my next game that would also be built into this framework.
September
Work continued in earnest over this month on the grid framework so I decided to develop to known game mechanics again such as Tic-tac-toe, Connect 4 and Peg Solitaire so again there would be familiarity to the player and I could concentrate on my learnings.
I also thought a lot to social engagement and keeping the "stickiness" of the app so looked to push notifications through Urban Airship to be added to this framework.
October
Throughout October I was considering more and more the monetisation of the app(s) but I still didn't think I was established enough with my skills nor the ideas were original enough to warrant being paid games. That said with my previous efforts of Astavoid and 1800 although they were advert supported the financial returns were awful so I decided to turn my attentions to writing my own advert logic that would principally focus on using Chartboost backed up with RevMob.
By this time I had decided that the peg solitaire version of the three games was by far the strongest. I had struggled again with Connect 4 and Tic-tac-toe with the turn-based logic and without this the games were very poor and one dimensional. So I put all efforts in launching my third game, Solisqr.
November
Having (prematurely) announced that Solisqr would be one of three games to form the froglet collection I had subsequently decided that I wouldn't be launching the other two. This was because much better games of those mechanics were coming out and I again became disillusioned by those not working. So I pushed on with Solisqr and engaged with a brilliant beta team using Testflight, my third game was ready.
I was a lot more structured with my marketing this time. I set a date in December and worked on a marketing campaign for the second half of the month. I revamped the company website which was overdue and then used the excellent Presskit() to create a whole new press section and a specific page for Solisqr.
December
With the game approved the marketing and PR intensified and for the first time I did pre release promos. Having read this article I used the redeem-now website so I could tag and keep track of who had engaged with my personalised email and offer of a promo code. Not as many as I would have liked and some who said that would review didn't and those I didn't send a code wrote a review or article. Jury is still out on the effectiveness of this process.
December also threw up some new opportunities which were probably the biggest achievement for me of the 2 years in that the community chose my journey significant enough to want to work with me. I had to turn down some offers of collaboration earlier in the year as the timing wasn't good. However, one in particular came to me in December just around the launch of Solisqr which was right for lots of reasons. Project M (as it will be known for the time being) is going well and looking at an April-ish launch. Very excited by this as it allows me to work with other people who have there own talents and again accelerate my learnings.
Summary
These sort of reflections are also best summarised by statistics I feel so lets look back at some of the headline figures.
First, downloads, during 2012 Astavoid was my only launch and in the main most of the download for it came in the first fortnight. However, during my first year I achieved 2,732 downloads. As at time of writing (31/12/2013) and with two new games (1800 and Solisqr) and a handful of Astavoid downloads I have had 41,223 in 2013 which is an increase of 1409%, not bad!
Second, revenue. As I noted in my Astavoid postmortem for 2012 I made the principle sum of $10. This, however, didn't payout until $20 was reached which was only hit in March 2013. The total revenue for 2013 is $2,034.71 so again not a bad increase but nothing like the figures I was looking for from my initial blog.
So how have the games faired in terms of highest rankings, another metric in my initial blog.
Astavoid
For brevity I will include the best of the two formats (iPhone or iPad) and in the case of Astavoid it has faired significantly better on iPad.
1800
Currently, 1800 is my most successful title and at time of writing has been out for about 8 months.
So all in all pretty happy with progress.
2014
So what does the new year have in store? Well without a doubt new learnings, new games and continuing the journey on this project and eating in to those 10,000 hours. Very excited about Project M and how that is progressing as well as the imminent arrival of 1800 and Solisqr on Android. Already game design documents for a handful of games exist for an exciting yet busy year ahead.
Happy new year all.
Solisqr, 1800 and Astavoid are available on the app store for Free.
On the 9th October 2011 I kicked off a journey of writing games and hopefully turn it into a pursuit that would secure the financial future of my family while applying the 10,000 hour principle to my dream. Back then I wrote a blog entry that set out goals of which all going well as I sit here today I would be writing this blog as a full-time game developer and having secured at least a number one game.
I knew when I wrote it (the blog) I was being incredibly ambitious and, in fairness, set myself some pretty unrealistic goals. Well the reality is I haven't hit any of my targets, in fact nowhere near, but nonetheless I am as involved and as motivated in the pursuit of writing games as I was when I penned the blog over 2 years ago.
The best advice I got early on was getting your early apps out the way as quickly as possible. Strange advice you would think but hidden within that simple sentence was that you gain so much from each app you write there is no point dwelling nor seeking perfection nor never releasing but to take something from it and move on. Yet despite this so many people give up after their first game as they think they will make a load of money or its easier to do than it actually is.
I know having completed Astavoid I really struggled for the second game not that Astavoid was any kind of success but difficult without the experience to know where to go next. What was a blessing was a concept called one game a month (1GAM) which as it suggests sets focus on writing small games in iterations of a month. This really changed the focus for me and so I kicked off 2013 in quite a structured way.
January
Kicking off the year I took quite a big decision to move from Corona SDK to Unity3D. At the time it was a very big decision because the little I did know I gained through learning the LUA programming language as well as writing for Android and iOS in Corona. However, the types of games I wanted to move on to in 2013 were hampered by the lack of progress the Corona platform was making and while Cocos2D was a consideration I felt Unity3D would cover off most scenarios I could come up with. As this was a big shift for me I decided to turn a game around in a month I would stick to what I knew and rewrite Astavoid in c# and in Unity3D not least for future support. I'll be honest I found Unity3D overwhelming at first because as a developer I was far more code centric, programming sat better with me. This is why I decided to engage with Unity3D using Futile the 2D code centric framework which worked pretty well for me and got the job done.
February
Having ticked off the first month I wanted to do something completely different so I decided to write a game that could fit on one screen but would build upon what I had previously learnt. I decided to write a game that was a twist on the classic game frogger as I wouldn't need to consider game play elements as in principle I could copy but then put my own twist on it. My twist was on the joke "Why did the chicken cross the road ..." where I changed the frog for a chicken. This really helped as I learnt to use packages such as glyphdesigner and customised and scaled fonts. Not a bad little game in the end but one I was never going to push on to iOS as it lacked polish and depth.
Have a play here there if you fancy seeing progress made.
March
March was really where my year started to change. As it happened Easter was falling quite early in 2013 so I thought seasonal games always did well so I would make that the focus of my March game. However, over half way through the month I really hadn't come up with anything good but was determined to not fail with 1GAM so early in the year. Instead I decided to focus on something that wasn't graphic focused but could easily generate a number of levels of code rather than anything too time consuming. I had played and enjoyed games like Gauge and decided something like this would be the direction and from which 1800 was born. In essence the game was written within a week and the last week of the month was taken up implementing the analytics framework, Flurry, and reacquainting myself with Testflight for beta testers and the invaluable feedback.
I won't bloat this brain dump anymore than I need to but all the intricate details of 1800 can be found in the postmortem I wrote back in June.
April
I mentioned in March I wanted to not give up on 1GAM but to be honest April is where it ended. But it was positive reasons this time as 1800 did far better than I ever expected. As such I had review sites wanting press kits and players of the app (1800) wanting to remove adverts via IAP. It was during this month that I decided to turn my progress to "One new skill a month" ensuring that while I wouldn't be pumping out a new game I at least was learning.
So having put a press kit of sorts together of various press releases (via prMac), icons, images et al and implementing in app purchases using the Prime31 plugin I was pretty content with the first third of the year.
May
As 1800 continued to be downloaded I wanted to make as much use of the user base I was acquiring to promote future games to. It was for this reason I wrote a new game mode for 1800 called "reaction" and decided rather than unlocking via an In App purchase to experiment via Twitter followers. This meant implementing another plugin from Prime31 for social networking which if the user clicked the call to action within the game to follow us it unlocked the game mode. It didn't get a huge up take but it did at least get some new followers and I had learnt a new skill.
During this month I also refactored some of the code I had butchered over the previous couple of months and also implemented a scene manager to help the additional game modes and screens I was adding.
June
I drew a line under 1800 in June and started writing a new game. This was focused on something that I could apply my new found knowledge of In-app purchases to and the game design would be driven from this. I started writing a game based on consumables that meant the player would have to engage in some monetary activity of which I chose Black Jack (twenty-one). I created a basic game system and implemented GameCenter and Turn-based plugins for the social and community side to keep people on the game. A busy month.
July
Throughout the month I worked on artificial intelligence of the computer (dealer) player for the one player aspect of the game. This was a first for me as I had only ever worked on one player games to this point. Furthermore, I worked on the turn based aspect of Game Center which I found a very very time consuming process while testing. This meant me testing either on the same app and logging in and out to see if move had passed or having two devices with a potentially buggy piece of code. A large amount of this month was taken up with not much progress.
August
Over the previous two months the game was certainly coming on I just wasn't convinced by it and if I wasn't why would anybody else. Already I had spent around 10 weeks on something that I felt was not any closer to being launched and therefore had become disillusioned. There were certainly positives to this time spent but not something I could call a game.
Being mindful I struggled for over six months the previous year for inspiration and misdirection I decided I wanted to be a little more structured with my next game(s) that I could apply the principles of app flipping to I had read so much about during this period to help me achieve the goals I had set about in the initial project blog. I decided I would write a grid framework that I could write Match-3-esque games that was flexible and I could build upon as my skills grew.
With that the start of writing a game focused code library and framework started as well as deciding to include localisation in my next game that would also be built into this framework.
September
Work continued in earnest over this month on the grid framework so I decided to develop to known game mechanics again such as Tic-tac-toe, Connect 4 and Peg Solitaire so again there would be familiarity to the player and I could concentrate on my learnings.
I also thought a lot to social engagement and keeping the "stickiness" of the app so looked to push notifications through Urban Airship to be added to this framework.
October
Throughout October I was considering more and more the monetisation of the app(s) but I still didn't think I was established enough with my skills nor the ideas were original enough to warrant being paid games. That said with my previous efforts of Astavoid and 1800 although they were advert supported the financial returns were awful so I decided to turn my attentions to writing my own advert logic that would principally focus on using Chartboost backed up with RevMob.
By this time I had decided that the peg solitaire version of the three games was by far the strongest. I had struggled again with Connect 4 and Tic-tac-toe with the turn-based logic and without this the games were very poor and one dimensional. So I put all efforts in launching my third game, Solisqr.
November
Having (prematurely) announced that Solisqr would be one of three games to form the froglet collection I had subsequently decided that I wouldn't be launching the other two. This was because much better games of those mechanics were coming out and I again became disillusioned by those not working. So I pushed on with Solisqr and engaged with a brilliant beta team using Testflight, my third game was ready.
I was a lot more structured with my marketing this time. I set a date in December and worked on a marketing campaign for the second half of the month. I revamped the company website which was overdue and then used the excellent Presskit() to create a whole new press section and a specific page for Solisqr.
December
With the game approved the marketing and PR intensified and for the first time I did pre release promos. Having read this article I used the redeem-now website so I could tag and keep track of who had engaged with my personalised email and offer of a promo code. Not as many as I would have liked and some who said that would review didn't and those I didn't send a code wrote a review or article. Jury is still out on the effectiveness of this process.
December also threw up some new opportunities which were probably the biggest achievement for me of the 2 years in that the community chose my journey significant enough to want to work with me. I had to turn down some offers of collaboration earlier in the year as the timing wasn't good. However, one in particular came to me in December just around the launch of Solisqr which was right for lots of reasons. Project M (as it will be known for the time being) is going well and looking at an April-ish launch. Very excited by this as it allows me to work with other people who have there own talents and again accelerate my learnings.
Summary
These sort of reflections are also best summarised by statistics I feel so lets look back at some of the headline figures.
First, downloads, during 2012 Astavoid was my only launch and in the main most of the download for it came in the first fortnight. However, during my first year I achieved 2,732 downloads. As at time of writing (31/12/2013) and with two new games (1800 and Solisqr) and a handful of Astavoid downloads I have had 41,223 in 2013 which is an increase of 1409%, not bad!
Second, revenue. As I noted in my Astavoid postmortem for 2012 I made the principle sum of $10. This, however, didn't payout until $20 was reached which was only hit in March 2013. The total revenue for 2013 is $2,034.71 so again not a bad increase but nothing like the figures I was looking for from my initial blog.
So how have the games faired in terms of highest rankings, another metric in my initial blog.
Astavoid
For brevity I will include the best of the two formats (iPhone or iPad) and in the case of Astavoid it has faired significantly better on iPad.
1800
Currently, 1800 is my most successful title and at time of writing has been out for about 8 months.
Solisqr
At time of writing Solisqr has only been out for about a fortnight but has faired pretty well, particularly in Canada. The first 10 days of downloads were very similar to 1800 with a very different spread of downloads across the days.
2014
So what does the new year have in store? Well without a doubt new learnings, new games and continuing the journey on this project and eating in to those 10,000 hours. Very excited about Project M and how that is progressing as well as the imminent arrival of 1800 and Solisqr on Android. Already game design documents for a handful of games exist for an exciting yet busy year ahead.
Happy new year all.
Solisqr, 1800 and Astavoid are available on the app store for Free.
After many, many months of development we are very proud to announce the arrival of 4 new games from Parachuting Frog: The Froglet Collection; Solisqr; TicTacToe and Connect4. A lot of time has been taken to hone and develop our skills and have been keen to develop our own grid framework of which the four games are the fruits of our labour. For those that know traditional games of TicTacToe and Connect4 these were early learnings to develop and enhance the grid framework before enhancing further. As more was learnt the design angle and simplicity that was brought with 1800 made these games in their own right fun and enjoyable so felt it only right to launch and share.
All the games are a significant increase in the complexity of our previous games of 1800 and Astavoid with game features including:
- All new stylish menu system
- En vogue flat design ideal and in keeping with iOS7
- Localisation: translated and available in English, German, French, Italian, Spanish and Portuguese
- Social gaming with leaderboard, achievements, challenges and turn based interaction with Game Center.
- Multiple on device and online games modes including: Pass and play, single player with Easy, Medium and hard game modes as well as online play.
Solisqr, TicTacToe and Connect4 will be free games supported by ads.
Due to the complexities (to us) of the framework we have wanted to launch Solisqr to beta first to test our grid and menu systems as well as the localised translations of our core system.
To set the scene of Solisqr it is based on the popular board game, Pegged Solitaire or Solitaire. The challenge of the game comes in the form of both completing the challenge of only one peg (or square) remaining in the central position and done in the fastest time possible.
What we are looking for are enthusiastic beta testers that want to play the game early, that speak the languages laid out above and are willing to provide regular feedback to help us weedle out those nasty bugs as well as provide constructive criticism to make this the very best game collection possible.
If you are interested in beta testing then please register here and feel free to ask any questions at info@parachutingfrog.com.
It is pretty much a year to the day that I penned my last postmortem for Astavoid. At that time Astavoid was my first game and the amount learnt during that process was immeasurable. However, what it did do was open my eyes to just how difficult it is for an novice, indie developer to make a difference and just how difficult the goals set out in my project would be.
Roll on a year and I can safely say I have learnt a lot, lot more. Since that article I had six months of what felt like going round in circles but this led to a period of focus around Christmas / the turn of the year. The two factors that have contributed to the focus was the movement to Unity from Corona, and the other was the one game a month initiative.
To quote the one game a month (1GAM) website for those not aware of its goals: "Starting a game is easy. Finishing a game is hard. One Game A Month is a gamedev challenge where everyone's invited. Your quest is to create one game each month for the entirety of 2013. It might sound crazy, but the truth is that it isn't all that hard."
So this is exactly what I set upon during the early part of 2013 and actually at the time of writing is what I am adhering to. It is because of this approach that 1800 came about but it almost didn't happen.
During March 2013 I had just finished my game 1GAM for February and decided because Easter was falling early that year I would create an Easter game. What I struggled with was a decent concept and played around with a few prototypes for a week or so. What the 1GAM concept had taught me was rapid focus and discipline, and therefore if it isn't working move on. If it is unlikely to be completed within a month then its too complicated. If you can't explain your core game in a sentence, it is also too complicated.
The Design
With only 20 days of the month to go after my deliberations I set my thoughts on a design that was more about playability than graphics. Something that I could programmatically generate levels to add content rather than bogged down with design.
I hit upon the idea for 1800 almost immediately. Inspired by games like hundreds and gauge where style and accessibility win out over fireworks and sparkle, I felt that this would fit well with my new found approach and limited timeframe.
Additionally, I wanted to keep the file size of the app small and already at a disadvantage with Unity iOS Basic's unoptimised /compressed framework I didn't want to bloat with large spritesheets.
All these factors brought together led itself to a minimalist design that unwittingly hit upon an en vogue concept of flat design.
I won't talk at length about flat design within this blog as this article does it far better than I could, however, it essentially means applying no gradients, shadows, bevels or embossing to your graphics and having thereby having just flat coloured assets. This coupled with a hybrid pastel colour and 1800 immediately felt very appealing to the eye.
The main criticism, and rightly so, of Astavoid was its lack of depth. One of my main goals I wanted to achieve from 1800 was to make it more "sticky" and by that I mean keeping players in my game longer. While 1800 wasn't about making money but more tailoring my craft it was important to have the game engaging and encourage another quick go.
The mechanic of the game was simple. I had created a rectangle and the player must stop a cursor as close to the middle of this rectangle to achieve as high a score as possible. I would calculate the number of pixel offset from the middle (central axis) of the screen and subtract from a total score of 1800. Great I had one level now what. Based on this calculation I started including lines and further arrows and carried out further mathematics on the differential between alignment to central axis. This gave a little bit more depth particularly when varying the speed of arrows and lines.
Within about 8 days (25 hours development) I had finished 1800 and was ready for people to have a play and provide feedback. I decided upon using Testflight to let some of my very helpful twitter followers test the app. I cannot under estimate just what a useful step this was in the development of the game.
Testing
I'll be honest I was nervous when I released for testing. Like a proud Dad I didn't want anyone to be disparaging of my efforts but even worse tell me it was a good game when it wasn't. What I was pleased with was just how consistent the feedback was from my 12 or so testers and that in the main very positive about how addictive it was despite its simple facade.
My twitter followers are probably an over critical bunch. I mean that in a good way in that they fit a demographic of game developers and seasoned gamers. I too fit this and having played games for nearly 30 years a game like 1800 wouldn't normally jump out at me as something I would be looking out for. However, there was something about its mechanics that really appealed, not just to me, but to my wife and family as well.
A slightly discouraging feedback that came from the testers was that they had completed the 20 levels in under 10 minutes. This wasn't really what I was looking for when talking of stickiness in my earlier comments.
Some more feedback was having implemented a unlocking level star system, a la Angry Birds, it wasn't clear to the testers just what triggered an unlock nor was there really any incentive to go back and improve scores once all 20 levels were complete.
In addition, the most important feedback came back about my UI design and workflow. I had overlooked a major factor in fuelling my stickiness and that was providing a mechanism to retry a game immediately.
Redesign
Based on the feedback from the testers I went about implementing some new features that would provide the goals I was looking for.
First of all I changed the mechanic of the star system to only provide 3 stars if 1800 is achieved on a level. This on some levels was very challenging so would hopefully provide the desire to come back and improve scores. I also introduced a new game mode called time attack which was unlocked after 40 stars (out of a possible 60) was obtained thereby providing further depth to the game. Time attack was using the same scoring mechanism but this time over 60 seconds rather than just one shot.
The next big implementation was to add a retry button into the in-game menu system that allowed you to replay the same game immediately or go back to the level select. In hindsight once implemented I had no idea why I didn't do this in the first place but I guess thats the value of beta testing.
A few minor iterations of testing followed but at this point I was pretty happy to stick it up on to app store and kick off the review process. This was around the last week of March 2013.
Measurement and analytics
So that I could ascertain whether this design concept had been successful I decided to include the mobile analytics SDK from Flurry, to understand how my potential players interact with 1800. This I felt would let me know remotely what is and isn't working and adapt appropriately with updates. I also included Flurry's interstitial ads for a little bit of monetisation.
Additionally, I added Adwhirl into the game a decision I didn't take lightly as it went against the minimalist design of the game but I didn't want to completely rule out making money. However, I strongly felt the design and concept of the game didn't lend itself to In App purchases.
More on the analytics later.
Marketing
While I was waiting for the game to be reviewed by Apple I started on my marketing trail which would consist of twitter and forums. In my experience of Astavoid I encountered there are many reviews sites willing to take my hard earned cash. Equally I didn't have an advertising budget given that 1800 would be predominantly free.
Instead I decided that each day for about 10 days I would post a teaser image or description of the game on to my twitter account (@gameproject10k) and the touch arcade forum. At the very least I would get the name out there and a little bit of interest. I wasn't expecting much from this approach (given I only have 250 twitter followers for example) but was more than I did for Astavoid.
1800 was approved in the first couple of days of April 2013 so I had decided to launch on the second Thursday of the month, the 11th. This allowed me to step up my twitter campaign, begging for retweets etc as well as drumming up a little following on TA forum.
I had decided to defer the prMac press release (I did this for Astavoid too but on launch day) until a few days after 1800's launch in an effort to understand what effect this had on launch day. It is very difficult to understand the worth of a release day press release campaign when twitter bots look out for new apps and tweet its arrival. The only metric I had was I created a prMac press release as the only thing I did for Astavoid and to this day (June 2013) the launch day downloads still account for a third of its total.
Launch Day, downloads and stats
The day arrived and the usual nervousness kicked in as to whether it was going to work on all those devices, whether I had screwed something up when creating the release and generally how it was going to be perceived.
I had set myself the goal for 1800 of approximately 5,000 downloads in total. The reason for this goal was to improve on the 3,500 Astavoid downloads had achieved in the 12 months prior to writing 1800.
Launch day was great, I managed to get over 2,100 downloads which beat my Astavoid launch day without any real PR. While taking a break from constantly refreshing chart positions and reviews I took a break to read the Toucharcade App to see what other launch day apps were out and I was competing against. I was very pleasantly surprised to be greeted with the following:
So without question from a downloads perpective this has eclipsed my goal of 5,000 downloads and a small one off feature having quite an effecrt At time of writing (early June 2013) 1800 has been downloaded over 15,000. Not bad for my second game that was written in a little over 25 hours and no marketing budget.
Chart Positions
So what countries did 1800 fair best in?
Analytics
What about other analytical factors we spoke of earlier. Has the design led to more sticky games.
Pictures paint a thousand words!
Session Length
Over recent weeks the median length this has tailed off a little from 2 minutes a session to just over a minute, but nonetheless a median of over 1 minute playing the game across over 35,000 sessions is pretty good given that a game on any of the levels could be played in a matter of seconds.
Games played
The statistic on session length and short game bursts is backed up by the new game event I added in which shows the number of games played per session.
At time of writing 670,000 games of 1800 have been played. A statistic which I still struggle to comprehend that my little game has been played that many times and occupied that many people's time and attention.
Audience
The last statistic was to ascertain just what the demographic of 1800 had become. When I talked earlier about accessibility just how far reaching had it proven to be?
As can be seen from statistics that could be obtained it does show a pretty wide audience for 1800 which aligns itself to its accessible and casual nature.
Monetisation
Probably the million dollar question (pun intended :) ) is just how much money has 1800 made. Not a lot, but to be honest when I originally wrote this that wasn't the point. I wasn't comfortable in my artistry or execution to ask for someone's hard earned cash but instead decided to subsidise with ads. A decision I wasn't entirely happy with as it goes against the minimalist design of the game.
What was interesting as 1800 was accessed by more and more people was just how many people wanted to pay for it. A concept and request I thought I never thought I would see. People even asked for my PayPal account to make a donation.
Obviously not comfortable with donations I decided the easiest thing to do was to add in an ad removal option that would provide some money and give the option for donations. While the sentiment was great this hasn't been a money spinner but instead 6 generous souls have paid for this option.
So just how much has 1800 earned and by what means?
Flurry: $12.93
iAd: $28.77
AdMobs: $14.47
Total: $56.17
Not bad I guess but certainly not life changing and certainly not enough for me to consider giving up my full time job.
Beyond Financial Reward
1800 for me has been a success which is weird thing to say considering what I have just stated above concerning the financials. Making the game accessible has meant the audience has been wide and diverse and that has naturally led to larger downloads. Hitting upon the "just one more game" obsession has seen the large number of games played.
Purely by chance the design element was a fortunate fluke and had no idea at the time it was en vogue. Maybe I am doing myself an injustice and that my artistic eye hit upon something that was right.
What I have learned from my 1,000+ hours developing games is the craft of writing games and not the monetary reward. If you put your heart and soul into something then the rewards will come.
The exposure in TouchArcade certainly helped a lot. It will be interesting to see from my next game just how much exposure and cross promotion from this base will influence the download figures but without such influential placement and articles I have to be realistic that achieving these levels of downloads could be challenging.
But despite all of this 1800 for me has gone beyond monetary reward. I won't betray the confidence of the person who wrote to me but instead will summarise their story to make my point.
A player of 1800 contacted me about a week after launch. They told me their story of how they were once policeman who was called out to an accident one night. While at the scene they themselves were hit by a car. A significant period of time passed which was spent rebuilding their life as the injuries sustained meant they would never work as a policeman again. The injuries had meant that multi-tasking and concentration had become a struggle. Most recently they had been taking exams to build steps for their future.
The email continued to say that having played 1800 over a period of a few days not only had it helped them improve their concentration and reactions but had helped them achieve higher marks in their exam.
To me that is priceless.
1800 is available for free on iOS for iPhone, iPad and iPod via the AppStore
Follow me at @gameproject10k for further updates and adventures.
Roll on a year and I can safely say I have learnt a lot, lot more. Since that article I had six months of what felt like going round in circles but this led to a period of focus around Christmas / the turn of the year. The two factors that have contributed to the focus was the movement to Unity from Corona, and the other was the one game a month initiative.
To quote the one game a month (1GAM) website for those not aware of its goals: "Starting a game is easy. Finishing a game is hard. One Game A Month is a gamedev challenge where everyone's invited. Your quest is to create one game each month for the entirety of 2013. It might sound crazy, but the truth is that it isn't all that hard."
So this is exactly what I set upon during the early part of 2013 and actually at the time of writing is what I am adhering to. It is because of this approach that 1800 came about but it almost didn't happen.
During March 2013 I had just finished my game 1GAM for February and decided because Easter was falling early that year I would create an Easter game. What I struggled with was a decent concept and played around with a few prototypes for a week or so. What the 1GAM concept had taught me was rapid focus and discipline, and therefore if it isn't working move on. If it is unlikely to be completed within a month then its too complicated. If you can't explain your core game in a sentence, it is also too complicated.
The Design
With only 20 days of the month to go after my deliberations I set my thoughts on a design that was more about playability than graphics. Something that I could programmatically generate levels to add content rather than bogged down with design.
I hit upon the idea for 1800 almost immediately. Inspired by games like hundreds and gauge where style and accessibility win out over fireworks and sparkle, I felt that this would fit well with my new found approach and limited timeframe.
Additionally, I wanted to keep the file size of the app small and already at a disadvantage with Unity iOS Basic's unoptimised /compressed framework I didn't want to bloat with large spritesheets.
All these factors brought together led itself to a minimalist design that unwittingly hit upon an en vogue concept of flat design.
I won't talk at length about flat design within this blog as this article does it far better than I could, however, it essentially means applying no gradients, shadows, bevels or embossing to your graphics and having thereby having just flat coloured assets. This coupled with a hybrid pastel colour and 1800 immediately felt very appealing to the eye.
The main criticism, and rightly so, of Astavoid was its lack of depth. One of my main goals I wanted to achieve from 1800 was to make it more "sticky" and by that I mean keeping players in my game longer. While 1800 wasn't about making money but more tailoring my craft it was important to have the game engaging and encourage another quick go.
The mechanic of the game was simple. I had created a rectangle and the player must stop a cursor as close to the middle of this rectangle to achieve as high a score as possible. I would calculate the number of pixel offset from the middle (central axis) of the screen and subtract from a total score of 1800. Great I had one level now what. Based on this calculation I started including lines and further arrows and carried out further mathematics on the differential between alignment to central axis. This gave a little bit more depth particularly when varying the speed of arrows and lines.
Within about 8 days (25 hours development) I had finished 1800 and was ready for people to have a play and provide feedback. I decided upon using Testflight to let some of my very helpful twitter followers test the app. I cannot under estimate just what a useful step this was in the development of the game.
Testing
I'll be honest I was nervous when I released for testing. Like a proud Dad I didn't want anyone to be disparaging of my efforts but even worse tell me it was a good game when it wasn't. What I was pleased with was just how consistent the feedback was from my 12 or so testers and that in the main very positive about how addictive it was despite its simple facade.
My twitter followers are probably an over critical bunch. I mean that in a good way in that they fit a demographic of game developers and seasoned gamers. I too fit this and having played games for nearly 30 years a game like 1800 wouldn't normally jump out at me as something I would be looking out for. However, there was something about its mechanics that really appealed, not just to me, but to my wife and family as well.
A slightly discouraging feedback that came from the testers was that they had completed the 20 levels in under 10 minutes. This wasn't really what I was looking for when talking of stickiness in my earlier comments.
Some more feedback was having implemented a unlocking level star system, a la Angry Birds, it wasn't clear to the testers just what triggered an unlock nor was there really any incentive to go back and improve scores once all 20 levels were complete.
In addition, the most important feedback came back about my UI design and workflow. I had overlooked a major factor in fuelling my stickiness and that was providing a mechanism to retry a game immediately.
Redesign
Based on the feedback from the testers I went about implementing some new features that would provide the goals I was looking for.
First of all I changed the mechanic of the star system to only provide 3 stars if 1800 is achieved on a level. This on some levels was very challenging so would hopefully provide the desire to come back and improve scores. I also introduced a new game mode called time attack which was unlocked after 40 stars (out of a possible 60) was obtained thereby providing further depth to the game. Time attack was using the same scoring mechanism but this time over 60 seconds rather than just one shot.
The next big implementation was to add a retry button into the in-game menu system that allowed you to replay the same game immediately or go back to the level select. In hindsight once implemented I had no idea why I didn't do this in the first place but I guess thats the value of beta testing.
A few minor iterations of testing followed but at this point I was pretty happy to stick it up on to app store and kick off the review process. This was around the last week of March 2013.
So that I could ascertain whether this design concept had been successful I decided to include the mobile analytics SDK from Flurry, to understand how my potential players interact with 1800. This I felt would let me know remotely what is and isn't working and adapt appropriately with updates. I also included Flurry's interstitial ads for a little bit of monetisation.
Additionally, I added Adwhirl into the game a decision I didn't take lightly as it went against the minimalist design of the game but I didn't want to completely rule out making money. However, I strongly felt the design and concept of the game didn't lend itself to In App purchases.
More on the analytics later.
Marketing
While I was waiting for the game to be reviewed by Apple I started on my marketing trail which would consist of twitter and forums. In my experience of Astavoid I encountered there are many reviews sites willing to take my hard earned cash. Equally I didn't have an advertising budget given that 1800 would be predominantly free.
Instead I decided that each day for about 10 days I would post a teaser image or description of the game on to my twitter account (@gameproject10k) and the touch arcade forum. At the very least I would get the name out there and a little bit of interest. I wasn't expecting much from this approach (given I only have 250 twitter followers for example) but was more than I did for Astavoid.
1800 was approved in the first couple of days of April 2013 so I had decided to launch on the second Thursday of the month, the 11th. This allowed me to step up my twitter campaign, begging for retweets etc as well as drumming up a little following on TA forum.
I had decided to defer the prMac press release (I did this for Astavoid too but on launch day) until a few days after 1800's launch in an effort to understand what effect this had on launch day. It is very difficult to understand the worth of a release day press release campaign when twitter bots look out for new apps and tweet its arrival. The only metric I had was I created a prMac press release as the only thing I did for Astavoid and to this day (June 2013) the launch day downloads still account for a third of its total.
Launch Day, downloads and stats
The day arrived and the usual nervousness kicked in as to whether it was going to work on all those devices, whether I had screwed something up when creating the release and generally how it was going to be perceived.
I had set myself the goal for 1800 of approximately 5,000 downloads in total. The reason for this goal was to improve on the 3,500 Astavoid downloads had achieved in the 12 months prior to writing 1800.
Launch day was great, I managed to get over 2,100 downloads which beat my Astavoid launch day without any real PR. While taking a break from constantly refreshing chart positions and reviews I took a break to read the Toucharcade App to see what other launch day apps were out and I was competing against. I was very pleasantly surprised to be greeted with the following:
Amazing. The game had found some love on the Touch Arcade forums and like my assessment earlier forum members felt they shouldn't like it but they just did and kept coming back for just one more game, time and time again. Initial feedback was that perhaps my goal for stickiness seemed to be on track.
But this euphoria was short lived, no lack of exposure on the TouchArcade forums could stop the next day's download stats from being lower. But realistically what should I expect given this was really the only marketing push it was getting.
That said the next big push was coming on the following Monday from prMac so I sat back over the weekend, refreshed the website, rankings and charts on a one minute cycle and see what would happen. By the Sunday just 4 days after launch 1800 was getting just 254 downloads, I say just as in context this was disappointing given the launch day. However, on reflection some games don't even get that from their entire lifetime.
On the Monday, my prMac press release went out, a few TA forum quotes and a little background about what I was trying to do and I was ready to see its effect. I timed the release to go out mid morning in the USA which would still be picked up by european agencies in the afternoon.
This I thought were decent tactics and better for me to measure how useful the prMac press was to future game launch campaigns. However, in a good way, this was eclipsed by a feature Touch Arcade ran on 1800. Titled, '1800' - A Surprisingly Difficult Reaction Game, a fair appraisal of the game mechanics and a little bit of retro love put 1800 in a good light. I was naturally delighted and amazed. The Toucharcade forums had clearly caught the staff writer's eye and despite the number of games that must fall across the desks / devices they took the time to comment on my efforts. This has an enormous effect upon the next's week's activity.
The downloads went (relatively) mad, on the day of the PR launch I had 1,000 downloads, the next day to coincide with both the PR piece and the article I had 3,000. Over the next week the downloads halved day on day but by the following weekend I was still around 300 downloads a day.
During this time I had been shortlisted and finished third in the Touch Arcade game of the week poll. Beating Mr. Crab, amongst others, which happened to be App Store's editorial choice for that week.
1800 was featured in a few countries' puzzle pages which certainly had an effect on sustaining chart positions in their respective countries.
The events just discussed make an interesting download trend diagram. The usual whale's tail is in place but with a few spikes.
If you refer to the download graph below you will see that the first spike is launch day, the second the effect that prMac and the Touch Arcade coverage gave me. The third smaller one towards the middle of the trend was on the eve of the iTunes 50 billion app download. While I can't be sure this was the case for the latter I can't find any coverage or article that could have accounted for this, nonetheless nearly 900 downloads were achieved on this day.
So without question from a downloads perpective this has eclipsed my goal of 5,000 downloads and a small one off feature having quite an effecrt At time of writing (early June 2013) 1800 has been downloaded over 15,000. Not bad for my second game that was written in a little over 25 hours and no marketing budget.
Chart Positions
So what countries did 1800 fair best in?
iPhone | ||||
Games | Games/Action | Games/Puzzle | Top Overall | |
Spain | 33 | 14 | 7 | 106 |
Argentina | 61 | 28 | 11 | 241 |
Paraguay | 76 | 34 | 11 | 315 |
Poland | 52 | 26 | 13 | 182 |
Grenada | 110 | 45 | 14 | 264 |
Ukraine | 57 | 23 | 18 | 211 |
Venezuela | 95 | 44 | 19 | 291 |
Portugal | 70 | 21 | 23 | 270 |
Chile | 119 | 53 | 23 | - |
Domnican Rep | 168 | 61 | 26 | - |
Guatemala | 110 | 47 | 27 | 397 |
France | 131 | 49 | 28 | - |
Peru | 146 | 57 | 29 | - |
Italy | 170 | 56 | 34 | - |
Mexico | 174 | 65 | 34 | - |
Slovakia | 154 | 55 | 35 | - |
Czech Rep | 176 | 69 | 35 | - |
Colombia | 199 | 78 | 39 | - |
Belgium | 261 | 78 | 71 | - |
New Zealand | - | 161 | 84 | - |
iPad |
Games | Games/Action | Games/Puzzle | Top Overall | |
Spain | 90 | 27 | 19 | 214 |
Grenada | 81 | 28 | 20 | 174 |
Slovakia | 228 | 67 | 33 | - |
Peru | 210 | 62 | 37 | - |
Czech Rep | 352 | 108 | 41 | - |
Chile | 259 | 76 | 44 | - |
Venezuela | 333 | 75 | 49 | - |
Argentina | 338 | 94 | 53 | - |
Portugal | 328 | 79 | 59 | - |
Poland | - | 118 | 59 | - |
Ukraine | - | 109 | 74 | - |
France | - | 111 | 88 | - |
Italy | - | 165 | 103 | - |
Guatemala | - | 285 | 114 | - |
Colombia | - | 257 | 142 | - |
Mexico | - | 301 | 158 | - |
Domnican Rep | - | 357 | 170 | - |
New Zealand | - | 267 | 199 | - |
Belgium | - | 264 | 235 | - |
Analytics
What about other analytical factors we spoke of earlier. Has the design led to more sticky games.
Pictures paint a thousand words!
Session Length
Over recent weeks the median length this has tailed off a little from 2 minutes a session to just over a minute, but nonetheless a median of over 1 minute playing the game across over 35,000 sessions is pretty good given that a game on any of the levels could be played in a matter of seconds.
Games played
The statistic on session length and short game bursts is backed up by the new game event I added in which shows the number of games played per session.
At time of writing 670,000 games of 1800 have been played. A statistic which I still struggle to comprehend that my little game has been played that many times and occupied that many people's time and attention.
Audience
The last statistic was to ascertain just what the demographic of 1800 had become. When I talked earlier about accessibility just how far reaching had it proven to be?
As can be seen from statistics that could be obtained it does show a pretty wide audience for 1800 which aligns itself to its accessible and casual nature.
Monetisation
Probably the million dollar question (pun intended :) ) is just how much money has 1800 made. Not a lot, but to be honest when I originally wrote this that wasn't the point. I wasn't comfortable in my artistry or execution to ask for someone's hard earned cash but instead decided to subsidise with ads. A decision I wasn't entirely happy with as it goes against the minimalist design of the game.
What was interesting as 1800 was accessed by more and more people was just how many people wanted to pay for it. A concept and request I thought I never thought I would see. People even asked for my PayPal account to make a donation.
Obviously not comfortable with donations I decided the easiest thing to do was to add in an ad removal option that would provide some money and give the option for donations. While the sentiment was great this hasn't been a money spinner but instead 6 generous souls have paid for this option.
So just how much has 1800 earned and by what means?
Flurry: $12.93
iAd: $28.77
AdMobs: $14.47
Total: $56.17
Not bad I guess but certainly not life changing and certainly not enough for me to consider giving up my full time job.
Beyond Financial Reward
1800 for me has been a success which is weird thing to say considering what I have just stated above concerning the financials. Making the game accessible has meant the audience has been wide and diverse and that has naturally led to larger downloads. Hitting upon the "just one more game" obsession has seen the large number of games played.
Purely by chance the design element was a fortunate fluke and had no idea at the time it was en vogue. Maybe I am doing myself an injustice and that my artistic eye hit upon something that was right.
What I have learned from my 1,000+ hours developing games is the craft of writing games and not the monetary reward. If you put your heart and soul into something then the rewards will come.
The exposure in TouchArcade certainly helped a lot. It will be interesting to see from my next game just how much exposure and cross promotion from this base will influence the download figures but without such influential placement and articles I have to be realistic that achieving these levels of downloads could be challenging.
But despite all of this 1800 for me has gone beyond monetary reward. I won't betray the confidence of the person who wrote to me but instead will summarise their story to make my point.
A player of 1800 contacted me about a week after launch. They told me their story of how they were once policeman who was called out to an accident one night. While at the scene they themselves were hit by a car. A significant period of time passed which was spent rebuilding their life as the injuries sustained meant they would never work as a policeman again. The injuries had meant that multi-tasking and concentration had become a struggle. Most recently they had been taking exams to build steps for their future.
The email continued to say that having played 1800 over a period of a few days not only had it helped them improve their concentration and reactions but had helped them achieve higher marks in their exam.
To me that is priceless.
1800 is available for free on iOS for iPhone, iPad and iPod via the AppStore
Follow me at @gameproject10k for further updates and adventures.
First and foremost if you have come across my post you have my condolences. Not because of landing here but more you must have gone through the frustrating exercise that I have lost 3 days of my life to.
Having deployed my latest version of 1800 to app store I couldn't understand why I was greeted with the email of:
Non-public API usage:
Apps are not permitted to access the UDID and must not use the uniqueIdentifier method of UIDevice. Please update your apps and servers to associate users with the Vendor or Advertising identifiers introduced in iOS 6.
If method names in your source code match the private Apple APIs listed above, altering your method names will help prevent this app from being flagged in future submissions. In addition, note that one or more of the above APIs may be located in a static library that was included with your app. If so, they must be removed.
If you think this message was sent in error and that you have only used Apple-published APIs in accordance with the guidelines, send the app's nine-digit Apple ID, along with detailed information about why you believe the above APIs were incorrectly flagged, to appreview@apple.com. For further information, visit the Technical Support Information page.
... and an invalid binary for my efforts. This has all come about due to a new privacy policy instilled by Apple on the 1st May 2013 which prohibits the use of using the devices UDID for tracking or identification. If you want to read a bit more about it check it out here.
I am going to write about my experiences but I will summarise so that you can go away and solve the problem now but come back to perhaps pick up a few tips.
Tip #1 and my solution - Update AdMob SDK
Just to be clear I am using Unity, Futile and Prime31 plugins. At first I thought it was the Prime31 plugins as I am only using Unity and those. The problem was the Adwhirl plugin from Prime31 but more specifically the AdMobs SDK. All you have to do is download the latest SDK for here and then copy its contents to assets/editor/AdWhirlAdMob folder. All being way you can see your friend again of "Waiting for review".
While Prime31 don't use the UDID uniqueIdentifier I was ignorant to how the AdMobs SDK was updated and assumed when I updated the Prime31 Adwhirl plugin it updated the third party SDKs. Not the case so you have been warned. I also had a red herring as Astavoid didn't have AdWhirl plugin in its project but somehow was in the editor folder which meant I had earlier eliminated this plugin as an issue as it wasn't (in theory) across both apps.
If you have got this far into the blog then perhaps the above hasn't worked. If thats the case then all is not lost. I've tried a few things to try and get the solution above so maybe be these will help.
Tip #2 - Find and replace uniqueIdentifier
From within XCode do Cmd-Shift-f and search for:
[[UIDevice currentDevice] uniqueIdentifier].
This should list out all instances of this method. Instead using the above method use a hash of the mac address like:
or as alternative within code base use this method instead
[UIDevice identifierForVendor]
Tip #3 - Command Tools
Still getting rejected then the chances are one of your compiled libraries or frameworks has the little blighter in. If so not a problem (well not yet anyway). I don't profess to be an expert in this area so apologies if factually incorrect and happy to be corrected for the greater good :)
Download XCode command tools. Easier send than done you say.
Xcode includes a new "Downloads" preference pane to install optional components such as command line tools, and previous iOS Simulators. To open this pane click the "Xcode" button in the top left of the screen near the Apple logo, then click "Preferences", then click "Downloads".
Having deployed my latest version of 1800 to app store I couldn't understand why I was greeted with the email of:
Non-public API usage:
Apps are not permitted to access the UDID and must not use the uniqueIdentifier method of UIDevice. Please update your apps and servers to associate users with the Vendor or Advertising identifiers introduced in iOS 6.
If method names in your source code match the private Apple APIs listed above, altering your method names will help prevent this app from being flagged in future submissions. In addition, note that one or more of the above APIs may be located in a static library that was included with your app. If so, they must be removed.
If you think this message was sent in error and that you have only used Apple-published APIs in accordance with the guidelines, send the app's nine-digit Apple ID, along with detailed information about why you believe the above APIs were incorrectly flagged, to appreview@apple.com. For further information, visit the Technical Support Information page.
... and an invalid binary for my efforts. This has all come about due to a new privacy policy instilled by Apple on the 1st May 2013 which prohibits the use of using the devices UDID for tracking or identification. If you want to read a bit more about it check it out here.
I am going to write about my experiences but I will summarise so that you can go away and solve the problem now but come back to perhaps pick up a few tips.
Tip #1 and my solution - Update AdMob SDK
Just to be clear I am using Unity, Futile and Prime31 plugins. At first I thought it was the Prime31 plugins as I am only using Unity and those. The problem was the Adwhirl plugin from Prime31 but more specifically the AdMobs SDK. All you have to do is download the latest SDK for here and then copy its contents to assets/editor/AdWhirlAdMob folder. All being way you can see your friend again of "Waiting for review".
While Prime31 don't use the UDID uniqueIdentifier I was ignorant to how the AdMobs SDK was updated and assumed when I updated the Prime31 Adwhirl plugin it updated the third party SDKs. Not the case so you have been warned. I also had a red herring as Astavoid didn't have AdWhirl plugin in its project but somehow was in the editor folder which meant I had earlier eliminated this plugin as an issue as it wasn't (in theory) across both apps.
If you have got this far into the blog then perhaps the above hasn't worked. If thats the case then all is not lost. I've tried a few things to try and get the solution above so maybe be these will help.
Tip #2 - Find and replace uniqueIdentifier
From within XCode do Cmd-Shift-f and search for:
[[UIDevice currentDevice] uniqueIdentifier].
This should list out all instances of this method. Instead using the above method use a hash of the mac address like:
+ (NSString *)GetUUID
{
CFUUIDRef theUUID = CFUUIDCreate(NULL);
CFStringRef string = CFUUIDCreateString(NULL, theUUID);
CFRelease(theUUID);
return [(NSString *)string autorelease];
}
or as alternative within code base use this method instead
[UIDevice identifierForVendor]
Tip #3 - Command Tools
Still getting rejected then the chances are one of your compiled libraries or frameworks has the little blighter in. If so not a problem (well not yet anyway). I don't profess to be an expert in this area so apologies if factually incorrect and happy to be corrected for the greater good :)
Download XCode command tools. Easier send than done you say.
Xcode includes a new "Downloads" preference pane to install optional components such as command line tools, and previous iOS Simulators. To open this pane click the "Xcode" button in the top left of the screen near the Apple logo, then click "Preferences", then click "Downloads".
Once downloaded open up a terminal window and navigate to where your xcode project is located. Then choose your framework files or libraries you want to check with the strings command of:
strings <your file>.a | grep uniqueIdentifier
This will then iterate through the files looking for the method you specified as the last parameter. This will allow an investigation and the next area of investigation.
Hope this helps I certainly know information was scarce so if it just helps a couple of people then it will alleviate some pain that I had to go through :)
Subscribe to:
Posts (Atom)