Mini Game Templates · Board Pack
Classic and abstract board-game templates with local AI/rule logic, turn flow, and configurable play settings.
🏠 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.
IMiniGame and is discovered automatically by reflection — no scene wiring, no prefab lists.Shared capabilities
⚙ 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 change | Where to find it |
|---|---|
| Game rules / difficulty / dimensions | Studio, or the game's <Game>Settings asset |
| Per-level difficulty curve | Studio > game panel > Levels editor |
| Colours / overall look | MiniGameTheme asset, or the in-app DARK/LIGHT toggle |
| Game art (tiles, pieces, backgrounds…) | Reskin system — Tools > Mini Game Templates > Reskin Editor |
| Boosters offered | Each game's <Game>BoosterSpec.cs |
| Deeper layout / behaviour | The game's <Game>Game.cs build code |
⚡ Quick start
- Import
MiniGameTemplates-Board.unitypackage. If Unity offers to import TMP Essentials, accept — the demo UI uses TextMeshPro. - Open
Assets/MiniGameTemplates/Demo/MiniGameTemplates_Board.unity. The full demo is already baked into the scene. - Press Play — the dashboard lists every Board game; pick, play, and try the boosters and cheat rail.
- Open Tools > Mini Game Templates > Studio and tune any game's settings.
- (Optional) Open Tools > HLK > Guided Setup to configure the bundled LiveOps kit — ads, IAP, notifications, rate-us and more (see the LiveOps Kit section).
- To ship a single game inside your own UI, use the
IMiniGamecontract:
IMiniGame game = new ChessGame();
game.Mount(hostRect, context); // context : IMiniGameContext
// ... later, when done:
game.Unmount();
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
| Registry | Discovers | Convention |
|---|---|---|
MiniGameRegistry | IMiniGame classes with a [MiniGame] attribute | one per game |
| Booster registry | IBoosterSpec implementations | <Game>BoosterSpec.cs |
| Achievement registry | IAchievementSpec implementations | <Game>AchievementSpec.cs |
| Reskin registry | IReskinSpec implementations | <Game>ReskinSpec.cs |
| Tutorial registry | ITutorialSpec 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
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
- Tap one of your white pieces to see where it can legally move.
- Tap a highlighted square to move. Checkmate the AI's king to win!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Best Move | hint | Highlights the engine's recommended move. |
| Undo | undo | Take back your last move (and the AI's reply). |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Checkmate! Win your first game. | 1 | — |
| Grandmaster Win 10 games. | 10 | 250 coins |
| Castled Up Castle in a game. | 1 | 100 coins |
| The Mating Net Deliver 5 checkmates. | 5 | 300 coins |
Reskin slots
piece_light piece_dark board — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | ChessDifficulty.Medium | AI search depth: Easy 2 / Medium 3 / Hard 4 ply. |
🎮 Checkers
Jump and capture your way to a clean board.
How to play
- Tap one of your red pieces, then tap a highlighted square to move diagonally.
- Jump over the AI's pieces to capture them — captures are required. Reach the top to crown a king!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Best Move | hint | Highlights a strong move to play. |
| Undo | undo | Take back your last move (and the AI's). |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| First Win Beat the AI once. | 1 | — |
| Draughts Master Win 10 games. | 10 | 150 coins |
| King Me Crown a king. | 1 | 100 coins |
| Triple Jump Capture three or more pieces in one move. | 1 | 250 coins |
Reskin slots
piece_player piece_ai board — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | CheckersDifficulty.Medium | AI search depth: Easy 2 / Medium 4 / Hard 6 ply. |
PlayerStarts | true | If true, you (red) move first. |
🎮 Go
Capture stones and claim territory on a 9×9 board.
How to play
- Tap an intersection to place a black stone. Surround a group on all sides to capture it.
- Claim territory by walling off empty regions. Tap Pass when done — two passes ends the game.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Good Point | hint | Highlights a strong intersection to play. |
| Undo | undo | Take back your last stone. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| First Stone Win your first game. | 1 | — |
| Go Master Win 10 games. | 10 | 200 coins |
| Capturer Capture 100 stones in total. | 100 | 200 coins |
| Big Net Capture five or more stones in a single move. | 1 | 250 coins |
Reskin slots
stone_player stone_ai board — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | GoDifficulty.Medium | AI play strength on the 9×9 board. |
PlayerStarts | true | If true, you (black) move first. |
🎮 Four in a Row
Drop discs and connect four before the AI does.
How to play
- Tap a column to drop your red disc into it.
- Line up four of your discs in a row, column, or diagonal — before the AI does!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Best Drop | hint | Highlights the strongest column to play. |
| Undo | undo | Take back your last drop (and the AI's). |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| First Four Connect four and beat the AI once. | 1 | — |
| Four-Sight Win 10 games. | 10 | 150 coins |
| Unaided Win a game without using Undo. | 1 | 150 coins |
| Quick Four Win using 7 discs or fewer. | 1 | 250 coins |
Reskin slots
disc_player disc_ai board — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | ConnectFourDifficulty.Medium | AI search depth: Easy 2 / Medium 4 / Hard 6 ply. |
PlayerStarts | true | If true, you (red) drop first. |
🎮 Ludo
Roll, race and send rivals home — first home wins.
How to play
- Tap ROLL, then tap a highlighted token to move it. Roll a 6 to leave base (and roll again).
- Land on an AI token (off the safe squares) to send it home. Get all four tokens home to win!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Lucky Six | lucky6 | Guarantee your next roll is a 6. |
| Re-roll | reroll | Discard your current roll and roll again. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| First Home Win your first game. | 1 | — |
| Ludo Master Win 10 games. | 10 | 150 coins |
| Send-Off Send 50 AI tokens back to base in total. | 50 | 200 coins |
| Lucky Streak Roll 30 sixes in total. | 30 | 150 coins |
Reskin slots
token_player token_ai board — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | LudoDifficulty.Medium | AI token-choice quality. |
🎮 Reversi
Flank and flip discs — own the most when the board fills.
How to play
- Place a dark disc so it traps a line of light discs between two of yours.
- Every trapped disc flips to your colour. Own the most discs when the board fills to win!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Best Move | hint | Highlights the strongest square to play. |
| Undo | undo | Take back your last move (and the AI's reply). |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| First Flip Beat the AI once. | 1 | — |
| Othello Master Win 10 games. | 10 | 150 coins |
| Corner Office Win a game holding all four corners. | 1 | 200 coins |
| Landslide Win by 20 discs or more. | 1 | 250 coins |
Reskin slots
disc_player disc_ai board — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | ReversiDifficulty.Medium | AI search depth: Easy 1 / Medium 3 / Hard 5 ply. |
PlayerStarts | true | If true, you (dark) move first. |
🎮 Backgammon
Roll, race and bear off all your checkers first.
How to play
- Tap ROLL, then tap a checker and a highlighted point to move it by a die's value.
- Land on a lone enemy checker to send it to the bar. Bring all 15 home, then bear them off to win!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Lucky Doubles | doubles | Make your next roll a doubles (four moves). |
| Undo | undo | Take back your last checker move. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| First Bear-Off Win your first game. | 1 | — |
| Backgammon Master Win 10 games. | 10 | 200 coins |
| Gammon! Win before the AI bears off any checker. | 1 | 300 coins |
| Sharp Hitter Hit 50 opponent blots in total. | 50 | 150 coins |
Reskin slots
checker_player checker_ai board — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | BackgammonDifficulty.Medium | AI play strength. |
🎮 Nine Men's Morris
Form mills, capture pieces, corner the AI.
How to play
- Tap an empty spot to place a piece. Once all nine are down, slide them along the lines.
- Line up three on a line to form a mill and remove an AI piece. Reduce it to two to win!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Best Move | hint | Highlights a strong place or move. |
| Undo | undo | Take back your last turn (and the AI's). |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| First Win Beat the AI once. | 1 | — |
| Mill Master Win 10 games. | 10 | 150 coins |
| Three in a Mill Form 50 mills in total. | 50 | 150 coins |
| On the Wing Win a game while flying (down to three pieces). | 1 | 250 coins |
Reskin slots
piece_player piece_ai board — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | MorrisDifficulty.Medium | AI search depth. |
PlayerStarts | true | If true, you place first. |
🎮 Mancala
Sow stones, capture, and fill your store to win.
How to play
- Tap one of your (bottom) pits to scatter its stones counter-clockwise.
- Land your last stone in your store (right) for a free turn, or in an empty pit to capture across.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Best Pit | hint | Highlights the strongest pit to sow. |
| Undo | undo | Take back your last sow. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| First Harvest Beat the AI once. | 1 | — |
| Kalah Master Win 10 games. | 10 | 150 coins |
| Big Steal Capture 8 or more stones in a single move. | 1 | 200 coins |
| Bountiful Win by 10 stones or more. | 1 | 200 coins |
Reskin slots
board — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | MancalaDifficulty.Medium | AI search depth: Easy 2 / Medium 5 / Hard 8 ply. |
PlayerStarts | true | If true, you move first. |
🎮 Dots & Boxes
Draw lines, complete boxes, claim the most to win.
How to play
- Tap a gap between two dots to draw a line.
- Complete a box's fourth side to claim it and take another turn. Most boxes wins!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Safe Line | hint | Highlights a free box or a safe line to draw. |
| Undo | undo | Take back your last line. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| First Boxes Beat the AI once. | 1 | — |
| Box Master Win 10 games. | 10 | 150 coins |
| Chain Reaction Claim 5 or more boxes in a single turn. | 1 | 200 coins |
| Clean Sheet Win without conceding a single box. | 1 | 250 coins |
Reskin slots
background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | DotsDifficulty.Medium | AI play strength. |
PlayerStarts | true | If true, you draw the first line. |
💥 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
}
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
| Game | Booster keys |
|---|---|
| Chess | hint undo |
| Checkers | hint undo |
| Go | hint undo |
| Four in a Row | hint undo |
| Ludo | lucky6 reroll |
| Reversi | hint undo |
| Backgammon | doubles undo |
| Nine Men's Morris | hint undo |
| Mancala | hint undo |
| Dots & Boxes | hint 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
| Game | Slots |
|---|---|
| Chess | piece_light piece_dark board |
| Checkers | piece_player piece_ai board |
| Go | stone_player stone_ai board |
| Four in a Row | disc_player disc_ai board |
| Ludo | token_player token_ai board |
| Reversi | disc_player disc_ai board |
| Backgammon | checker_player checker_ai board |
| Nine Men's Morris | piece_player piece_ai board |
| Mancala | board |
| Dots & Boxes | background |
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.
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:
How it is hooked up in this demo
- Vibrations: every game's sound events (taps, wins, errors) fire matching haptics through the kit automatically.
- Rewarded ad: winning a round with a coin reward offers a “Watch Ad” doubler; completing the (mock) ad credits the bonus.
- Interstitial: auto-shows after every 3rd round (skipped after a No-Ads purchase).
- Banner + shop: the cheat rail's Ads & IAP section toggles the banner and opens the simulated IAP shop (Coin Pack, No Ads, Starter Bundle) through the kit's store backend.
Setup & going live
- Everything works out of the box in the editor with mock/dummy backends — no SDKs required, nothing to configure for the demo.
- Open Tools > HLK > Open Toolset (or Tools > HLK > Guided Setup) to configure ad units, IAP products, notifications, rate-us and the rest.
- 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.
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 */ });
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
- Remove: delete the
BoosterDeffrom the game's spec. - Add: append a
BoosterDefand handle its key in the game's booster handler. - Grant:
BoosterManager.Add(gameId, key, count).
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
- Create
Assets/MiniGameTemplates/Runtime/Board/MyGame/. - Add
MyGameGame.csimplementingIMiniGame, decorated with[MiniGame("…", "My Game", Category = MiniGameCategory.Board)]. - Add
MyGameSettings(optional) with a staticDefaultgetter. - Add the spec files —
MyGameBoosterSpec,MyGameAchievementSpec,MyGameReskinSpec,MyGameTutorialSpec— all auto-discovered. - 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.