Game Design Document · v1.0 · July 2026

Tavla Royale

One board, five thousand years, every table. A premium-feel, fair-dice backgammon for the whole world — Tavla, Tawla, Tavli, Nardi and classic match play in a single Unity 2D mobile app.

ENGINEUnity 2D (URP) · C# PLATFORMSAndroid · iOS ORIENTATIONPortrait-first LAUNCH SCOPEOffline vs AI MODELF2P · Coins + IAP + Ads STUDIOCodeCanima Studios

Vision & Product Pillars

Backgammon is played by hundreds of millions of people who call it different names and play it by different house rules. Every major app today serves exactly one of those audiences — or serves all of them badly with aggressive ads and dice nobody trusts. Tavla Royale serves them all, properly.

Elevator pitch

A beautifully crafted board — walnut, brass and cream — that opens in two seconds, plays offline anywhere, and knows your rules: the doubling cube for London, no cube for Istanbul, Plakoto for Athens, Long Nardi for Yerevan. Dice are cryptographically fair and the game proves it. Ads never interrupt a match.

Pillar 1

Every table's rules

Six authentic variants at launch with correct regional terminology, not one Western rule set with a translation layer.

Pillar 2

Provably fair dice

Commit-reveal RNG with a visible fairness ledger. The single loudest complaint in this genre becomes our loudest feature.

Pillar 3

Respectful free-to-play

Interstitials only between matches, hard-capped. Rewarded ads are opt-in and generous. Coins gate stakes, never moves.

Pillar 4

Two-second tea break

Cold start to first roll in under 8 s; resume any match instantly. Built for the commute, the queue, the tea house.

Pillar 5

AI worth beating

Four difficulty tiers up to a genuinely strong evaluator, with a post-game "blunder review" that teaches instead of taunts.

Horizon

Online-ready core

The rules engine is deterministic and server-shaped from day one, so Nakama PvP (Phase 2) is a transport change, not a rewrite.

Positioning in one line: the fairness and variant-authenticity of a serious platform, wrapped in the polish of a casual hit, without the social-casino aggression of the incumbents.

Market & Audience

"Global" for backgammon doesn't mean one audience — it means a federation of regional audiences, each reachable with its own store listing, name and rule set.

RegionLocal nameDefault variantLocalization notes
Turkey + diaspora (DE, NL)TavlaTavla (no cube, 5-point matches)tr-TR strings, tea-house table themes, "Mars/Backgammon" = double win terminology
Gulf & LevantTawla / طاولةMahbusa (Plakoto-family) + 31Full RTL (reuse Baloot pipeline), ar-SA / ar-EG strings, Ramadan events
Greece + CyprusTavliPortes · Plakoto · Fevga rotationel-GR; the 3-game rotation IS the product here — ship it as one mode
Iran, Armenia, Caucasus, RUNardi / NardeLong Nardifa-IR, hy-AM, ru-RU; no hitting in Long Nardi — a genuinely different game
Western EU, US, ILBackgammonMatch play + doubling cube, Crawforden, fr, de, he; competitive framing, ELO, blunder review
South Asia (secondary)BackgammonClassic, money gameLow-end device performance target; en-IN, si-LK 🇱🇰 as a personal touch

Audience segments

Core

Heritage player · 35–65

Learned at a physical table from family. Wants *their* rules, big readable checkers, no clutter. Highest retention, sensitive to dice fairness.

Core

Casual commuter · 22–45

Plays 3-minute sessions vs AI. Wants instant resume, one-hand portrait play, satisfying feel. Primary rewarded-ad consumer.

Growth

Improver / hobbyist

Watches backgammon YouTube, knows what a blunder is. Converts on the blunder-review IAP and hard AI. Vocal in reviews — win them, win ASO.

Competitive reality: Backgammon Live and Lord of the Board own paid UA in TR/MENA. We do not out-spend them; we out-authenticate them (variants, fairness, no ad-spam) and win organic + ASO per region with localized store listings per market.

