Mini Game Templates · Puzzles Pack

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

Unity 6000.0.62f1+10 games36 boosters51 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.

Drop & MergeDrop numbered blocks. Match to merge — chain combos to bigger numbers.
Collect 'Em AllDrag through same-colour dots — longer chains score huge.
Just SlideSlide around and paint every cell — without crossing your own trail.
Color TrisSlide and rotate colour-coded tetrominoes — clear rows before the stack hits the top.
Tile JourneyTap tiles into the tray — match 3 of a kind to clear.
Block PuzzleDrag polyominoes onto a 10x10 grid. Complete rows or columns to clear.
Tile AwayPeel back stacks — match 3 in the tray to clear.
Snake OutFree every snake by sliding it head-first off the maze.
Block ChampBlock puzzle with lightning bombs and ice traps. Combo for big scores.
Wood Blocks JamDrag wooden colour blocks to their matching-colour exits on the board edge.
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-Puzzles.unitypackage. If Unity offers to import TMP Essentials, accept — the demo UI uses TextMeshPro.
  2. Open Assets/MiniGameTemplates/Demo/MiniGameTemplates_Puzzles.unity. The full demo is already baked into the scene.
  3. Press Play — the dashboard lists every Puzzles 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 DropMergeGame();
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. "puzzles_drop_merge"
    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/Puzzles/<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()

🎮 Drop & Merge

Drop numbered blocks. Match to merge — chain combos to bigger numbers.

How to play

  1. A numbered block sits at the top — slide it left/right and click a column to drop.
  2. Land the block next to others with the same number to merge them into the next power of 2.
  3. Three or more in a chain produce an even bigger merge — combo for the highest scores. Don't let blocks reach the top row.

Boosters

BoosterKeyEffect
HammerhammerSmash any single block on the board.
RerollrerollReplace the falling block with a fresh random one.
BombbombDrop a bomb instead — wipes a 3x3 area on landing.
UndoundoTake back your last drop (and any cascade it caused).

Achievements

AchievementGoalReward
First Merge
Trigger your first merge.
1
Centurion
Create a 128 block.
12850 coins
Half a K
Create a 512 block.
512150 coins
2048!
Reach the 2048 block.
2048400 coins
Cascade Hero
Land a 5-deep cascade in a single drop.
5200 coins
High Scorer
Reach 10,000 points in a single round.
10000200 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
Cols5
Rows8
MinSpawnExp1
StartMaxSpawnExp5
DropSpeed1800f

↑ Back to top

🎮 Collect 'Em All

Drag through same-colour dots — longer chains score huge.

How to play

  1. Press a dot and drag through neighbouring dots of the SAME colour to chain them — release to clear.
  2. Longer chains score exponentially — a 6-chain pays 6×6×10 = 360. Hunt for long routes.
  3. Watch the move counter — chains of 5+ refund a move, turning long chains into engine fuel.

Boosters

BoosterKeyEffect
ShuffleshuffleRearrange the dots already on the board (no new spawns).
Color Bombcolor_bombPick a colour — every dot of that colour pops at once.
+5 Movesplus5_movesAdd 5 to your move counter.
UndoundoRewind your last move.

Achievements

AchievementGoalReward
First Collection
Clear your first round.
1
Octopus
Make a single chain of 8 or more dots.
8100 coins
High Roller
Score 5,000 in a single round.
5000150 coins
Veteran Collector
Win 10 rounds.
10200 coins
Bomb Squad
Use the color bomb 5 times.
5100 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
Cols7
Rows9
Colors5
MoveLimitBase30
ScoreTargetBase1500
BonusMoveChainLength5
PopDuration0.22f
FallDuration0.32f

↑ Back to top

🎮 Just Slide

Slide around and paint every cell — without crossing your own trail.

How to play

  1. Use the arrow keys (or WASD) to slide your token one cell at a time.
  2. Every cell you LEAVE stays painted — you cannot step back onto it.
  3. Paint every cell without getting stuck. Press R to restart if you box yourself in.

Boosters

BoosterKeyEffect
UndoundoRewind one step — un-paints the cell you just left.
HinthintHighlight one adjacent cell that still leads to a solution.
ResetresetRe-start the current level from scratch.
Skipskip_levelSkip to the next level.

Achievements

AchievementGoalReward
First Trail
Paint every cell on your first level.
1
Pathfinder
Complete 5 levels.
575 coins
Veteran Painter
Complete 10 levels.
10150 coins
Marathon
Complete 20 levels.
20250 coins
Pure Path
Complete a level without using Undo.
1200 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
Cols8
Rows8
BlockedCellsBase2
BlockedCellsMax10
MoveSeconds0.10f

