I'm moving to a new blog. A blog that's all about my adventures as a traveling designer and wonder seeker.

Intro

So I wanted to share my thoughts and what I've learned from making my first iOS game. I'll touch on the design, gameplay, app development and API scaling issues! So let's start with some pretty pixels.

Design

I wanted to make the game feel simple. The color palette was my first step. Drawing some X's and O's in a PSD on a colored background was my starting point. No app design, just simple shapes and the color picker. I finally settled on brown, yellow and blue as the final scheme. From there I started laying out the user interface usign an amazing and very high tech tool (a whiteboard). After taking some pictures of the flows I opened up photoshop and made a scrapbook PSD where all my ideas and flows would live. From there on I moved to an iPhone 5 sized canvas and started making the interface. The end product was a simple and flat looking game layout with as few options as possible because I truly do believe that simplicity scales.

Gameplay

So a game of tic tac toe is simple. But what if you add real time random opponents to the mix? Or better yet what if you make the game use 4 boards at once. After hours of testing me and my friends found it very addicting! Offering a local game version that you can play with a friend and pass the phone around was also a must. So that was it for the gameplay. Local and real time games with easy and hard levels on both. Easy has one board and hard has 4.

Monetization

The paid app model is gone. At least that's what the internet told me. So I started thinking about other monetization options. Ads were thrown out quickly because they spoil the user experience IMHO. So adding In App Purchases was the logical strategy. The easy levels on both game types are free. If you want to try playing the hard game with 4 boards it costs 99c. So giving the user an option of seeing how the game works in real time and locally and then offering a more interesting alternative for 99c after they got "hooked" was a good strategy in my mind. I'll report more on the outcome once I see some numbers.

App Development

The first MVP was built with HTML and Javascript. Why? Because I'm good at it. Making the first prototype took about a day and I got the chance to see where some gameplay catches and bugs were. Even Tic Tac Toe is not simple from a logical point of view, especially if you have 4 playing boards at a time! After playing with the prototype for a few days I opened Xcode and started coding up the app! I have to give a special shout out to my friend Vasja for some coding help and Mladen for helping me test the gameplay. Thanks again guys!

API Scaling

So as the app is a real time game the API powering it needs to be fast. So that got me thinking... Websockets? Of course I thought! But sadly websockets just aren't there yet for my taste. And the API structure got complicated really fast. So I went back to what I'm good at, PHP and Javascript. If you think about the game itself, the easy thing is to send the board score and player moves to the API, let the API figure out if someone won or if the game is tied and then let the players know what's up. But thinking more about that made me realize that it wouldn't scale. Working out coordinates and moves on a server for let's say 10k players at a time? No way, too hardcore for my taste. So I took a day off and started thinking about processing power and simplifying this. Eureka! Why not use the players iPhones for working out the gameplay. Make their phones look at winning/losing moves and tied games. And let the phones send only the current status to the server. Done! That was it. So now the server has 10 lines of PHP and an in memory MySQL table powering it for super fast responses. I tested it under load of course! 10k, 50k, 500k... No sweat! And the API was done.

Next steps?

Well the app was submitted to the app store and I'm currently waiting on the App review team for their email. Hoping to get it sometime next week! If it works well on iOS, android will be my next issue.

Check out the landing page and sign up to get notified about the launch.

Would love to hear your feedback or questions!

Join The Discussion (5 Comments)

Submit Comment
avatar

Adam

I noticed you recently removed the in app purchases. Reasons/Thoughts?

Posted 3 years ago
avatar

Zan

Hi Matt! The app MVP was build on web based technologies and the final app is a mix of both! I'll be publishing some tutorials soon, so stay tuned!

Posted 3 years ago
avatar

Matt

I'm just wondering - did you create this game in objective C or as a web app translated into native code? I'm trying to figure out a good approach for my own app.

Posted 3 years ago
avatar

Zan

Actually no! It also has a local mode where you can play vs a friend thats next to you. And right now I'm working on V1.1 that has an AI component to it! Thanks for the feedback!

Posted 3 years ago
avatar

Robert

Hi, Really enjoyed the post but I have a question. What happends if I want to play the game while not being connected to Wifi or 3G? As I understood the boards are sent to the API.

Posted 3 years ago