Mini Game Templates · Casual 4.0 Pack

Pick-up-and-play casual templates with fast loops, configurable settings, level curves, and reusable UI patterns.

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

Rhythm TapTap exactly as the marker crosses the beat line.
Slot MatchStop three spinning reels to line up matching symbols.
Balloon PumpInflate for a bigger pot — bank before it bursts.
Pattern LockMemorise then redraw the connect-the-dots pattern.
Sort ItBin each item left or right by the current rule, against the clock.
Count UpCount the briefly-flashed shapes and pick the right number.
BullseyeTime your throw to hit the drifting target's centre.
Dice PokerHold and reroll five dice for the best poker hand.
Scratch CardScratch cells and match three symbols for a prize.
Treasure HuntFollow hot/cold taps to the hidden treasure in the fewest taps.
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-Casual4.unitypackage. If Unity offers to import TMP Essentials, accept — the demo UI uses TextMeshPro.
  2. Open Assets/MiniGameTemplates/Demo/MiniGameTemplates_Casual4.unity. The full demo is already baked into the scene.
  3. Press Play — the dashboard lists every Casual 4.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 RhythmTapGame();
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. "casual4_rhythm_tap"
    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/Casual4/<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()

🎮 Rhythm Tap

Tap exactly as the marker crosses the beat line.

How to play

  1. A marker sweeps back and forth. The yellow beat line is your target.
  2. Tap anywhere exactly as the marker crosses the line. Perfect hits score most; the tempo rises as you go.

Boosters

BoosterKeyEffect
Slow BeathintBriefly slow the tempo so the next beats are easy to read.
Combo BoostcomboAdd a small cushion to your combo and score.

Achievements

AchievementGoalReward
On Beat
Reach a score of 150 in one run.
150
In the Groove
Build a combo of 20.
20150 coins
Metronome
Land 20 perfect hits in total.
20200 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyRhythmTapDifficulty.MediumStarting tempo of the sweeping marker.

↑ Back to top

🎮 Slot Match

Stop three spinning reels to line up matching symbols.

How to play

  1. Three reels spin. Tap STOP to lock each one in turn — matching symbols pay out.
  2. Keep spinning to grow the round's pot, then BANK it into your score before your luck runs out.

Boosters

BoosterKeyEffect
Lucky NudgehintNudge the spinning reels toward a match.
Re-spinrespinRe-roll all reels for a fresh spin.

Achievements

AchievementGoalReward
High Roller
Grow a single round's pot to 100 before banking.
100
Jackpot Chaser
Reach a banked score of 300.
300200 coins
Three of a Kind
Land 10 three-of-a-kind spins in total.
10200 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultySlotMatchDifficulty.MediumHow many symbols are on the reels — more symbols, rarer matches.

↑ Back to top

🎮 Balloon Pump

Inflate for a bigger pot — bank before it bursts.

How to play

  1. Tap PUMP to inflate. Each pump grows the pot — but also the chance it bursts.
  2. Tap BANK to lock the pot into your score before it pops. If it bursts, that pot is lost!

Boosters

BoosterKeyEffect
Safe PumphintPump once with zero burst risk.
PatchpatchLower the current burst risk.

Achievements

AchievementGoalReward
Big Air
Grow a single balloon's pot to 80.
80
Daredevil
Reach a banked score of 250.
250200 coins
Cool Head
Bank a balloon 50 times in total.
50200 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyBalloonPumpDifficulty.MediumBase burst risk per pump.

↑ Back to top

🎮 Pattern Lock

Memorise then redraw the connect-the-dots pattern.

How to play

  1. Watch the dots light up one by one — that's the pattern.
  2. Tap the dots back in the same order. Each round adds one more dot.

Boosters

BoosterKeyEffect
Next DothintFlash the next dot you need to tap.
ReplayreplayPlay the current pattern again.

Achievements

AchievementGoalReward
Locked In
Redraw a pattern of 6 dots.
6
Master Key
Redraw a pattern of 8 dots.
8200 coins
Persistent
Clear 20 patterns in total.
20150 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyPatternLockDifficulty.MediumStarting pattern length and flash speed.

↑ Back to top

🎮 Sort It

Bin each item left or right by the current rule, against the clock.

How to play

  1. An item appears in the centre. The banner tells you whether to sort by colour or shape.
  2. Tap the matching LEFT or RIGHT bin. Correct sorts add time; wrong ones cost time. Watch — the rule can flip!

Boosters

BoosterKeyEffect
Show BinhintFlash the correct bin for the current item.
Add TimetimeAdd 5 seconds to the clock.

Achievements

