Mini Game Templates · Puzzles 3.0 Pack

Logic, tile, number, and spatial puzzle templates with editable difficulty and reusable board/UI systems.

Unity 6000.0.62f1+10 games20 boosters32 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.

Tower of HanoiMove the disk stack to the far peg.
Peg SolitaireJump pegs to clear the board down to one.
UnblockSlide the blocks to free the red one.
HitoriShade cells so no number repeats in a row or column.
BinairoFill the grid with 0s and 1s by the rules.
FutoshikiLatin square with greater/less-than clues.
SkyscrapersLatin square with visible-building edge clues.
KakuroCross-sums: fill runs with 1-9 to match the clues.
Tents and TreesPitch one tent beside each tree.
Magic SquareMake every row, column and diagonal share one sum.
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-Puzzles3.unitypackage. If Unity offers to import TMP Essentials, accept — the demo UI uses TextMeshPro.
  2. Open Assets/MiniGameTemplates/Demo/MiniGameTemplates_Puzzles3.unity. The full demo is already baked into the scene.
  3. Press Play — the dashboard lists every Puzzles 3.0 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 HanoiGame();
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. "puzzles3_hanoi"
    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/Puzzles3/<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()

🎮 Tower of Hanoi

Move the disk stack to the far peg.

How to play

  1. Tap a peg to lift its top disk, then tap another peg to drop it.
  2. A disk can only rest on a larger one. Move the whole stack to the right peg in as few moves as possible.

Boosters

BoosterKeyEffect
Next MovehintFlash the two pegs of the optimal next move.
CancelundoPut a lifted disk back down.

Achievements

AchievementGoalReward
Stacked
Solve a tower.
1
Flawless
Solve in the optimal number of moves.
1200 coins
Big Tower
Solve a tower of 7 or more disks.
7250 coins
Monk
Solve 20 towers in total.
20200 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DiskCount4

↑ Back to top

🎮 Peg Solitaire

Jump pegs to clear the board down to one.

How to play

  1. Tap a peg, then tap a highlighted green hole to jump over an adjacent peg.
  2. The jumped peg is removed. Keep jumping to leave just one peg on the board.

Boosters

BoosterKeyEffect
Show JumphintHighlight a peg and a hole you can jump into.
UndoundoTake back your last jump.

Achievements

AchievementGoalReward
Last Peg Standing
Finish with a single peg.
1
Bullseye
Finish with the last peg in the centre.
1300 coins
So Close
Clear at least 30 pegs in one game.
30150 coins
Board Sweeper
Win 15 games in total.
15200 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
ShowLandingHintstrueReserved for future board variants. The English cross is always used.

↑ Back to top

🎮 Unblock

Slide the blocks to free the red one.

How to play

  1. Tap a block to select it, then tap a cell along its axis to slide it.
  2. Clear the way and slide the red block off the right edge to win.

Boosters

BoosterKeyEffect
Highlight GoalhintFlash the red block and remind you of the exit.
ResetresetRestart the current puzzle from the beginning.

Achievements

AchievementGoalReward
Breakout
Free the red block once.
1
Traffic Genius
Solve a puzzle in the target move count.
1250 coins
Jam Buster
Solve 20 puzzles in total.
20200 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
ShuffleOnNewRoundtrueReserved for future tuning. Puzzles are chosen from a fixed solvable set.

↑ Back to top

🎮 Hitori

Shade cells so no number repeats in a row or column.

How to play

  1. Tap a cell to shade it. No number may repeat among the unshaded cells in any row or column.
  2. Two shaded cells may never touch side by side, and all unshaded cells must stay connected.

Boosters

BoosterKeyEffect
Reveal CellhintSet one cell to its correct shaded/clear state.
Clear ShadingclearRemove all shading and start over.

Achievements

AchievementGoalReward
Shaded In
Solve a Hitori grid.
1
Wide View
Solve a 7×7 grid.
7250 coins
Eraser
Solve 15 grids in total.
15200 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
GridSize5

↑ Back to top

🎮 Binairo

Fill the grid with 0s and 1s by the rules.

How to play

  1. Tap a cell to cycle between blank, 0 and 1. Each row and column needs as many 0s as 1s.
  2. Never put three of the same digit in a row, and keep every row and column unique.

Boosters

BoosterKeyEffect
Reveal CellhintFill one empty cell with its correct digit.
ClearclearClear every cell you have filled in.

Achievements

