← All Projects

Solitaire Dark

The ad-supported edition of our Classic Solitaire. The same Unity code and server, a black table by default, banner and rewarded ads through LevelPlay, and a Premium subscription that turns them off.

Mid-game on the black table: gold foundation slots, illustrated court cards and the Premium button in the header
The same game on a Premium account with a Halloween background and pumpkin card backs
  • 2

    apps, Classic and Dark, from one codebase

  • 2

    ad formats: banner and rewarded video

  • 20

    languages, shared with Classic

  • 0

    ads for Premium subscribers

Product
Our own game
Stores
Google Play, App Store
Platforms
Android and iOS
Model
Free with ads; Premium removes them
Our part
Game, server, ads and releases

The brief.

Context

Solitaire Dark is the second app built from the Classic Solitaire repository. It opens on a black table, shows ads from the start and sells Premium to remove them. Everything else is shared: the shop, daily challenge, leaderboards, online duels, player accounts and the server behind them.

Challenge

Classic is for players who would rather pay than watch ads, so its ads stay off until the player asks for them. Some players want the opposite: a free game paid for by ads. A second app for them had to cost almost nothing to keep up, so a fork that drifts away from Classic was ruled out.

Approach

Dark is a build variant, not a fork. One build flag picks the default theme, switches ads on by default, and points the app at its own store listings and ad placements. The ads code itself is the same LevelPlay service Classic uses, so a feature built once ships in both apps.

A black table you can restyle.

Dark starts on its own black theme with gold accents. The rest of the shop is the same as in Classic: themes, backgrounds, card backs, court-card characters, suits and win celebrations, each tried on a real deal before buying. Items sit on shelves, and a shelf opens once something on the one below is bought.

Themes shelves: the black theme owned on the first shelf, a Premium black theme, green and purple at 15,000 coins on the second
Themes
Preview of the green theme on a live deal, 15,000 coins
Try-on
Preview of the royal character set: painted portraits on every jack, queen and king, 15,000 coins
Characters
A game on the leaf background with the Celestial card back
Custom

Klondike, Spider and a daily deal.

Klondike comes with Draw 1, Draw 3, Vegas scoring and Time Attack. Spider is a game mode sold in the shop. The daily challenge gives everyone the same deal each day and puts a medal in a monthly calendar for each win.

  • Medals pay 100, 200 and 300 coins at 10, 20 and a full month.
  • Premium players can open past days of the month.
Game Modes shelves: Classic on the first, Spider at 10,000 coins on the second
Modes
Preview of a Spider deal with ten columns, 10,000 coins
Spider
Daily Challenge calendar for October 2026 with past days open and rewards at 100, 200 and 300 coins
Daily

A duel against a real player.

Online Duel matches two players on the same deal for five minutes. The server relays every move, so the opponent's foundations, moves and score sit above your own piles. It settles the result and pays coins for the win, for taking part and for each card placed.

Online Duel rules: the same deal, first to 52 cards wins, five minutes, no hints or undo, 222 players online
Rules
A live duel: the opponent's foundations on top, moves 7 vs 47, score 0 vs 110
Live
Defeat: the opponent collected all 52 cards first, coins for each side listed line by line
Result
Profile multiplayer tab: 10 matches, 6 wins, 4 losses, 60% win rate
Record

Reasons to come back tomorrow.

A daily bonus grows from 10 to 150 coins over six days in a row. Leaderboards rank coins, wins, score, time, moves, medals and streaks, with the player's own panel pinned at the bottom. The profile keeps statistics and everything collected, and one account carries them across devices.

Daily Bonus ladder: +10, +25, +50, +75 and +100 coins, then +150 from day six
Daily bonus
Coins leaderboard with country flags, a tab per category and the player's own panel pinned at the bottom
Leaderboard
Profile collection: 43 items owned, 6 of 14 categories started
Collection

Ads pay for the free game.

Dark runs LevelPlay mediation with two formats: a banner and a rewarded video for coins. Ads are on by default here, while Classic keeps the same service switched off until the player opts in. Placements and timings come from Remote Config, per platform and per app.

  • Banner

    A standard banner in portrait, kept clear of the safe area and hidden in landscape.

  • Rewarded video

    Coins for a finished video, offered in the coins menu.

  • Consent first

    Google UMP consent runs before any ad request; declined consent means non-personalised ads.

  • Not on day one

    Ads start after a number of sessions set in Remote Config.

  • Premium

    A Premium subscription removes ads in Dark.

  • Own placements

    Dark has its own app keys and placements, so its revenue reads apart from Classic.

A table for the season.

Seasonal collections arrive from the admin, with no app update. For Halloween, backgrounds, card backs and bonus effects carry a pumpkin badge in the shop, and some are for Premium only. Premium also doubles the daily bonus and opens Premium items in the shop.

Backgrounds shelves with Halloween items under pumpkin badges, some Premium only, from 0 to 27,500 coins
Shop
Preview of a Halloween background behind a real deal
Try-on

One repository, two apps.

Classic and Dark come from the same repository and the same CI workflow. A release builds either app or both, runs the tests first and uploads each build to its own store listing.

  1. Build flag

    DARK_APP picks the default theme, the ads default and the store links.

  2. Config

    YAML build configs set the product name, package and Firebase project.

  3. Tests

    EditMode and PlayMode suites shared by both apps.

  4. Android

    A signed bundle for Google Play.

  5. iOS

    An Xcode build through Fastlane for the App Store.

What we built.

Our part

  • Edition design: defaults, theme and ads per build flag
  • LevelPlay banner and rewarded ads
  • Consent flow before any ad request
  • Shop, duels and leaderboards shared with Classic
  • Store listings and CI releases for both apps

Stack

Game
  • Unity 6
  • C#
  • Addressables
Server
  • NestJS
  • TypeScript
  • Firestore
  • Firebase Realtime Database
Ads and payments
  • LevelPlay
  • Google UMP
  • RevenueCat
  • Unity IAP
Live ops
  • FireCMS
  • Firebase Remote Config
  • Google Analytics 4
Release
  • GitHub Actions
  • Fastlane
  • Google Play
  • App Store

Want a second app without a second codebase?
Let's build it together.

We split editions with build flags and remote config, so each one keeps its own store, model and look while features ship once.