AchievementGoalReward
Sorter
Reach a score of 60 in one run.
60
On a Roll
Build a correct-sort combo of 25.
25150 coins
Conveyor
Correctly sort 80 items in one run.
80200 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultySortItDifficulty.MediumStarting time on the clock.

↑ Back to top

🎮 Count Up

Count the briefly-flashed shapes and pick the right number.

How to play

  1. A scatter of shapes flashes for a moment, then hides. Count them fast!
  2. Tap how many you saw before the timer empties. Three misses ends the run.

Boosters

BoosterKeyEffect
Fifty-FiftyhintRemove two wrong answers.
Add TimetimeAdd 3 seconds to the answer timer.

Achievements

AchievementGoalReward
Quick Count
Reach a score of 80 in one run.
80
Eagle Eye
Build a streak of 12 correct counts.
12150 coins
Tally Master
Count correctly 100 times in total.
100200 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyCountUpDifficulty.MediumFlash time, max shapes, and answer timer.

↑ Back to top

🎮 Bullseye

Time your throw to hit the drifting target's centre.

How to play

  1. A ringed target drifts around the field. Tap anywhere to throw a dart at it.
  2. The closer to the centre, the more points. Each hit shrinks and speeds up the target; three misses ends the run.

Boosters

BoosterKeyEffect
Steady AimhintSlow the target so your next throw is easier.
Extra DartlifeGain an extra life.

Achievements

AchievementGoalReward
Sharpshooter
Reach a score of 300 in one run.
300
Dead Eye
Hit 10 throws in a row.
10150 coins
Bull Whisperer
Land 15 bullseyes in total.
15200 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyBullseyeDifficulty.MediumStarting drift speed of the target.

↑ Back to top

🎮 Dice Poker

Hold and reroll five dice for the best poker hand.

How to play

  1. Tap dice to HOLD them, then REROLL the rest — you have a limited number of rerolls.
  2. Tap SCORE to bank the hand's best poker category. Reach the target score to win the round.

Boosters

BoosterKeyEffect
Suggest HoldhintAuto-hold the most common dice value.
Extra RerollrerollGain one more reroll this hand.

Achievements

AchievementGoalReward
Lucky Roller
Reach the target and win a round.
1
Dice Stacker
Bank 500 points in total.
500200 coins
Big Hands
Score 10 hands worth 40+ points (full house or better).
10200 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyDicePokerDifficulty.MediumTarget score and number of rerolls.

↑ Back to top

🎮 Scratch Card

Scratch cells and match three symbols for a prize.

How to play

  1. Tap covered cells to scratch them. You only get a few scratches per card.
  2. Reveal three matching symbols to win that symbol's prize. The star pays the most!

Boosters

BoosterKeyEffect
Lucky RevealhintReveal one cell of the winning symbol for free.
Extra ScratchscratchGain one more scratch on this card.

Achievements

AchievementGoalReward
Big Winner
Reach a score of 600 in one run.
600
Card Sharp
Win 20 cards in total.
20200 coins
Jackpot!
Hit five 100-point star prizes.
5250 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyScratchCardDifficulty.MediumHow many scratches you get per card.

↑ Back to top

🎮 Treasure Hunt

Follow hot/cold taps to the hidden treasure in the fewest taps.

How to play

  1. Tap cells to probe. Each shows hot (red) or cold (blue) and an arrow toward the treasure.
  2. Follow the trail and tap the treasure. The fewer taps you use, the higher your score.

Boosters

BoosterKeyEffect
DowsehintProbe a cell right next to the treasure.
Line ScanscanPulse the treasure's row and column.

Achievements

AchievementGoalReward
Fortune Hunter
Reach a score of 500 in one run.
500
Pathfinder
Find 25 treasures in total.
25200 coins
Surveyor
Find 10 treasures within the par tap count.
10250 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyTreasureHuntDifficulty.MediumGrid size — bigger grids hide the treasure better.

↑ 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
Rhythm Taphint combo
Slot Matchhint respin
Balloon Pumphint patch
Pattern Lockhint replay
Sort Ithint time
Count Uphint time
Bullseyehint life
Dice Pokerhint reroll
Scratch Cardhint scratch
Treasure Hunthint scan

🏆 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
Rhythm Tapmarker background
Slot Matchreel background
Balloon Pumpballoon background
Pattern Lockdot background
Sort Itbin background
Count Upbutton background
Bullseyedart background
Dice Pokerdie background
Scratch Cardcover background
Treasure Huntcell 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_Casual4.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 RhythmTapGame();
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 > Casual 4.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/Casual4/MyGame/.
  2. Add MyGameGame.cs implementing IMiniGame, decorated with [MiniGame("…", "My Game", Category = MiniGameCategory.Casual4)].
  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. casual4_rhythm_tap), 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. ⭐