Mini Game Templates · Board Pack

Classic and abstract board-game templates with local AI/rule logic, turn flow, and configurable play settings.

Unity 6000.0.62f1+10 games20 boosters40 achievementsLiveOps Kit bundled

🏠 Overview

10 fully playable mini-games, each with boosters, achievements, reskin slots, a first-run tutorial, per-level difficulty scaling and light/dark theming — all driven by one shared runtime.

ChessFull chess versus a thinking AI opponent.
CheckersJump and capture your way to a clean board.
GoCapture stones and claim territory on a 9×9 board.
Four in a RowDrop discs and connect four before the AI does.
LudoRoll, race and send rivals home — first home wins.
ReversiFlank and flip discs — own the most when the board fills.
BackgammonRoll, race and bear off all your checkers first.
Nine Men's MorrisForm mills, capture pieces, corner the AI.
MancalaSow stones, capture, and fill your store to win.
Dots & BoxesDraw lines, complete boxes, claim the most to win.
One contract, 10 implementations. Every game implements IMiniGame and is discovered automatically by reflection — no scene wiring, no prefab lists.

Shared capabilities

💥 BoostersPer-game power-ups with persistent counts and refund safety.
🏆 AchievementsProgression goals per game, tracked persistently, with coin rewards.
🎨 ReskinsDrop in your own art per slot, per game — no code required.
🎯 TutorialsFirst-run overlay walkthroughs, defined declaratively per game.
📈 Level scalingAuto-generated difficulty curves, editable in the Studio.
🌙 Light & darkOne toggle re-themes the chrome and every game.
🎁 LiveOps Kit bundledAds, IAP, haptics, rate-us, notifications and more — the full HyperCasual LiveOps Kit ships in this pack.

⚙ How it works

This is a procedural-UI games template. Every game builds its own interface and logic in C# at runtime inside the RectTransform you give it — there are no hand-placed prefabs to wire up. The shipped demo scene is a pre-baked snapshot of that build, so you can inspect the full hierarchy without pressing Play; on Play it rebuilds itself and becomes fully interactive.

The Studio

Open Tools > Mini Game Templates > Studio for per-game tuning panels. Settings you edit are saved to ScriptableObject assets under Assets/MiniGameTemplates/Resources/Config/ and loaded by the games at runtime.

Customization at a glance

What to changeWhere to find it
Game rules / difficulty / dimensionsStudio, or the game's <Game>Settings asset
Per-level difficulty curveStudio > game panel > Levels editor
Colours / overall lookMiniGameTheme asset, or the in-app DARK/LIGHT toggle
Game art (tiles, pieces, backgrounds…)Reskin system — Tools > Mini Game Templates > Reskin Editor
Boosters offeredEach game's <Game>BoosterSpec.cs
Deeper layout / behaviourThe game's <Game>Game.cs build code
Heads-up: because the UI is procedural, customization happens through data (settings assets, theme, reskins) rather than dragging things around a scene. The data-driven path covers day-to-day tweaks; source access covers the rest.

⚡ Quick start

  1. Import MiniGameTemplates-Board.unitypackage. If Unity offers to import TMP Essentials, accept — the demo UI uses TextMeshPro.
  2. Open Assets/MiniGameTemplates/Demo/MiniGameTemplates_Board.unity. The full demo is already baked into the scene.
  3. Press Play — the dashboard lists every Board game; pick, play, and try the boosters and cheat rail.
  4. Open Tools > Mini Game Templates > Studio and tune any game's settings.
  5. (Optional) Open Tools > HLK > Guided Setup to configure the bundled LiveOps kit — ads, IAP, notifications, rate-us and more (see the LiveOps Kit section).
  6. To ship a single game inside your own UI, use the IMiniGame contract:
IMiniGame game = new ChessGame();
game.Mount(hostRect, context);   // context : IMiniGameContext
// ... later, when done:
game.Unmount();
Tip: the demo scene's dashboard is a complete reference implementation of IMiniGameContext (theme, audio, save, events, wallet, score) — copy it or implement the interface with your own services.

🛠 Architecture

The IMiniGame contract