Game Modes & Variants

Launch ships six variants against AI, all driven by one rules engine with variant descriptors. Online PvP, tournaments and friend tables arrive in Phase 2.

VariantCubeHittingStart layoutWin conditionsLaunch
Backgammon (Match)Yes + Crawford + Jacoby(money)YesStandard 24/13/8/6Single ×1 · Gammon ×2 · Backgammon ×3✔ v1.0
TavlaNoYesStandardSingle 1p · Mars 2p (first to 5)✔ v1.0
Portes (Tavli #1)NoYesStandard1p / 2p (diplo)✔ v1.0
Plakoto (Tavli #2)NoPin instead of hitAll 15 on opponent's 1-point1p / 2p; pinned mother checker = 2p✔ v1.0
Fevga (Tavli #3)NoNo hits, single checker blocksAll 15 on far corner1p / 2p✔ v1.0
Long NardiNoNo hitting at allAll 15 on point 24 (head)Oyn 1p · Mars 2p · Home Mars 3p (variant toggle)✔ v1.0
Mahbusa (Tawla)NoPin (imprison)Regional1p / 2p◔ v1.1
Online PvP · TournamentsPer variantNakama authoritative◯ Phase 2

Mode wrapper features (all variants)

Variant descriptor design: every rule that differs is data, not code — VariantDef ScriptableObject: start layout, hit mode (hit / pin / none), cube enabled, movement direction (both CCW in Fevga/Long Nardi), first-move rules, gammon terminology, scoring table. The engine consumes the descriptor; adding Mahbusa in v1.1 is content, not engineering.

Rules Engine Specification

The engine is a pure C# library (no UnityEngine references) — deterministic, unit-testable, and reusable verbatim inside a Nakama match handler in Phase 2.

Board model

Legal move generation (the hard 20%)

Doubling cube state machine (classic only)

StateLegal actionsTransition
Centered (64)Either player may double before rolling→ Offered
OfferedOpponent: Take / DropTake → Owned(opponent), value ×2 · Drop → match point(s) to doubler at pre-double value
Owned(P)Only P may redouble before rolling→ Offered (beavers off by default; money-game option)
Crawford gameCube dead for exactly one game when leader reaches match−1Post-Crawford: cube live again

Scoring

Classic: single ×1, gammon ×2 (opponent bore off none), backgammon ×3 (none borne off + checker on bar/opponent home), all × cube value; Jacoby rule optional in money games. Tavla: win 1, Mars 2 (opponent bore off none). Plakoto: pinning the opponent's mother checker (their last checker on their start point) scores a double win immediately. Long Nardi: Oyn 1 / Mars 2, optional Koks 3. All values live in the variant descriptor.

Fair dice — the trust system

AI Design

Launch AI is a tuned heuristic evaluator — cheap, instant on low-end devices, and adjustable to four believable difficulty tiers. A neural evaluator is a v1.2 upgrade, not a launch dependency.

Evaluation function (weighted linear)

FeatureSignalNotes
Pip count differentialRace positionDominant term in bear-off/race phases
Blot exposureΣ P(hit) per blot × pip costExact 1–2 die hit probabilities from lookup table
Prime strengthConsecutive made points (2–6 length, position-weighted)Zeroed in Fevga/Long Nardi variants, replaced by block chains
Anchor qualityAdvanced anchors (20/21/18-pt)Classic + Portes only
Home board strengthMade home points when opponent has blots/barAttack timing
Checkers back / trappedEscape difficulty; pinned checkers in Plakoto weighted heavilyPer-variant weight set
Bear-off efficiencyWastage minimizationEndgame table for last 2–3 rolls

Search & difficulty tiers

Tier 1 · Çırak (Apprentice)

Greedy + noise

1-ply eval, top-3 move sampled with temperature, cube logic off/naive. Beatable by a first-day player.

Tier 2 · Oyuncu (Player)

1-ply, mild noise

Best move 80% of the time; occasional "human" second-best picks. Default tier.

Tier 3 · Usta (Master)

2-ply expectimax

Full 21-roll opponent reply distribution, pruned to top-6 candidate moves per node. Sound cube decisions via match-equity table.

Tier 4 · Şeyh (Grandmaster)

2-ply + rollout tiebreaks

Monte-Carlo rollouts (64–128 games) to break near-ties in critical positions; async so UI never stalls. Target: crushes 95% of players.

Blunder review (the improver hook)

Post-match, replay any move; the evaluator marks moves losing >0.08 equity as blunders and shows the better play with a one-line reason ("leaves 2 blots under direct shots"). Three free reviews daily; unlimited via Royale Pass. This is the feature the hobbyist segment pays for and reviews well.

v1.2 upgrade path: train a small MLP evaluator (196-input GNU-style encoding) via self-play on desktop, export to ONNX, run with Unity Sentis. Heuristic tiers stay as the lower difficulties. GNU Backgammon informs the feature encoding as prior art — studied, not linked (GPL isolation).

UI / UX Design

Portrait-first is a deliberate bet: the heritage and commuter segments play one-handed. The board rotates 90° — points run horizontally from the left and right rails, the bar becomes a horizontal beam. Landscape remains supported on tablets.

Screen mockups

D 12,450 ♦ 36 TAVLA ROYALE QUICK MATCH Tavla · vs Usta AI · 500 stake 🏆 Daily Gauntlet 2 / 3 · 2,000 pot 👥 Pass & Play Local 2P · Free CHOOSE YOUR TABLE 🇹🇷Tavla 🇬🇷Tavli 🌍Classic ● Home Shop Codex Profile
01 · HOME
🤖 Usta · Tier 3 Pips 142 · Score 2 0:19 64 D Das · Pips 128 Score 3 · to 5 Undo Confirm
02 · MATCH · portrait board
🏅 MARS! Double win · +2 points · Match 5–2 STAKE WON +1,000 2× ▶ ad ✓ Dice fairness verified view ledger › Blunder Review · 2 found Move 14 lost 0.21 equity — see why LEVEL 12340 / 500 XP Home Rematch interstitial eligible after this screen · cap 1 / 3 matches
03 · MATCH RESULT
Bazaar 12,450 Coins Boards Dice Pass ▶ Watch & earn +400 coins · 3 left today Free 🪙5,000 $0.99 MOST POPULAR 💰30,000 +10% $4.99 FEATURED BOARD Bosphorus Night Board + dice + SFX set ♦ 24 gems Royale Pass · $4.99/mo No interstitials · unlimited blunder review · monthly board Home ● Shop Codex Profile
04 · BAZAAR (SHOP)

Interaction design

Screen flow

Splash → Home ─┬→ Quick Match → Match → Result ─┬→ Rematch ↺
                 ├→ Variant Select → Stake Select → Match    └→ Blunder Review → Home
                 ├→ Daily Gauntlet (3-match ladder)
                 ├→ Bazaar · Codex · Profile/Settings
                 └→ Pass & Play

Art Direction

The fantasy is a beautiful physical board in a warm, dim tea house — wood, brass and felt, not neon and confetti. Deliberately distinct from Baloot's navy/gold so the studio portfolio reads as two brands.

Palette

Smoke Walnut#171009 · app bg
Board Wood#3A2A1C · frames
Board Cream#F0E4CC · text, checkers
Inlay Brass#C9A24B · CTAs, accents
Kilim Rust#C05B2E · points A, alerts
Oxide Teal#5E8A96 · points B, gems

Type & iconography

Cosmetic content matrix (shop inventory)

SlotLaunch setsExamples
Boards6Walnut Classic (default) · Bosphorus Night · Damascus Mother-of-Pearl · Aegean Marble · Yerevan Felt · Ceylon Teak 🇱🇰
Checkers5Cream & Umber (default) · Brass & Obsidian · Sea Glass · Ottoman Ceramic · Amber Resin
Dice5Ivory (default) · Bone Rustic · Smoked Glass · Lapis · Gold Leaf
SFX / ambience3Tea House (murmur + glasses) · Seaside Taverna · Silent Focus
Frames & titles8Profile flair earned via achievements (not sold) — "Mars Hunter", "Prime Architect"

All board/checker/dice sets ship through the same equippable-cosmetic pipeline as Baloot's inventory system — atlas per theme, addressable bundles, one ThemeDef ScriptableObject each.

Monetization & Economy

Dual currency, stake-loop coins, and ads that never touch the board. The economy borrows Baloot's proven structure and softens the social-casino edges the genre is hated for.

Currencies

Soft

🪙 Coins

Earned: match stakes, daily bonus, gauntlet, missions, rewarded ads. Spent: table stakes (500 → 100k tiers) and coin-priced cosmetics. Sink = stake losses; source-sink tuned to a slow-rising balance for a break-even player.

Hard

♦ Gems

IAP-primary, trickled via achievements (~30/month F2P). Spent: premium boards/dice, gauntlet retry, profile flair. Never required to play any mode.

IAP catalog

SKUPriceContentsRole
Coin Pouch$0.995,000 🪙Entry conversion
Coin Chest$4.9930,000 🪙 (+10% bonus)Anchor "most popular"
Coin Vault$19.99150,000 🪙 (+25%)Whale tier
Gem Set / Trove$1.99 / $9.9940 ♦ / 260 ♦Cosmetic currency
Starter Bundle$2.99 · once15,000 🪙 + 40 ♦ + Bosphorus boardD1–D3 conversion, 80% off framing
Remove Ads$3.99 · onceNo interstitials forever (rewarded stays)The goodwill SKU — genre reviews prove demand
Royale Pass$4.99/moNo interstitials · unlimited blunder review · monthly exclusive board · +20% mission coinsSubscription, improver segment

Ad placements (AdMob, Next Gen SDK)

FormatPlacementCaps & rules
Rewarded2× stake on win · +400 coins in Bazaar · gauntlet retry · daily bonus doublerUser-initiated only; 8/day soft cap
InterstitialAfter result screen onlyMax 1 per 3 matches, never before 3 min of session, never in Pass & Play, disabled first 5 sessions (onboarding grace)
BannerNone.Banners on a board game read as cheap; the premium feel is the strategy
Why the caps are the strategy: the top-grossing incumbents' worst reviews are all ad-frequency complaints — mid-game interstitials, doubled ads between hands. "Fair dice, fair ads" is one brand promise, and the Remove Ads SKU monetizes the players those apps burn.

Progression & Retention

Daily

Login streak + Daily Gauntlet

Escalating 7-day coin calendar (day 7 = gem drop). Gauntlet: 3 AI matches, rising tier, lose = retry with gems/ad or wait for tomorrow. One appointment per day, ~10 minutes.

Session

Missions

3 rotating dailies ("win with a Mars", "bear off 15 in under 6 turns", "play Fevga") + weekly meta-mission. Missions steer players into variants they haven't tried — cross-variant discovery is retention.

Long

Player level + achievements

XP per match (win-weighted). Levels gate stake tables (prevents new players losing their balance at high stakes) and drip gems. 40 achievements at launch incl. variant mastery tracks with titles/frames.

Skill

Local ELO + blunder trend

Per-variant rating vs AI tiers and an error-rate graph over time. Improvement made visible is the strongest hook for the hobbyist segment — and it seeds matchmaking data for Phase 2 PvP.

Session design targets

Technical Architecture (Unity 2D)

Project structure

Assemblies

Royale.Core — pure C# rules engine, AI, RNG (no UnityEngine)
Royale.Game — presentation, input, VFX
Royale.Meta — economy, save, missions, shop
Royale.Services — ads, IAP, analytics wrappers
Core has 100% unit-test coverage target; it becomes the Nakama match handler later.

Scenes & flow

Boot (services init) → HomeMatch (additive) — 3 scenes total. A GameStateMachine (plain C#) drives match flow: Idle → Roll → SelectChecker → MoveStaged → Confirm → CubeOffer? → TurnEnd → GameEnd.

Rendering

URP 2D, one atlas per board theme via Addressables. Checkers = pooled sprites; movement via DOTween paths; dice = flipbook + squash tween. Target 60 fps on 2 GB Android; total install < 120 MB, base APK < 60 MB with themes on demand.

Save & state

JSON save (profile, economy, settings, in-progress match snapshot) — encrypted, versioned migrations, atomic write. Mid-match kill/resume is a launch requirement, not a nice-to-have. Cloud save via play-services/GameCenter in v1.1.

Services

AdMob Next Gen SDK (reuse Baloot migration work) · Unity IAP with server-less receipt validation at launch · Firebase Analytics + Crashlytics · Remote Config for economy tuning (stake tables, ad caps, mission rewards).

Phase 2 seam

All match mutations flow through IMatchDriver — launch binds LocalAIDriver; Phase 2 adds NakamaDriver implementing the same interface with the server running Royale.Core authoritatively. UI code does not change.

Testing the rules engine

Roadmap & Milestones

MilestoneDurationScopeExit criteria
M1 · Engine3 wksRules engine all 6 variants, RNG + commit-reveal, full test suiteFuzz + golden tests green; CLI plays legal full games
M2 · Playable3 wksMatch scene, input, board rendering, Tier 1–2 AI, Tavla + ClassicFull match on device, resume works
M3 · Product4 wksHome/Bazaar/Codex, economy, missions, gauntlet, save, remaining variants + Tier 3–4 AIFeature-complete build
M4 · Polish & soft launch3 wksSFX/haptics/VFX, localization (en, tr, ar, el, ru), ads + IAP live, store assetsSoft launch: LK + TR + GR
v1.0 Global2 wks tuningRemote-config economy tuning from soft-launch dataCrash-free ≥ 99.5%, D1 ≥ 32%
v1.1+4 wksMahbusa, cloud save, board theme drop #2, Ramadan/seasonal event system
v1.2+6 wksNeural AI (Sentis), replay sharing, tournaments vs AI
Phase 2Q1 '27Nakama PvP, friend tables, chat, leagues — Baloot backend playbook

Solo-dev calibrated: ~15 weeks to global v1.0. M1 is deliberately front-loaded — every later system stands on a provably correct engine.

KPIs & Risks

Retention

D1 ≥ 32% · D7 ≥ 12% · D30 ≥ 5% (board-game genre benchmarks; heritage audience should over-perform D30)

Engagement

≥ 3.5 matches/DAU · median session ≥ 7 min · gauntlet participation ≥ 35% of DAU

Monetization

Rewarded engagement ≥ 30% DAU · payer conversion ≥ 1.5% by D30 · ARPDAU ≥ $0.035 blended at soft launch

Top risks

RiskSeverityMitigation
UA walls in TR/MENA (incumbent spend)HighOrganic-first: per-region ASO listings, variant keywords ("tavla", "طاولة", "τάβλι"), fairness as review-bait, creator seeding in TR backgammon YouTube
Variant rule disputesMediumRules Codex cites sources; house-rule toggles (e.g., Nardi Koks on/off); community feedback channel in-app
AI feels "rigged" despite fair diceMediumFairness ledger + roll histogram + publish AI-never-sees-future-rolls statement in Codex; separate RNG streams for player/AI
Scope creep on 6 variantsMediumDescriptor-driven engine (M1 exit gate covers all six); Mahbusa already deferred to v1.1
Ad revenue below plan due to capsLowRemote Config caps allow tuning without releases; Remove Ads + Pass offset; premium feel raises LTV ceiling