AchievementGoalReward
Binary Mind
Solve a Binairo grid.
1
Eight Bit
Solve an 8×8 grid.
8250 coins
Logic Loop
Solve 15 grids in total.
15200 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
GridSize6
GivenFraction0.45f

↑ Back to top

🎮 Futoshiki

Latin square with greater/less-than clues.

How to play

  1. Tap a cell, then a digit on the keypad. Each row and column uses every number exactly once.
  2. The < and > signs between cells must hold. A ▲ means the upper cell is greater; ▼ the lower.

Boosters

BoosterKeyEffect
Reveal CellhintFill the selected (or one) cell with its correct number.
ClearclearClear every number you have entered.

Achievements

AchievementGoalReward
Inequalities Tamed
Solve a Futoshiki grid.
1
Six by Six
Solve a 6×6 grid.
6250 coins
Comparator
Solve 15 grids in total.
15200 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
GridSize5
ClueFraction0.5f
GivenFraction0.25f

↑ Back to top

🎮 Skyscrapers

Latin square with visible-building edge clues.

How to play

  1. Fill heights 1..n so each row and column uses every height once. Tap a cell, then a keypad digit.
  2. An edge number is how many buildings you can see from that side — taller ones hide shorter ones behind them.

Boosters

BoosterKeyEffect
Reveal CellhintPlace the correct height in the selected (or one) cell.
ClearclearClear the whole grid.

Achievements

AchievementGoalReward
Skyline
Solve a Skyscrapers grid.
1
Metropolis
Solve a 6×6 grid.
6250 coins
City Planner
Solve 15 grids in total.
15200 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
GridSize4

↑ Back to top

🎮 Kakuro

Cross-sums: fill runs with 1-9 to match the clues.

How to play

  1. Tap a white cell, then a keypad digit. A clue's top-right number is the across sum; bottom-left is the down sum.
  2. Each run must total its clue using digits 1-9 with no repeats inside the run.

Boosters

BoosterKeyEffect
Reveal CellhintFill the selected (or one) white cell correctly.
ClearclearEmpty every white cell you have filled.

Achievements

AchievementGoalReward
Sum It Up
Solve a Kakuro board.
1
Cross Summer
Solve 10 boards in total.
10200 coins
Number Cruncher
Start 25 Kakuro rounds.
25150 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
RandomBoardOnNewRoundtrueReserved for future tuning. Boards are chosen from a fixed solvable set.

↑ Back to top

🎮 Tents and Trees

Pitch one tent beside each tree.

How to play

  1. Tap grass to place a tent. Every tree needs exactly one tent directly beside it (up, down, left or right).
  2. No two tents may touch, even diagonally. The edge numbers count the tents in each row and column.

Boosters

BoosterKeyEffect
Reveal CellhintSet one cell to its correct tent / grass state.
Clear TentsclearRemove every tent you have placed.

Achievements

AchievementGoalReward
Happy Camper
Solve a Tents and Trees grid.
1
Base Camp
Solve an 8×8 grid.
8250 coins
Forest Ranger
Solve 15 grids in total.
15200 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
GridSize6

↑ Back to top

🎮 Magic Square

Make every row, column and diagonal share one sum.

How to play

  1. Tap an empty cell, then a number on the keypad. Use each of 1..n² exactly once.
  2. Every row, every column and both diagonals must add up to the same magic sum shown in the header.

Boosters

BoosterKeyEffect
Reveal CellhintPlace the correct number in the selected (or one) cell.
ClearclearClear every number you have placed.

Achievements

AchievementGoalReward
Abracadabra
Complete a magic square.
1
Order Four
Complete a 4×4 magic square.
4250 coins
Sorcerer
Complete 15 squares in total.
15200 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
GridSize3
GivenFraction0.45f

↑ 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
Tower of Hanoihint undo
Peg Solitairehint undo
Unblockhint reset
Hitorihint clear
Binairohint clear
Futoshikihint clear
Skyscrapershint clear
Kakurohint clear
Tents and Treeshint clear
Magic Squarehint clear

🏆 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
Tower of Hanoipost background
Peg Solitairepeg background
Unblockblock background
Hitoricell background
Binairocell background
Futoshikicell background
Skyscraperscell background
Kakurocell background
Tents and Treescell background
Magic Squarecell background
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_Puzzles3.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 HanoiGame();
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 > Puzzles 3.0, 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/Puzzles3/MyGame/.
  2. Add MyGameGame.cs implementing IMiniGame, decorated with [MiniGame("…", "My Game", Category = MiniGameCategory.Puzzles3)].
  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. puzzles3_hanoi), 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. ⭐