public interface IMiniGame {
    string Id { get; }                 // stable snake_case id, e.g. "board_chess"
    string DisplayName { get; }
    string Category { get; }
    string ShortDescription { get; }
    void Mount(RectTransform host, IMiniGameContext ctx);
    void Unmount();
    void NewRound();
    IEnumerable<CheatAction> GetCheatActions();
}

Auto-discovery

RegistryDiscoversConvention
MiniGameRegistryIMiniGame classes with a [MiniGame] attributeone per game
Booster registryIBoosterSpec implementations<Game>BoosterSpec.cs
Achievement registryIAchievementSpec implementations<Game>AchievementSpec.cs
Reskin registryIReskinSpec implementations<Game>ReskinSpec.cs
Tutorial registryITutorialSpec implementations<Game>TutorialSpec.cs

Per-game folder layout

Assets/MiniGameTemplates/Runtime/Board/<Game>/
    <Game>Game.cs             // gameplay + procedural UI
    <Game>Settings.cs         // ScriptableObject settings (+ static Default)
    <Game>BoosterSpec.cs      // booster definitions
    <Game>AchievementSpec.cs  // achievement definitions
    <Game>ReskinSpec.cs       // reskinnable sprite slots
    <Game>TutorialSpec.cs     // first-run walkthrough steps
Modular by design. Delete any single game's folder and the rest keep working. Add a new game by mirroring the layout — no edits to any other file required.

Runtime flow

Mount(host, ctx)NewRound() → player input loop → RoundWon / RoundLost event → NewRound() or Unmount()

🎮 Chess

Full chess versus a thinking AI opponent.

How to play

  1. Tap one of your white pieces to see where it can legally move.
  2. Tap a highlighted square to move. Checkmate the AI's king to win!

Boosters

