Back to Posts

I Built an iOS Game (Crazy Color Clash) - Here's What I Learned

Where Can I Get the App

Crazy Color Clash is available on the iOS App Store, download it today for free!

How the Project Got Started

I've dreamed of publishing something on the App Store for years. Being an Apple fanboy, I've long been downloading apps, consuming data, and upgrading devices. It's a rush to see what's possible as technology evolves each year. I started programming at 12 years old because I thought "why can't I create something myself" after playing video games for years. "If they can do it, so can I". The same holds true for an on-device app. I've been building APIs, servers, and tools for years now, why not an on-device native app too?

I decided to finally take the plunge after putting it off for too long (if I really wanted to make a splash, I should have started years ago, yet here we are). My 2 year old boy plays toddler games on my wife and my device. Many of these games are simple in nature, match the colors, group the shapes, pop the balloons or bubbles; yet, each of these games will typically only allow for a couple minutes of play before they require you to buy the following levels. You download a few of these games and suddenly you realize you are paying $50 for all of your children's games. I couldn't live with that. I decided that I'd build him a game myself, something simple but fun and educational without the need to shill out dozens of dollars for something he would inevitably get bored of the following week just to need to buy the next game.

Crazy Color Clash

Enter Crazy Color Clash, my very first iOS game which hits the App Store on September 22nd, 2022. The game is dead simple - tap your side of the screen when your color name matches the background color shown. Correct taps gain you a point, incorrect taps lose you a point, correct taps that you do not press on will forfeit a point. For my first game, I knew I wanted something that could be built and released in a few weeks time. I needed something that didn't require me to draw or animate (I'm terrible at the first and the second utterly terrifies me). I landed on the game concept because it's easy to program, simple yet addictive to play, required no graphics skills, and transcends culture and language (with the exception of the color names which I'll eventually most likely localize). This project was challenging enough to get me started to see if I enjoyed programming for iOS but simple enough I could scrap the project if it didn't go well or if I found there was no interest. To spice up the game, I tossed in 12 powerups which can alter the behavior of the game (changing colors or names, blocking your opponent from scoring, shielding yourself from powerup use, stealing point or powerups, distracting your opponent, etc).

Crazy Color Clash is played between two players on a single device. You get 90 seconds and can choose from three of the twelve powerups mentioned for each game. The game is free to play and ships with three powerups for free, the remaining nine can be purchased in packs of three for $0.99 or all the powerups can be purchased for $1.99. This keeps the barrier to entry low for users to buy (important selling point) which should lead to greater conversion since it’s so cheap. Adding powerups to the game is almost trivial meaning I could continue to grow the catalogue of items to keep the game interesting while growing the number of items users can buy. I decided early on that I wanted to build a platform that could easily be extended if desired (think League of Legends with its 100+ character roster that continues to grow).

Coding

I used Swift (programming language) and SwiftUI (framework) to build the app. It runs natively on iOS (iPhone and iPad). In the future, I may release an Android port, though that’s a bit more work than I’m interested in at the moment without knowing how big the game will get. There are tools out there that can convert pieces of the code base to the Android equivalent which should help if that time comes. Apple’s IDE Xcode is incredible and has amazing code-completion so figuring out what functions I could call came pretty easily. Their documentation is also pretty great - though I wish they would have more examples of each function. I feel to have great code documentation you should show the function definition along with a real-world example. Nonetheless, enough Googling and reading lead me to the right answers most of the time along with a LOT of trial and error.

The game probably took about ~100 hours to develop, much of that time was trial and error attempts and research. A next app should take much less time for something of a similar complexity. Once the game was mostly complete, it was time to release it to TestFlight, Apple’s beta environment. This allowed me to pre-release the game to a small group of people who could play and provide feedback. This was invaluable to gain insight into what people thought of the game while allowing the app to run on multiple screen sizes and device types to hear what did and didn’t work from users. Many bugs were fixed and improvements made before the release candidate was completed.

Marketing

