Skip to content
All projects

Case study 05Mobile game · Arcade · Pixel art

Coin Dash

Outrun the shadows, grab the gold.

A pixel-art mobile survival game set in an endless night city. You run with a joystick, dodge the shadows on your tail and collect gold to push your record higher — and the glow of the street lamps is your only shelter.

Role
Game design and development — gameplay, progression, monetization, store launch
Platform
Android · preparing for Google Play
Stack
FlutterFlameAdMobIn-app purchasesPixel art
Links
Coming to Google Play

What it does

  • One-thumb survival in a night city that stretches endlessly in every direction
  • Street lamps are safe zones: shadows melt in the light, but lamps flicker and die
  • Four enemy types: chasers, dashers, shooters and a giant shadow every 90 seconds
  • 12 power-ups: pistol, SMG, dual guns, homing rockets, orbital orbs, nova, magnet, shield and more
  • Combo multiplier up to x4, 12+ character skins, daily and weekly quests, a season track
  • AdMob ads and in-app purchases, with a consent form for EU players
coin-dash / feature
Pixel-art player character, purple shadow monsters, gold coins and a lit street lamp under the Coin Dash title

Overview

Coin Dash is an arcade game for quick breaks and late-night record chasing. The rules land in seconds: run, grab gold, don't get caught. The depth comes from the layers on top — power-ups, combo streaks, skins, quests and season progression.

Problem

Most hyper-casual games are fun for a minute and forgotten by day two. And ad-supported games lose players the moment an ad lands in the wrong place. Coin Dash had to solve both: a reason to come back, and a revenue model that doesn't break the game.

Goals

  1. Gameplay simple enough to get on the first run, deep enough to take a while to master
  2. Give players a reason to return daily: quests, streaks, a season
  3. Place ads where they don't break the game's rhythm
  4. Build a sustainable revenue model for a free game

My role

Game design and development — gameplay, progression, monetization, store launch.

  • Game design: mechanics, enemies, power-ups and the difficulty curve
  • Game loop, collisions, camera and world management in Flame
  • Menu, shop, quest, season, achievement and stats screens
  • AdMob and in-app purchase integration, EU consent flow
  • Store copy, privacy policy and Google Play launch preparation

Technology

Game
FlutterFlameFlame Audio
Progression
Quests and seasonAchievementsOn-device saves
Revenue
AdMobIn-app purchasesUser consent (UMP)
Art and sound
Pixel-art spritesChiptune music and effects

Architecture

The game loop runs inside Flame; menus, the shop and quests are Flutter layers on top of it. The only bridge between them is the game state.

  1. Game loop

    Every frame updates the player, enemies, bullets, coins and power-ups

  2. Endless city

    The camera follows the player; the ground tiles and lamps switch on and off around them

  3. Difficulty

    Enemy speed and spawn rate climb over time, with a giant shadow every 90 seconds

  4. UI layers

    HUD, pause, shop, quests and season screens drawn in Flutter over the game

  5. Progress and revenue

    Score, coins and quests are saved on the device; ads and purchases hang off that progress

Challenges & solutions

Safe zones in an endless city

Challenge

The world stretches forever in every direction, but the whole city can't live in memory. Lamps still have to exist everywhere, consistently.

Solution

Lamps sit on a grid that divides the city. The game scans around the player at short intervals, adding lamps that come into view and removing ones left behind. They flicker as a warning before going out.

Raising difficulty fairly

Challenge

The game has to get harder over time without the player ever feeling cheated.

Solution

Difficulty rises in layers rather than with one dial: enemies speed up and spawn more often, new enemy types join, and a giant shadow arrives every 90 seconds. Power-ups and lamps always leave the player a way out.

Ads that don't break the game

Challenge

In an ad-supported game, one ad at the wrong moment can lose a player for good.

Solution

Interstitials only show when leaving a death screen or a menu, at least 75 seconds apart. Rewarded ads are fully optional: a revive, the daily chest and doubling coins after a run. EU players get a consent form.

Screens

  • Pixel-art player firing a pistol at purple shadows on a dark grid, with gold coins scattered around
    a.Main menu — the player firing a pistol at the shadows
  • coin-dash / feature
    Pixel-art player character, purple shadow monsters, gold coins and a lit street lamp under the Coin Dash title
    b.Promo art — the night city, shadows and a street lamp

Results

  • The game is finished and tested; the Google Play launch is under way
  • About 10k lines of Dart: game engine, enemies, power-ups and 11 UI screens
  • Store copy, promo art, privacy policy and data-safety declarations ready

Lessons learned

“The first run wins a player; quests and streaks carry them to day two.”

“Where an ad goes matters more than the ad itself.”

“Layering onto one simple rule beats starting with a complicated one.”