Lessons Learned: My First Smartphone Game
I have played and have loved video games since I was a little boy. Additionally, I started my software development career some years ago. As a result, I decided to combine both of my greatest passions to develop my own video game. Fortunately, I also had a good idea for my first game.
I planned to develop a smartphone game like Paper's Please but in a supermarket scenario.
Check the following trailer to see Paper's Please in action:
In my game, you would play a poor supermarket cashier who needs to spend the money for food, medicine, rent, and so on each day after work.
The first step was to analyze the market for similar existing smartphone games. My findings discovered an endless amount of supermarket-themed games. The main goal of these (primarily child-oriented) games was to take the customers' money and return them for the correct amount. I found two matches that included the game mechanic I had in my mind:
This game nearly matched my expectations for the primary game mechanic at the supermarket checkout. But I was not too fond of the Japan-style theme, the aggressive In-App purchases, and the level-based approach.
Checkout Challenge isn't available anymore but provides a funny Arcade-focused supermarket checkout game.
I played Fruit Ninja a lot and had a nice high-score challenge with my friends. For my game, I wanted to achieve the same high-score challenge feeling and implement the three-player lives as they were available in Fruit Ninja.
In summarizing, the market analysis resulted in these decisions:
- The game name should be "Supermarket Challenge" (inspired by "Checkout Challenge")
- It should be a 2D game
- Combine the best parts of "Fruit Ninja", "Crazy Market", and "Checkout Challenge"
Christmas 2016, I started developing a game prototype based on the Unity engine. I invested about 80 hours into the prototype, including Unity's training period.
Gameplay video of the first prototype:
I deployed the game to my smartphone and a web platform to let friends and family try the game. The response was positive, so I developed the prototype into a publishable game.
In January 2017, I started the game development in my free time as I was in a full-time job during the whole process.
As a first step, I set up some expectations I had for the final result:
- The game should be a financial success.
- It should attract a significant and recurring amount of gamers.
- The game mechanic should be scalable. The first version should only include the Arcade mode with the primary game mechanic.
- It should not look like a low-budget game.
- It should include a minimal amount of ads.
- First versions should be free without In-App purchases.
- First release in App stores should be within one year.
- Team size: One developer (myself) and maybe one designer (if necessary)
As I tried to continue developing my Unity prototype, I had a rude awakening: My spaghetti code was unmaintainable and not expandable.
In my full-time job as a software developer, I was used to developing text-based without a full-blown IDE as Unity provides it. Implementing a known software architecture pattern in Unity was very difficult, and the IDE itself is very complex.
So I started researching a new game engine that suited my needs better.
As I had concrete expectations for the new engine, my research led to Corona:
- Focused on 2D games
- Cross-Platform (iOS, Android, Desktop applications, Smart TVs)
- Free (with few restrictions)
- Text-based with Lua as the scripting language
- Includes a simulator with a Live-Testing feature
- Good starting tutorials
- Integrated advertising possibilities
During the development I used the following tools:
- Atom (later Visual Code) as text editors
- Trello as my project management tool
- Gimp and Inkscape for image editing
- Bitbucket for hosting my private repository
I structured my code based on scenes and components:
scenes * game - lib scanner.lua supermarket-basket.lua item.lua ... * menu - images - sounds - menu.lua * game-over * ...
scene is a visible screen available in the game. The
lib folder contains all components which are reused in different scenes.
The following videos demonstrate the game's progress from the prototypes to the final version.
Implemented basic game mechanic:
UX adjustments, tutorials, menus and more:
I released the first beta version for about ten testers (friends & family). Negative feedback was given due to the serious difficulty and the inconsistent visual design. As a result, I asked a friend of mine to support and assist me in visual aspects of the game, which resulted in a better design:
Start of May 2017 I released the first version of "Supermarket Challenge" on iOS and Android. It included only the Arcade mode:
I further developed the game and implemented a new level mode and an easier Arcade mode. Version 2.0 was released in December 2017.
- Invested time: ~500hours / ~21 days
- Expenses: ~240€ (mostly for graphics, libraries and license)
- Ad revenues: ~1€
Some Google Analytics numbers which might be interesting:
I think the custom events like playtime are exciting. Based on these numbers, I can assume that the game is still challenging as most players see the game over screen in less than one minute of playtime.
- Keep it simple: Start with small and realistic goals
- Help yourself, learn everything: Game design, writing code, image editing, and more.
- Use free assets: Saves time and money, especially in the beginning
- Develop prototypes as early as possible
- Be active in social networks to build a vibrant community. Trailers and teasers are an excellent way to keep people up-to-date.
- Be comfortable with your game engine and be not afraid to change it.
- App icon is not ideal in my opinion
- Bad ranking in the app stores
- No frequent app updates
- High-score challenge seems not to be attractive enough
- Too few advertising campaigns for the game
I had a lot of fun developing the game and learned a lot. Unfortunately, the game was not a financial success, but at least I released my first video game 😜