Mini Game Templates · Board 2.0 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-Board2.unitypackage. If Unity offers to import TMP Essentials, accept — the demo UI uses TextMeshPro. - Open
Assets/MiniGameTemplates/Demo/MiniGameTemplates_Board2.unity. The full demo is already baked into the scene. - Press Play — the dashboard lists every Board 2.0 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 BattleshipGame();
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. "board2_battleship"
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/Board2/<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()
🎮 Battleship
Hunt and sink the enemy fleet.
How to play
- Tap a cell on the enemy grid to fire. Red is a hit, blue is a miss.
- Sink every enemy ship before they sink yours. Your fleet is shown below.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Radar | radar | Reveal one un-hit cell of an enemy ship. |
| Salvo | salvo | Fire three shots on your next turn. |
| Shield | shield | Negate the enemy's next hit on your fleet. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| First Blood Win your first battle. | 1 | — |
| Admiral Win 10 battles. | 10 | 300 coins |
| Sharpshooter Land 200 hits in total. | 200 | 200 coins |
| Untouchable Win a battle without losing a single ship. | 1 | 250 coins |
Reskin slots
ship hit background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | BattleshipDifficulty.Medium | How smart the enemy AI hunts your fleet. |
🎮 Snakes & Ladders
Race to 100 — mind the snakes!
How to play
- Tap ROLL to roll the die — your blue token hops that many squares up the board.
- Green ladders lift you up; red snakes drag you down. First to reach 100 beats the red AI!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Preview | preview | Arm a peek — your next roll shows where you'd land. |
| Loaded Die | loaded | Your next roll is guaranteed to be a 6. |
| Re-roll | reroll | Discard the roll you just made and roll again. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| First to 100 Win your first game. | 1 | — |
| Board Champion Win 10 games. | 10 | 250 coins |
| Ladder Lover Climb 25 ladders in total. | 25 | 150 coins |
| Snakebit Survivor Win a game after hitting 3 or more snakes. | 1 | 200 coins |
Reskin slots
token background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
AiStarts | false | When true, the AI takes the first turn of each game. |
🎮 Five in a Row
Get five stones in a row before the AI.
How to play
- Tap an empty intersection to place a black stone. The AI answers with white.
- Line up five stones in a row — across, down, or diagonally — before the AI does to win.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Best Spot | hint | Highlight the strongest point for you to play. |
| Undo | undo | Take back your last stone and the AI's reply. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Five Up Win your first game. | 1 | — |
| Row Master Win 10 games. | 10 | 300 coins |
| No Take-Backs Win a game without using Undo. | 1 | 200 coins |
| Swift Five Win in 12 of your stones or fewer. | 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 | GomokuDifficulty.Medium | How deeply the AI weighs threats when choosing a move. |
PlayerStarts | true | If true, you (black) move first; otherwise the AI opens. |
🎮 Nim
Take the last match to win — outwit the AI.
How to play
- On your turn, tap a matchstick to take it and every stick after it in that row, then press TAKE. You must take from a single row.
- You and the AI alternate turns. Whoever takes the very LAST match wins — plan ahead!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Best Move | hint | Highlight the winning move — the heap and count that zero the nim-sum. |
| Undo | undo | Take back your last move and the AI's reply. |
| Swap Turn | swap_start | Hand the current turn to the other side — a one-time tempo swing. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| First Blood Win your first game of Nim. | 1 | — |
| Tactician Win 10 games of Nim. | 10 | 150 coins |
| Against the Odds Beat the AI on Hard, where it plays the optimal strategy. | 1 | 250 coins |
| Comeback King Win a game that started from a losing nim position. | 1 | 200 coins |
Reskin slots
stick background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | NimDifficulty.Medium | Higher difficulty means the AI plays the optimal nim-sum strategy more reliably and starts with chunkier heaps. |
AiFirst | false | If true the AI takes the first move each round (a tougher start for you). |
🎮 Hex
Connect your two sides before the AI connects theirs.
How to play
- You play blue. Tap any empty cell to place a stone, and build a chain linking the LEFT and RIGHT edges.
- The red AI is racing to connect TOP to BOTTOM. Connect your sides first — Hex can never end in a draw.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Best Move | hint | Glow the cell that best shortens YOUR connection. |
| Take Back | undo | Undo your last stone and the AI's reply. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| First Bridge Win your first game of Hex. | 1 | — |
| Master Connector Win 10 games of Hex. | 10 | 300 coins |
| No Regrets Win a game without using Take Back. | 1 | 200 coins |
| Tight Line Win using no more stones than the board is wide. | 1 | 250 coins |
Reskin slots
stone_player stone_ai background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | HexDifficulty.Medium | Board size and how cleverly the AI plays. Easy 7×7, Medium 9×9, Hard 11×11. |
PlayerStarts | true | If true, you place the first stone each round. |
🎮 Chinese Checkers
Hop your pegs home before the AI.
How to play
- Tap one of your blue pegs, then tap a glowing cell. Step to a neighbour, or JUMP over any peg to the empty cell beyond — jumps chain!
- Race the red AI: get ALL your pegs into the opposite corner home before it fills yours, and you win.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Best Hop | hint | Glow the peg and target that best advances YOU. |
| Take Back | undo | Undo your last move and the AI's reply. |
| Free Leap | leap | Once, step a peg to ANY empty cell on the board. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Home Run Win your first game of Chinese Checkers. | 1 | — |
| Peg Racer Win 10 games of Chinese Checkers. | 10 | 300 coins |
| No Regrets Win a game without using Take Back. | 1 | 200 coins |
| Quick Hopper Win a game in 18 turns or fewer. | 1 | 250 coins |
Reskin slots
peg_player peg_ai board — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | ChineseCheckersDifficulty.Medium | How cleverly the AI plays. Easy adds noise, Hard is fully greedy. |
PlayerStarts | true | If true, you take the first turn each round. |
🎮 Pente
Five in a row — or capture five pairs.
How to play
- Place black stones on empty intersections. Win by lining up five in a row — across, down, or diagonally.
- Flank exactly two of the AI's stones — YOU, AI, AI, YOU in a line — to capture that pair. Capture five pairs to also win.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Best Spot | hint | Highlight the strongest point for you to play. |
| Undo | undo | Take back your last stone and the AI's reply, restoring any captured stones. |
| Shield | shield | Protect your next vulnerable pair from being captured once. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| First Blood Win your first game. | 1 | — |
| Pente Master Win 10 games. | 10 | 300 coins |
| Pair Collector Capture 50 pairs in total. | 50 | 250 coins |
| Five Pairs Win a game by capturing five pairs. | 1 | 300 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 | PenteDifficulty.Medium | How deeply the AI weighs threats and captures when choosing a move. |
PlayerStarts | true | If true, you (black) move first; otherwise the AI opens. |
🎮 Halma
Move your camp into the opposite corner.
How to play
- Tap one of your pegs, then a glowing cell: step to a neighbour or jump over a peg to the empty cell beyond. Jumps chain.
- Race all your pegs into the AI's far corner. Fill every target cell before the AI fills yours to win.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Best Move | hint | Highlight the move that advances you the most. |
| Undo | undo | Take back your last move and the AI's reply. |
| Sprint | sprint | Take two single steps this turn instead of one. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Camp Mover Win your first game. | 1 | — |
| Strategist Win 10 games. | 10 | 300 coins |
| No Take-Backs Win a game without using Undo. | 1 | 200 coins |
| Forced March Win 25 games in total. | 25 | 400 coins |
Reskin slots
peg_player peg_ai board — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | HalmaDifficulty.Medium | How sharply the AI minimises its distance to its goal corner. |
PlayerStarts | true | If true, you move first; otherwise the AI opens. |
🎮 Fox & Hounds
Trap the fox — or slip past as the fox.
How to play
- Tap a hound, then a glowing square. Hounds move one square diagonally FORWARD only; the fox moves diagonally in any direction.
- Box the fox in so it has no move to win. If the fox slips past to your back row, the fox wins.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Best Move | hint | Highlight the strongest move for your side. |
| Undo | undo | Take back your last move and the AI's reply. |
| Skip Turn | skip | Pass your move and let the AI play. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| On The Hunt Win your first game. | 1 | — |
| Houndmaster Win 10 games. | 10 | 300 coins |
| Sly Escape Win a game playing as the fox. | 1 | 250 coins |
| Clean Hunt Win a game without using Undo. | 1 | 200 coins |
Reskin slots
fox hound board — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | FoxHoundsDifficulty.Medium | How deeply the AI searches when choosing its move. |
PlayHounds | true | If true you control the four hounds; if false you play the lone fox. The AI takes the other side. |
🎮 Quoridor
Race across — or wall off the AI.
How to play
- Each turn: MOVE your pawn one step toward the top row, or switch to WALL and tap a line to block the AI. First pawn to the far row wins.
- Walls slow the AI down — but you can never fully seal off a pawn from its goal, so some line taps will be rejected.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Best Move | hint | Highlight your fastest step toward the goal. |
| Undo | undo | Take back your last move and the AI's reply. |
| Extra Wall | extra_wall | Add one more wall to your supply. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| First Crossing Win your first game. | 1 | — |
| Pathfinder Win 10 games. | 10 | 200 coins |
| Wall Master Place 50 walls in total. | 50 | 150 coins |
| Pure Sprint Win a game without placing a single wall. | 1 | 150 coins |
Reskin slots
pawn_player pawn_ai wall background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | QuoridorDifficulty.Medium | How aggressively the AI uses walls and how well it picks them. |
PlayerStarts | true | If true the player takes the first turn. |
💥 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 |
|---|---|
| Battleship | radar salvo shield |
| Snakes & Ladders | preview loaded reroll |
| Five in a Row | hint undo |
| Nim | hint undo swap_start |
| Hex | hint undo |
| Chinese Checkers | hint undo leap |
| Pente | hint undo shield |
| Halma | hint undo sprint |
| Fox & Hounds | hint undo skip |
| Quoridor | hint undo extra_wall |
🏆 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 |
|---|---|
| Battleship | ship hit background |
| Snakes & Ladders | token background |
| Five in a Row | stone_player stone_ai board |
| Nim | stick background |
| Hex | stone_player stone_ai background |
| Chinese Checkers | peg_player peg_ai board |
| Pente | stone_player stone_ai board |
| Halma | peg_player peg_ai board |
| Fox & Hounds | fox hound board |
| Quoridor | pawn_player pawn_ai wall 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_Board2.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 BattleshipGame();
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 2.0, 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/Board2/MyGame/. - Add
MyGameGame.csimplementingIMiniGame, decorated with[MiniGame("…", "My Game", Category = MiniGameCategory.Board2)]. - 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. board2_battleship), 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.