Once the release candidate was finished, I turned my sights to the part of the project I was less interested in but equally important - marketing. For the last few weeks, I’ve been spamming my Facebook, Twitter, and LinkedIn feeds with posts about my game. Whenever there was a milestone, I shared it to keep people appraised on how my journey was going. “Game finished”, “submitted to Apple for review”, “game approved”, etc. I took dozens of screenshots across multiple devices and uploaded to the App Store and the game’s website: https://crazycolorclash.com. Apple requires a full set of screenshots for two iPhone models and two iPad models and they must be pixel perfect. Let’s just say I took far too many screenshots to get them all right and ensure they uploaded correctly for the right devices. I then recorded a various devlog videos detailing how I built the game and showing real code from the early project (devlog 1: https://youtu.be/DPlUEQtgA7U, devlog 2: https://youtu.be/drPVDWmM3Sk, a few more devlogs are being published as we speak). Next came the teaser trailer for the game which was actually an absolute pain. Again, Apple requires a pixel perfect video format. I recorded gameplay from the phone then imported it to iMovie (don’t judge, I don’t have fancy video software yet). The big problem with iMovie is it only supports landscape video, you can’t switch to portrait mode without getting black borders on the side of your video. So I had to chop up all the video in iMovie and stitch it together with my VoiceOver, then export the video with the black border. I next took it to various online video croppers, most of which wouldn’t let me crop anything higher than 1080 pixels so I couldn’t use them. I finally found an Adobe product that let me, though you couldn’t plug in the exact pixels you wanted and instead had to eyeball it. After literally dozens of upload/crop/download/inspect/get super angry sessions because it wasn’t pixel perfect for Apple, I finally got one that worked and called it even though there is a single line of black pixels on the left hand side. I uploaded the teaser: https://youtube.com/shorts/3rXwlH88iWU?feature=share and we were off. Next I snuck around a bunch of Reddit and Facebook groups to prep for release day so I could start spamming out links and pics to my game when the time comes. I finished it all off with this blog post and the following week I’ll be making more posts and direct messaging friends and family in the hopes to convince them to download the game.

Final Approval from Apple

The last step of the puzzle was to actually submit the thing to Apple. I knew I wanted to do this early in the off-chance that they had concerns and rejected the project with feedback. This would ensure that if they did, I would have enough time to address those concerns and submit the project again. Apple usually reviews submissions within 48 hours and I knew any subsequent submissions would take the same time, so I submitted the game a week before I was set to release it. I worked closely with one of my good friends Sarah Balhorn to create the game icon along with icons for all the in-app purchases. We uploaded these to the App Store listing, finalized all the metadata for the app, loaded up all the screenshots and video, confirmed all the details were correct (after various submission errors were resolved due to Apple NOT having great error messages on submission, I had to do a lot of digging and found I was missing review notes and pics for their team), but FINALLY, I clicked the “submit” button at 10:30pm and they approved it at 5:30am. It was in review for two hours according to their timestamps, during which time I can only imagine they were looking through each picture, all the metadata, and playing the game on various screen sizes to see how it ran and if it would make a good addition to the App Store. They got back to me saying it was good to go and all I needed to do now was press the button to send it to the live App Store.

Publishing

This part of the post hasn’t happened yet! I anxiously await clicking the button on the evening before the 22nd to allow the app time to propagate in the App Store prior to the launch and marketing efforts kick of in high gear on the morning of the 22nd. I’d hope you’ve enjoyed the journey along with me and if you’re feeling generous that you may download the app, play it, share it, and review it if you really love it. There’s always the in-app purchases you can get to help support the project or myself. All said and done, the project took 2 months from inception to publish, and it’s been an amazing journey.


Justin Hammond
I love all things tech. I've been programming since the age of 12, repairing iPhones since 16, and founding tech companies since 20. I'm an open source fanatic, Apple fanboy, and love to explore new tech. I spend my time coding open source projects, tinkering with electronics and new tech products, and consulting teams on how to get things done.


Comments

Please login to leave a comment.