5 months, 1 pivot, 2 app store rejections and countless setbacks later, my first app is finally in the app store.
Presenting: Bird in Hell: Wings of the Damned.
So how did we get here? Let’s rewind.
It started with the relaunch of this website back in October where I set forth some goals for my app development journey. The first phase of the journey entailed reskinning an app. I felt this was a good first step because it would be the shortest path to having a completed app in the app store. If I’ve learned anything in the past few years it’s that Noah Kagan’s mantra to “make your first dollar” has a lot of merit. The sooner you can make your first dollar from a business pursuit, the more motivated you will become to build it up further.
In addition to this, I also felt that I could learn a lot about the process of launching an app, fiddling with x-code, dealing with Apple and other essential things that any app developer and entrepreneur must learn to become successful.
In the Beginning…
Bursting with wide-eyed enthusiasm and naiveté, I set out to reskin my first app in 7 days. As you can tell, that never panned out. There are many reasons why I didn’t accomplish this aggressive goal, but mostly it was because:
- I went the cheap route
- I didn’t select the right source code
- I didn’t have any guidance
In my first go-round at #OpReskin, I selected a cheap source code from CodeCanyon based on a whack-a-mole theme. The source code wasn’t poorly designed, but I soon discovered it didn’t suit my needs.
I required a source code that had only a few art assets to replace. When I opened up the files for the whack-a-mole code, I discovered that it required hundreds of images for a complex animation spritesheet for the various moles in the game.
Unfortunately, the code didn’t come with documentation that would help me understand how to replace these individual sprites in a batch method. The idea of replacing thousands of individual images seemed too daunting and frustrating for this initial experiment, so #OpReskin was put on ice, until…
A Flappy Pivot
In early February, Flappy Bird flew into our collective consciousness and quickly out again, leaving a huge void that many enterprising app developers hoped to fill. Soon there were many “flappy” style source codes available to work with. At this point, seeing the relentless onslaught of Flappy Bird clones (many of which were quite low in quality) I figured this was a good opportunity to revisit #OpReskin.
This time I was determined to not repeat the mistakes from my prior attempt. I set out to find a source code that met these criteria:
- Minimal Art Assets to Be Replaced
- Good Documentation
- Somewhat Affordable
I browsed various source code marketplaces and eventually found one that met my needs – The Flappy Crocodile code on ChupaMobile for $99.
When browsing through the comments for this source code, I noticed that it came with a promo code for an app reskinning course on Udemy. This essentially sold me on the code and was ultimately the best decision that I made.
The course “Publish a Flappy Bird Clone iPhone Game” by Yohann Taieb of AppsFresh.com was invaluable for someone like me trying to get an app into the iOS app store for the first time. (Note: The course now comes with the complete Flappy Crocodile source code. Highly recommended!)
This code met all my needs as there were a manageable number of assets to replace and was well documented, even without the course. But with Yohann’s guidance, the process was much smoother than my initial attempts.
The course walked me through the process of setting up my Apple developer account, xcode and the ad networks. I am sure this would have been a nightmarish experience without that guidance as xcode has proven to be a rather sizable pain in the ass. The guidance from Yohann’s course alleviated much of the frustration and confusion I would have experienced by trying to navigate all that on my own.
After getting the set up process out of the way, it was time for some fun – coming up with a theme and creating new art assets.
Putting the ‘Skin’ in ReSkin
At the time, there was still a ‘flappy’ goldrush going on in the app store. Several clones had successfully made their way to the top of the charts in Flappy Bird’s absence, including a splashy fish, a flying Miley Cyrus and a city bird. Like many, I hoped to leverage the ‘bird’ theme to achieve some decent rankings for the popular search terms.
I came up with a “bird in hell” concept after reading an article that found high incidences of the word “Satan” in user reviews for the original Flappy Bird. I figured I’d play on the whole fiendishly difficult aspect of Flappy Bird that everyone so loved. “Flappy Hell” had a nice ring to it…
So I got to work, quickly sketched out some designs for a bird, and settled on this simple bluebird character with hollow eyes.
In total, there were around 30 or so images that needed to be replaced to reskin the app, including buttons, characters and backgrounds. The animations were very simple and straightforward, unlike the whack-a-mole code I tried first.
Once I had all the new designs created, I renamed them to coincide with the original image filenames in the source code so I wouldn’t need to touch a line of code. Every time I replaced an asset, I checked the game in the simulator to make sure they were showing up without any problems.
Initially I ran into a problem where the ground image was dragging and would leave a noticeable gap every few seconds. With an assist from another student in the Udemy course, I learned that I only needed to increase the width of the image to solve the issue.
With the images replaced, it was time to add some new sounds. I turned to AudioJungle to find some sounds to fit the theme.
Sounds I purchased:
- Cheesy Elevator Muzak – $10
- Comical Piano – $5 (which I didn’t end up using)
- Boom Punch – $1
- Win Effect – $1
- Small Bonus – $1
- Bad Chicken Moan Hit – $1
- Bird Laugh – $1
- Cuckoo Bird Cartoon – $1
- Cartoon Bird Hit Scream – $1
In total, I spent $22 on assets for the game because I designed all the art assets myself.
Total Investment (Audio + Source Code) = $121
With the art assets and sounds loaded in, I tested the app a few more times within the simulator to make sure there weren’t any glaring issues. The app was ready to go.
I finalized the app icon, created some initial screenshots and a description for the app store and archived the app bundle to submit to Apple. From the time I purchased the source code and submitted my initial app to the app store only a week had passed. I was excited! I just had to wait a few days and my little flappy clone would be leaving the nest to compete with the rest of them inundating the app store! But…
Rejected!
After 7 long days of breathless anticipation, the bubble burst. Bird in Hell was rejected.
I had taken great strides to eliminate any use of “Flappy” after the initial rejections of flappy-clones became known, so I was safe in that regard. The problem was an unexpected one.
Missing in-app purchase? The source code came with in-app purchases toggled in xcode, but I didn’t know that it needed to be setup, or how to do so. It was beyond my scope of understanding. I knew that countless others had submitted their versions with the same issue, yet were not rejected. This is where I got my first lesson on the app store submission process… it’s random!
Two people can submit an app with the same issue, but the status of your app depends upon the human reviewing it. In my case, the reviewer caught this issue and promptly rejected it.
I tried to solve the problem by untoggling the IAP option in xcode, but once I did this the code no longer compiled. I tried fruitlessly to solve this issue on my own for several days, until finally the course provider, Yohann, agreed to help me uncover the issue.
I cannot thank Yohann enough for his help on this matter. This is another reason why I recommend his Udemy courses and his products. He goes the extra mile for his customers.
Be sure to follow him on Twitter @Yohann305, he has great insights on the mobile app business and is always willing to help.
He quickly discovered the problem had to do with a missing reference within xcode. We added the missing profile and the code would compile again. Hallelujah.
I submitted the IAP-less bundle to Apple and played the waiting game once more…
Rejected 2.0
Another week, another rejection. Have I been cursed? Do the Apple reviewers have it out for me? All this time I’ve seen bug-riddled, nearly unplayable Flappy Bird clones flapping freely about the app store while my app was rejected again. Why?
This time around it had to do with the “Ads” button on the home screen of the app which was meant to provide a way for users to purchase an IAP to remove ads. Since I removed the IAP, this button didn’t do anything. I don’t think the IAP ever worked, so it would have been helpful if they would have let me know this during the first review so I didn’t waste another week in review, but so it goes…
Unlike last time, I had some idea of how to correct the problem. I’ve been hacking my way through WordPress themes and such for years, so I figured I might be able to spot the code that displayed the 2 buttons in question.
After a quick search through the code, I found the offending lines of code and commented them out so that they no longer displayed. Issue solved. I resubmitted the app, this time there would be a happy ending.
Third Time’s the Charm
After 2 rejections, I was confident that the I had resolved all the issues the Apple reviewers pointed out during my initial submission attempts. There would be no more rejections. On April, 4th, Bird in Hell finally landed on the iOS app store.
“Ready for Sale”
That felt good! It took around an hour after the app was accepted to find it in the app store. When I finally saw it on the app store, I felt a sense of accomplishment. Even though this was not an original game by any means, it felt good to know that I had completed this first step to becoming a mobile app entrepreneur.
I didn’t write code, I didn’t design a new game, but I did put my artistic spin on it and learned a lot about the app development and submission process along the way. All in all, I feel that is a success.
I have no delusions of granduer when it comes to this app. My only hope is that it recoups the $121 that I invested in its creation. The purpose of reskinning this app was to learn and get a taste of what the app business entails. With the launch of Bird in Hell, I’ve met that goal.
What’s Next?
Is this the end of #OpReskin? No, I plan to continue to support and tweak Bird in Hell. I will continue to use it to experiment with new ASO techniques, try out localization, cross-promote future apps and more.
I am already considering an update to minimize some of the ads in the app as I feel they are a bit too intrusive for my liking and is harming the overall user experience. As I refine and experiment with this app, I will be sure to share my findings with you all.
Back in October I set forth 3 initial goals. Today, I’ve completed step 1. For the next phase of my app journey I will learn to create a simple mobile game or app on my own. I hope you will continue to join me as I to embark on this quest.
Karen says
Thank you so much for sharing your experiences. I am on the same journey using the same path. But you have accomplished much more than me. Kudos to you for using your own artwork. Your story is inspiring and motivational. I hope I can muster the courage to muddle my way through this. thank you!
Shane K. says
Hi Karen, thanks for the kind comments! My only advice is to keep DOING, and you’ll get there! It’s the number one thing I’ve learned over the years, just keep chipping away and eventually you’ll get to where you want to be.
There was a time where I would sit around and think about ideas, or think I wasn’t ready yet and needed to learn more, read another book, take another course until I had the skills to move forward. That’s a mistake. Don’t be afraid of taking action even when you don’t think you are “ready”. You learn the most by doing.
Don’t get me wrong, it is still good to expand your skills by reading and taking courses, but that should be done in tandem with taking action and making mistakes along the way.
David Liu says
Congratulations on your first app man 😀 I’ve found that recouping even $121 is a pretty difficult deal with a Flappy Birds reskin. But you were definitely wise in only spending that much on your first app. 🙂 look forward to your success in the future.
Shane K. says
Thanks David! I agree it will probably be difficult to make my money back on this with the saturation of the market for this type of game, especially for the theme I went with. That money train has come and gone. 🙂 If I had gotten it out during my initial time frame it may have stood a chance. But we will see how it goes!
Rick Dieterle says
Hey Shane. Great post… I’ve been doing some reskins recently myself. After creating a few apps from scratch, it’s a much quicker and less expensive process.
The Apple review process really needs to be streamlined a bit.. your rejections were pretty straightforward and reasonable. I’ve been rejected for the dumbest reasons.. it all depends on who you get and what mood they’re in that day.
Good luck in the future!
Shane K. says
Thanks Rick! Ya, the app review process was a bit rockier than I expected, even though I knew there was a possibility of getting my app rejected. I just wish there was a way for the 2nd review to go a bit quicker, because it really sucks to make a minor fix and then wait another whole week for the app to be reviewed again.