↑ Back to top

🎮 Color Tris

Slide and rotate colour-coded tetrominoes — clear rows before the stack hits the top.

How to play

  1. Use ← → (or A/D) to slide the falling piece, and ↑ / W to rotate it.
  2. Hold Down/S to soft-drop, or hit Space to slam the piece all the way down.
  3. Fill horizontal rows to clear them. The more rows in one drop, the bigger the score — gravity speeds up as you progress.

Boosters

BoosterKeyEffect
Slow Fallslow_fallHalve gravity speed for the next 5 seconds.
Line Clearline_clearSweep the bottom row away immediately.
Holdhold_pieceStash the current piece — swap with the stored one (first use simply stores).
Color Bombcolor_bombWipe every block of the board's most-common colour.

Achievements

AchievementGoalReward
First Line
Clear your first row.
1
Half a Hundred
Clear 50 rows across your career.
50100 coins
Tetris!
Clear four rows in one drop.
1200 coins
High Scorer
Reach 5,000 points in a single round.
5000150 coins
Stacker
Play 10 rounds.
1050 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
Cols10
Rows18
StartFallSeconds1.0f
MinFallSeconds0.18f
SpeedupFactor0.92f
LockPauseSeconds0.18f

↑ Back to top

🎮 Tile Journey

Tap tiles into the tray — match 3 of a kind to clear.

How to play

  1. Click a tile to send it to the tray at the bottom.
  2. When 3 of the same type sit in the tray, they vanish and score points.
  3. Don't let the tray fill up with 7 different types — that's game over.

Boosters

BoosterKeyEffect
UndoundoSend the last tile back to the board.
MagnetmagnetReturn any tile from the tray to the board.
ShuffleshuffleRe-scatter the remaining board tiles.
Extra Slotslot_plusAdd a temporary 8th tray slot for this round.

Achievements

AchievementGoalReward
Tray Tamer
Clear the board for the first time.
150 coins
Triple Trouble
Clear the board 5 times.
5150 coins
Clean Hands
Win a round without using Undo.
1120 coins
Speedrunner
Clear the board in under 30 seconds.
1200 coins
Triple Triple
Land 3 consecutive 3-matches with no off-type tile in tray.
3250 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
TileTypes8
TilesPerType3
TraySize7
BoardCols5
BoardRows5
FlyDuration0.22f

↑ Back to top

🎮 Block Puzzle

Drag polyominoes onto a 10x10 grid. Complete rows or columns to clear.

How to play

  1. Pick one of the three shapes in the tray, then click an empty board cell to place it.
  2. Complete an entire row or column to clear it from the board.
  3. Clear multiple lines with a single placement for a big bonus — and don't get boxed in!

Boosters

BoosterKeyEffect
Refreshrefresh_trayReroll the three tray shapes.
HammerhammerSmash any single block on the board.
UndoundoTake back your last placement (and any clears it triggered).
Line Burstline_burstClick any cell to clear that whole row.

Achievements

AchievementGoalReward
First Clear
Complete a row or column for the first time.
1
Stacker
Reach 500 points in a single round.
50050 coins
Master Builder
Reach 5,000 points in a single round.
5000250 coins
Centurion Lines
Clear 100 lines (cumulative across rounds).
100150 coins
Quadbreaker
Clear 4 lines with a single placement.
1200 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
Cols10
Rows10
TraySize3

↑ Back to top

🎮 Tile Away

Peel back stacks — match 3 in the tray to clear.

How to play

  1. Each cell holds a stack of tiles — click the TOP tile to send it to the tray.
  2. Removing the top reveals the next tile beneath.
  3. Match 3 of the same type in the tray to clear them. Don't let the tray fill with no match.

Achievements

AchievementGoalReward
Top of the Pile
Win your first Tile Away round.
150 coins
Stack Slayer
Win 5 rounds.
5150 coins
Eyes Forward
Win a round without using Undo.
1150 coins
No Peeking
Win a round without using the Peek booster.
1200 coins
Big Brain
Reach 3,000 best-score in a single round.
3000300 coins

Reskin slots

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

↑ Back to top

🎮 Snake Out

Free every snake by sliding it head-first off the maze.