BoosterKeyEffect
Best MovehintHighlights the engine's recommended move.
UndoundoTake back your last move (and the AI's reply).

Achievements

AchievementGoalReward
Checkmate!
Win your first game.
1
Grandmaster
Win 10 games.
10250 coins
Castled Up
Castle in a game.
1100 coins
The Mating Net
Deliver 5 checkmates.
5300 coins

Reskin slots

piece_light piece_dark board — drop art per slot via Tools > Mini Game Templates > Reskin Editor.

Configurable settings

SettingDefaultWhat it does
DifficultyChessDifficulty.MediumAI search depth: Easy 2 / Medium 3 / Hard 4 ply.

↑ Back to top

🎮 Checkers

Jump and capture your way to a clean board.

How to play

  1. Tap one of your red pieces, then tap a highlighted square to move diagonally.
  2. Jump over the AI's pieces to capture them — captures are required. Reach the top to crown a king!

Boosters

BoosterKeyEffect
Best MovehintHighlights a strong move to play.
UndoundoTake back your last move (and the AI's).

Achievements

AchievementGoalReward
First Win
Beat the AI once.
1
Draughts Master
Win 10 games.
10150 coins
King Me
Crown a king.
1100 coins
Triple Jump
Capture three or more pieces in one move.
1250 coins

Reskin slots

piece_player piece_ai board — drop art per slot via Tools > Mini Game Templates > Reskin Editor.

Configurable settings

SettingDefaultWhat it does
DifficultyCheckersDifficulty.MediumAI search depth: Easy 2 / Medium 4 / Hard 6 ply.
PlayerStartstrueIf true, you (red) move first.

↑ Back to top

🎮 Go

Capture stones and claim territory on a 9×9 board.

How to play

  1. Tap an intersection to place a black stone. Surround a group on all sides to capture it.
  2. Claim territory by walling off empty regions. Tap Pass when done — two passes ends the game.

Boosters

BoosterKeyEffect
Good PointhintHighlights a strong intersection to play.
UndoundoTake back your last stone.

Achievements

AchievementGoalReward
First Stone
Win your first game.
1
Go Master
Win 10 games.
10200 coins
Capturer
Capture 100 stones in total.
100200 coins
Big Net
Capture five or more stones in a single move.
1250 coins

Reskin slots

stone_player stone_ai board — drop art per slot via Tools > Mini Game Templates > Reskin Editor.

Configurable settings

SettingDefaultWhat it does
DifficultyGoDifficulty.MediumAI play strength on the 9×9 board.
PlayerStartstrueIf true, you (black) move first.

↑ Back to top

🎮 Four in a Row

Drop discs and connect four before the AI does.

How to play

  1. Tap a column to drop your red disc into it.
  2. Line up four of your discs in a row, column, or diagonal — before the AI does!

Boosters

BoosterKeyEffect
Best DrophintHighlights the strongest column to play.
UndoundoTake back your last drop (and the AI's).

Achievements

AchievementGoalReward
First Four
Connect four and beat the AI once.
1
Four-Sight
Win 10 games.
10150 coins
Unaided
Win a game without using Undo.
1150 coins
Quick Four
Win using 7 discs or fewer.
1250 coins

Reskin slots

disc_player disc_ai board — drop art per slot via Tools > Mini Game Templates > Reskin Editor.

Configurable settings

SettingDefaultWhat it does
DifficultyConnectFourDifficulty.MediumAI search depth: Easy 2 / Medium 4 / Hard 6 ply.
PlayerStartstrueIf true, you (red) drop first.

↑ Back to top

🎮 Ludo

Roll, race and send rivals home — first home wins.

How to play

  1. Tap ROLL, then tap a highlighted token to move it. Roll a 6 to leave base (and roll again).
  2. Land on an AI token (off the safe squares) to send it home. Get all four tokens home to win!

Boosters

BoosterKeyEffect
Lucky Sixlucky6Guarantee your next roll is a 6.
Re-rollrerollDiscard your current roll and roll again.

Achievements

AchievementGoalReward
First Home
Win your first game.
1
Ludo Master
Win 10 games.
10150 coins
Send-Off
Send 50 AI tokens back to base in total.
50200 coins
Lucky Streak
Roll 30 sixes in total.
30150 coins

Reskin slots

token_player token_ai board — drop art per slot via Tools > Mini Game Templates > Reskin Editor.

Configurable settings

SettingDefaultWhat it does
DifficultyLudoDifficulty.MediumAI token-choice quality.

↑ Back to top

🎮 Reversi

Flank and flip discs — own the most when the board fills.

How to play

  1. Place a dark disc so it traps a line of light discs between two of yours.
  2. Every trapped disc flips to your colour. Own the most discs when the board fills to win!

Boosters

BoosterKeyEffect
Best MovehintHighlights the strongest square to play.
UndoundoTake back your last move (and the AI's reply).

Achievements

AchievementGoalReward
First Flip
Beat the AI once.
1
Othello Master
Win 10 games.
10150 coins
Corner Office
Win a game holding all four corners.
1200 coins
Landslide
Win by 20 discs or more.
1250 coins

Reskin slots

disc_player disc_ai board — drop art per slot via Tools > Mini Game Templates > Reskin Editor.

Configurable settings

SettingDefaultWhat it does
DifficultyReversiDifficulty.MediumAI search depth: Easy 1 / Medium 3 / Hard 5 ply.
PlayerStartstrueIf true, you (dark) move first.

↑ Back to top

🎮 Backgammon

Roll, race and bear off all your checkers first.

How to play

  1. Tap ROLL, then tap a checker and a highlighted point to move it by a die's value.
  2. Land on a lone enemy checker to send it to the bar. Bring all 15 home, then bear them off to win!

Boosters

BoosterKeyEffect
Lucky DoublesdoublesMake your next roll a doubles (four moves).
UndoundoTake back your last checker move.

Achievements

AchievementGoalReward
First Bear-Off
Win your first game.
1
Backgammon Master
Win 10 games.
10200 coins
Gammon!
Win before the AI bears off any checker.
1300 coins
Sharp Hitter
Hit 50 opponent blots in total.
50150 coins

Reskin slots

checker_player checker_ai board — drop art per slot via Tools > Mini Game Templates > Reskin Editor.

Configurable settings

SettingDefaultWhat it does
DifficultyBackgammonDifficulty.MediumAI play strength.

↑ Back to top

🎮 Nine Men's Morris

Form mills, capture pieces, corner the AI.

How to play

  1. Tap an empty spot to place a piece. Once all nine are down, slide them along the lines.
  2. Line up three on a line to form a mill and remove an AI piece. Reduce it to two to win!

Boosters

BoosterKeyEffect
Best MovehintHighlights a strong place or move.
UndoundoTake back your last turn (and the AI's).

Achievements

AchievementGoalReward
First Win
Beat the AI once.
1
Mill Master
Win 10 games.
10150 coins
Three in a Mill
Form 50 mills in total.
50150 coins
On the Wing
Win a game while flying (down to three pieces).
1250 coins

Reskin slots

piece_player piece_ai board — drop art per slot via Tools > Mini Game Templates > Reskin Editor.

Configurable settings

SettingDefaultWhat it does
DifficultyMorrisDifficulty.MediumAI search depth.
PlayerStartstrueIf true, you place first.

↑ Back to top

🎮 Mancala

Sow stones, capture, and fill your store to win.

How to play

  1. Tap one of your (bottom) pits to scatter its stones counter-clockwise.
  2. Land your last stone in your store (right) for a free turn, or in an empty pit to capture across.

Boosters

BoosterKeyEffect
Best PithintHighlights the strongest pit to sow.
UndoundoTake back your last sow.

Achievements

AchievementGoalReward
First Harvest
Beat the AI once.
1
Kalah Master
Win 10 games.
10150 coins
Big Steal
Capture 8 or more stones in a single move.
1200 coins
Bountiful
Win by 10 stones or more.
1200 coins

Reskin slots

board — drop art per slot via Tools > Mini Game Templates > Reskin Editor.

Configurable settings

SettingDefaultWhat it does
DifficultyMancalaDifficulty.MediumAI search depth: Easy 2 / Medium 5 / Hard 8 ply.
PlayerStartstrueIf true, you move first.

↑ Back to top

🎮 Dots & Boxes

Draw lines, complete boxes, claim the most to win.

How to play

  1. Tap a gap between two dots to draw a line.
  2. Complete a box's fourth side to claim it and take another turn. Most boxes wins!

Boosters

BoosterKeyEffect
Safe LinehintHighlights a free box or a safe line to draw.
UndoundoTake back your last line.

Achievements

AchievementGoalReward
First Boxes
Beat the AI once.
1
Box Master
Win 10 games.
10150 coins
Chain Reaction
Claim 5 or more boxes in a single turn.
1200 coins
Clean Sheet
Win without conceding a single box.
1250 coins

Reskin slots

background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.

Configurable settings

SettingDefaultWhat it does
DifficultyDotsDifficulty.MediumAI play strength.
PlayerStartstrueIf true, you draw the first line.

↑ Back to top

💥 Boosters

Per-game power-ups with persistent counts and refund safety, auto-discovered from each game's <Game>BoosterSpec.cs. The demo dashboard renders them as the bottom booster bar.

Activating a booster

bool OnBoosterActivated(string key) {
    if (_ended || _busy) return false;   // returning false REFUNDS the charge
    switch (key) { /* per-key effects */ }
    return false;                        // unknown key -> refund
}
Refund safety: returning false from the handler refunds the booster — use it whenever the activation can't proceed. Returning true deducts the charge.

Award boosters programmatically with BoosterManager.Add(gameId, key, count).

Full booster catalogue

GameBooster keys
Chesshint undo
Checkershint undo
Gohint undo
Four in a Rowhint undo
Ludolucky6 reroll
Reversihint undo
Backgammondoubles undo
Nine Men's Morrishint undo
Mancalahint undo
Dots & Boxeshint undo

🏆 Achievements

Progression goals per game, defined in <Game>AchievementSpec.cs and tracked persistently by AchievementManager. Unlocks pop a toast card over the game and auto-credit any coin reward. Each game's own goals are listed in its section above.

Reset helpers for testing: AchievementManager.ResetForGame(gameId) and AchievementManager.ResetAll() (also exposed in the demo's cheat rail).

🎨 Reskins

Drop in your own art per slot, per game — no code required. Open Tools > Mini Game Templates > Reskin Editor, pick a game, and assign an image per slot. Art is copied to Resources/Reskin/<gameId>/<slot>.png and imported as a Sprite automatically. In-game, the Skin pill toggles between Default and Custom art.

Per-game slot list

GameSlots
Chesspiece_light piece_dark board
Checkerspiece_player piece_ai board
Gostone_player stone_ai board
Four in a Rowdisc_player disc_ai board
Ludotoken_player token_ai board
Reversidisc_player disc_ai board
Backgammonchecker_player checker_ai board
Nine Men's Morrispiece_player piece_ai board
Mancalaboard
Dots & Boxesbackground
Sprite-only. The reskin system swaps sprites — layouts, colours and animations stay the same. Until custom art is added the games use clean procedural sprites and the pill shows Skin: —.

🎯 Tutorials

First-run overlay walkthroughs, defined declaratively in <Game>TutorialSpec.cs as an ordered list of captioned spotlight steps. Each shows once per game's first session and can be replayed from the demo's cheat rail. Reset with TutorialManager.Reset(gameId).

📈 Level scaling

Per-game difficulty progression — auto-generated out of the box, fully editable in the Studio.

int level = LevelManager.GetCurrent(gameId);          // player's current level
var diff  = LevelManager.GetDifficultyForCurrent(gameId);
float mult = diff.Get("difficulty", 1f);              // ramp targets / timers / AI

The Studio's Levels editor can regenerate a curve (level count, start/end difficulty) or hand-edit individual levels; edits are saved as a LevelSet asset under Resources/Config/Levels/<gameId>.asset. Reset progress with LevelManager.ResetProgress(gameId).

🌙 Light & dark mode

One toggle re-themes the whole scene — chrome and every game. Games read every colour from ctx.Theme, a MiniGameTheme asset that carries both palettes:

theme.ApplyMode(light: true);   // swap palettes
bool isLight = theme.IsLightMode;

The demo dashboard's header has a DARK / LIGHT pill; the choice persists between sessions (default: dark). Both palettes are contrast-checked — panel/text/accent pairings stay readable in either mode.

Tip: when customizing, read colours from ctx.Theme (Accent, TextPrimary, PanelBackground, …) rather than hardcoding, and your changes work in both modes.

🎁 LiveOps Kit (bundled)

The full HyperCasual LiveOps Kit is included in this pack — no stripping, nothing to buy on top. It provides the production meta-game layer around the games:

AdsRewarded, interstitial and banner service with mediation backends (AdMob, LevelPlay, AppLovin, Unity Ads). Runs a safe mock backend until a real SDK is installed.
IAPUnity Purchasing integration with catalog, dummy store for testing, and purchase-reward hooks.
HapticsCross-platform vibration service — already wired to every game's audio events in this demo.
Rate UsNative store-review prompts (Android in-app review / iOS SKStoreReviewController) with dummy editor backend.
NotificationsLocal notification scheduling with permission flow (mobile packages activate it).
Consent & privacyGoogle UMP / Apple ATT consent flow with editor-safe dummy backend.
Analytics & crashPluggable analytics (Unity Analytics / Firebase) and crash-reporter hooks.
Retention systemsDaily rewards, quests, battle pass, energy, offers, shop, unlocks, deep links, sharing, update prompt.

How it is hooked up in this demo

Setup & going live

  1. Everything works out of the box in the editor with mock/dummy backends — no SDKs required, nothing to configure for the demo.
  2. Open Tools > HLK > Open Toolset (or Tools > HLK > Guided Setup) to configure ad units, IAP products, notifications, rate-us and the rest.
  3. To go live, install the SDKs you want (e.g. AdMob, Unity Ads, Firebase) — the kit detects them automatically via scripting defines (HLK_ADMOB, HLK_UNITY_ADS, HLK_FIREBASE, …) and switches from mock to real backends.
No SDK binaries ship in this package. The kit is pure source with optional integrations — it compiles clean in an empty project and lights up real providers only when you add them.

Full kit documentation: Assets/MiniGameTemplates/HyperCasualLiveOpsKit/Documentation/HLK-Documentation.html (also listed under Tools > Mini Game Templates > Welcome > Open Documentation).

➕ Add to your project

Path A — use the bundled demo dashboard

Add Assets/MiniGameTemplates/Demo/MiniGameTemplates_Board.unity to your build settings. It auto-discovers every imported game and provides the picker, HUD, boosters, achievements and theming out of the box.

Path B — embed a single game in your own UI

IMiniGame game = new ChessGame();
game.Mount(hostRect, context);   // your IMiniGameContext implementation
// ...
game.Unmount();                  // ALWAYS unmount before destroying the host

Listening to events

ctx.Events.Subscribe(GameEvents.RoundWon,     payload => { /* celebrate */ });
ctx.Events.Subscribe(GameEvents.RoundLost,    payload => { /* retry UI  */ });
ctx.Events.Subscribe(GameEvents.ScoreChanged, payload => { /* HUD       */ });
Always Unmount(). Games run coroutines and tweens; failing to unmount before destroying the host leaves them running on destroyed transforms.

⚙ Customizing

Override default settings

Each game reads a ScriptableObject settings asset (see each game's Configurable settings table above). Create one via Create > Mini Game Templates > Board, drop it in Resources/Config/, or mutate <Game>Settings.Default at runtime before mounting.

Boosters: add / remove / rebalance

Audio

Games call ctx.Audio.Play(SfxKind.…). The bundled ProceduralAudioBus synthesizes all SFX at runtime — no audio files to manage; swap in your own IAudioBus to use recorded audio.

🧰 Adding new games

  1. Create Assets/MiniGameTemplates/Runtime/Board/MyGame/.
  2. Add MyGameGame.cs implementing IMiniGame, decorated with [MiniGame("…", "My Game", Category = MiniGameCategory.Board)].
  3. Add MyGameSettings (optional) with a static Default getter.
  4. Add the spec files — MyGameBoosterSpec, MyGameAchievementSpec, MyGameReskinSpec, MyGameTutorialSpec — all auto-discovered.
  5. Done: the dashboard and Studio list your game automatically. No edits to existing files.

💡 Troubleshooting

Text is invisible / fonts look broken

Import TMP Essentials: Window > TextMeshPro > Import TMP Essential Resources. The demo UI uses TextMeshPro's default font.

My game doesn't show up in the dashboard

Check it implements IMiniGame, carries the [MiniGame] attribute, and its assembly references MiniGameTemplates.Core.

A booster button does nothing when pressed

The booster's key must exactly match a case in the game's booster handler — unknown keys refund silently by design.

Tutorials replay every time I press Play in the editor

The "seen" flag is stored per game id in PlayerPrefs; clearing PlayerPrefs resets it. Replay on demand from the cheat rail instead.

Reskin sprites don't apply

Import the art through Tools > Mini Game Templates > Reskin Editor (it handles the copy + import settings), then flip the in-game Skin pill to Custom.

Coroutine errors about destroyed RectTransforms when switching games

Call Unmount() before destroying the host. The unmount path stops the game's coroutines and tweens.

Ads say “SIMULATED” / no real ads show

By design: without an ad SDK installed the kit uses its mock backend, which draws clearly-labelled placeholder ads so every flow is testable. Install a real provider (e.g. AdMob via its package) and the kit switches to it automatically — see the LiveOps Kit section.

Where do I report a bug?

Email satisvizion@gmail.com with your Unity version, target platform, the game id (e.g. board_chess), steps to reproduce, and the console log.

📬 Support & review

Get in touch: satisvizion@gmail.com — bug reports, feature requests, integration help and game requests for future updates are all welcome. Typical response time is 24–48 hours.

Before contacting, it helps to: check Troubleshooting above, open the demo scene to verify the game runs there, and copy any Console errors. Include your Unity version, render pipeline, target platform and the game id.

Enjoying the pack? Reviews on the Asset Store are the biggest help to an indie publisher — if this pack saved you time, a star rating is hugely appreciated. ⭐