Javascript is required
5 min read

Lessons Learned: My First Smartphone Game

Lessons Learned: My First Smartphone Game Image

In 2017, I have released my first smartphone game "Supermarket Challenge" for iOS and Android. I learned a lot during the game development and wanted to share my experiences with you.

Why did I develop a 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.

The game idea

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.

Market analysis

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:

Crazy Market

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

Checkout Challenge isn't available anymore but provides a funny Arcade-focused supermarket checkout game.

Another inspiration: Fruit Ninja

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.

Market Analysis Conclusion

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"

Prototype Development

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.

Development Start

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.

New Game Engine

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

My Tools

During the development I used the following tools:


I structured my code based on scenes and components:

2  * game
3    - lib
4      scanner.lua
5      supermarket-basket.lua
6      item.lua
7      ...
8  * menu
9    - images
10    - sounds
11    - menu.lua
12  * game-over
13  * ...

A scene is a visible screen available in the game. The lib folder contains all components which are reused in different scenes.

Development Progress

The following videos demonstrate the game's progress from the prototypes to the final version.

Mid January 2017

Implemented basic game mechanic:

Start February 2017

UX adjustments, tutorials, menus and more:

Mid March 2017

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:

Version 1.0

Start of May 2017 I released the first version of "Supermarket Challenge" on iOS and Android. It included only the Arcade mode:

Version 2.0

I further developed the game and implemented a new level mode and an easier Arcade mode. Version 2.0 was released in December 2017.

Level Select ScreenLevel Success Screen


Interesting numbers

  • Invested time: ~500hours / ~21 days
  • Expenses: ~240€ (mostly for graphics, libraries and license)
  • Ad revenues: ~1€

Google Analytics

Some Google Analytics numbers which might be interesting:

Google Analytics OverviewGoogle Analytics OSGoogle Analytics CountriesGoogle Analytics Play Time

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.

My Insights

  • 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.

Possible reasons for the missing success of the game

  • 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

Final words

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 😜

I will never share any of your personal data. You can unsubscribe at any time.

If you found this article helpful.You will love these ones as well.
Simpler Two-Way Binding in Vue With defineModel Image

Simpler Two-Way Binding in Vue With defineModel

Login at Supabase via REST API in Playwright E2E Test Image

Login at Supabase via REST API in Playwright E2E Test

Use Nitro as Mock Server Image

Use Nitro as Mock Server