How to play

  1. Tap any snake to slide it forward — it keeps going until it hits another snake or escapes the maze.
  2. Each snake moves in the direction its head points. Curved snakes straighten as their body trails behind.
  3. Free every snake by getting all its segments off the maze. Plan the order — snakes block each other.

Boosters

BoosterKeyEffect
UndoundoRewind your last snake move.
HinthintHighlights which snake to slide next on the shortest known solution.
ResetresetRestore the level to its starting position.
Skipskip_levelSkip the level (no clear bonus).

Achievements

AchievementGoalReward
First Escape
Clear your first level.
1
Slithery Five
Clear 5 levels.
550 coins
Snake Charmer
Clear 20 levels.
20200 coins
Clean Run
Clear a level without using undo.
175 coins
Solo Solver
Clear a level without using hint.
175 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
VisualSnakeOutVisualStyle.ModernVisual preset. Player can flip this at runtime via the in-game toggle.
GridColsBase5
GridRowsBase5
SnakesBase2
MaxGenerationAttempts160
SlideDuration0.08f

↑ Back to top

🎮 Block Champ

Block puzzle with lightning bombs and ice traps. Combo for big scores.

How to play

  1. Pick a shape from the tray, then click a cell to drop it. Complete rows or columns to clear them.
  2. Lightning blocks ⚡ clear an extra row above when their row clears. Stack them on the top rows for chained blasts.
  3. Ice blocks ❄ leave behind a stubborn residual when their row clears — you'll need a second clear to get rid of them.

Boosters

BoosterKeyEffect
Refreshrefresh_trayReroll the three tray shapes.
HammerhammerSmash any single block on the board.
Lightninglightning_strikeClick any cell to blast that whole row.
Ice Meltice_meltMelt every ice cell currently on the board.

Achievements

AchievementGoalReward
First Clear
Complete a row or column for the first time.
1
Champ Apprentice
Reach 500 points in a single round.
50050 coins
Block Champion
Reach 5,000 points in a single round.
5000250 coins
Storm Caller
Trigger 10 lightning blasts (cumulative across rounds).
10150 coins
Combo!
Clear 2 or more lines with a single placement.
1100 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
Cols10
Rows10
TraySize3
LightningChance0.06f
IceChance0.04f
MulticolorModetrueWhen true, each cell of a placed shape uses an independent random colour from the 6-colour palette (rainbow mode).

↑ Back to top

🎮 Wood Blocks Jam

Drag wooden colour blocks to their matching-colour exits on the board edge.

How to play

  1. Drag a coloured block around the board. It glows while you hold it.
  2. Drag it onto its MATCHING-COLOUR exit on the board edge — it slides out and disappears.
  3. Clear every block to win. Blocks can't overlap each other — plan the order.

Boosters

BoosterKeyEffect
UndoundoRewind the last block placement.
HinthintHighlights a block and the exit it can reach.
ResetresetRestore the level to its starting position.
Skipskip_levelSkip the level (no clear bonus).

Achievements

AchievementGoalReward
First Jam
Clear your first board.
1
Carpenter
Clear 5 boards.
550 coins
Master Joiner
Clear 20 boards.
20200 coins
Steady Hands
Clear a board without using undo.
175 coins
Eye for Wood
Clear a board without using hint.
175 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
ColsBase7
RowsBase7
BlocksBase5
ObstaclesBase1
SnapDuration0.14f
ExitDuration0.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
Drop & Mergehammer reroll bomb undo
Collect 'Em Allshuffle color_bomb plus5_moves undo
Just Slideundo hint reset skip_level
Color Trisslow_fall line_clear hold_piece color_bomb
Tile Journeyundo magnet shuffle slot_plus
Block Puzzlerefresh_tray hammer undo line_burst
Tile Away
Snake Outundo hint reset skip_level
Block Champrefresh_tray hammer lightning_strike ice_melt
Wood Blocks Jamundo hint reset skip_level

🏆 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
Drop & Mergeblock background
Collect 'Em Alldot chain_line background
Just Slideplayer painted background
Color Trispiece background
Tile Journeytile tray_bg background
Block Puzzleblock tray_bg background
Tile Awaytile tray_bg background
Snake Outsnake_head snake_body background
Block Champblock lightning_block ice_block background
Wood Blocks Jamblock board exit 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_Puzzles.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 DropMergeGame();
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, 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/Puzzles/MyGame/.
  2. Add MyGameGame.cs implementing IMiniGame, decorated with [MiniGame("…", "My Game", Category = MiniGameCategory.Puzzles)].
  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. puzzles_drop_merge), 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. ⭐