Mini Game Templates · Casual 2.0 Pack

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

Unity 6000.0.62f1+10 games31 boosters40 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.

SimonRepeat the growing colour sequence.
Rock Paper ScissorsBest-of duel — first to 5 beats the AI.
Higher or LowerGuess if the next card is higher or lower.
Fruit SliceSwipe to slice the fruit — avoid the bombs.
Code BreakerCrack the secret colour code.
Lights OutSwitch off every light in as few taps as possible.
Quick TapTap the targets before they vanish.
Lucky WheelSpin the wheel and rack up points.
Color MatchDoes the word match its ink colour? Beat the clock.
Bubble PopPop groups of matching bubbles to clear the board.
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-Casual2.unitypackage. If Unity offers to import TMP Essentials, accept — the demo UI uses TextMeshPro.
  2. Open Assets/MiniGameTemplates/Demo/MiniGameTemplates_Casual2.unity. The full demo is already baked into the scene.
  3. Press Play — the dashboard lists every Casual 2.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 SimonGame();
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. "casual2_simon"
    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/Casual2/<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()

🎮 Simon

Repeat the growing colour sequence.

How to play

  1. Watch the pads flash in order.
  2. Then tap them back in the same order. Each round adds one more — how far can you go?

Boosters

BoosterKeyEffect
Next PadhintFlash the next pad you need to tap.
ReplayreplayPlay the current sequence again.
Slow ShowslowReplay the sequence more slowly.

Achievements

AchievementGoalReward
Warmed Up
Match a sequence of 5.
5
Sharp Memory
Match a sequence of 10.
10150 coins
Photographic
Match a sequence of 15.
15300 coins
Repeat Offender
Complete 100 rounds in total.
100150 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultySimonDifficulty.MediumPlayback speed of the sequence.

↑ Back to top

🎮 Rock Paper Scissors

Best-of duel — first to 5 beats the AI.

How to play

  1. Tap Rock, Paper or Scissors. Rock beats Scissors, Scissors beats Paper, Paper beats Rock.
  2. First to 5 round-wins takes the match!

Boosters

BoosterKeyEffect
PeekpeekReveal the AI's next move before you pick.
Double UpdoubleYour next round win counts as two points.

Achievements

AchievementGoalReward
First Match
Win a match.
1
Champion
Win 10 matches.
10150 coins
On a Roll
Win 5 rounds in a row.
5200 coins
Veteran
Play 200 rounds in total.
200150 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyRpsDifficulty.MediumHard biases the AI toward countering your move.

↑ Back to top

🎮 Higher or Lower

Guess if the next card is higher or lower.

How to play

  1. A card is shown. Will the NEXT card be higher or lower? Aces are high, 2 is low.
  2. Tap HIGHER ▲ or LOWER ▼. A correct guess scores a point and continues; a wrong guess — or a tie — ends the run.

Boosters

BoosterKeyEffect
PeekpeekReveal the rank of the next card before you guess.
Skip CardskipSwap the current card for a fresh draw — no penalty, keep your streak.
Safety NetsafetyArm a shield that forgives your next wrong guess once.

Achievements

AchievementGoalReward
On a Roll
Reach a streak of 5 correct guesses.
5
Card Counter
Reach a streak of 10 correct guesses.
10150 coins
High Roller
Reach a streak of 20 correct guesses.
20300 coins
Seasoned Gambler
Make 200 guesses in total.
200150 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyHigherLowerDifficulty.MediumReserved tuning knob — affects flavour only; the deck is always a standard 52-card deck.

↑ Back to top

🎮 Fruit Slice

Swipe to slice the fruit — avoid the bombs.

How to play

  1. Drag across the screen to slice the fruit as it flies up. Hit several in one swipe for a combo bonus.
  2. Avoid the dark bombs — slicing one costs a life. You have three. Missing fruit only breaks your combo.

Boosters

BoosterKeyEffect
FreezefreezeSlow everything down for a few seconds — easy pickings.
ShieldshieldThe next bomb you slice is harmless.
FrenzyfrenzyLaunch a big wave of fruit for a scoring burst.

Achievements

AchievementGoalReward
Fruit Salad
Score 500 in a single run.
500
Juicer
Score 1500 in a single run.
1500200 coins
Master Slicer
Slice 6 fruit in one swipe.
6250 coins
Orchard Cleared
Slice 1000 fruit in total.
1000150 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyFruitSliceDifficulty.MediumControls how fast fruit are tossed and how often bombs appear.

↑ Back to top

🎮 Code Breaker

Crack the secret colour code.

How to play

  1. Tap palette colours to fill the four slots, then SUBMIT your guess.
  2. Black pegs = right colour AND place; white = right colour, wrong place. Crack the code before your guesses run out!

Boosters

BoosterKeyEffect
Reveal PeghintLock one peg of the secret code into its correct slot.
UndoundoClear the last-filled slot, or remove your last submitted row.
Extra Guessesextra_guessAdd two more guesses to your budget.

Achievements

AchievementGoalReward
First Crack
Crack your first code.
1
Code Master
Crack 10 codes.
10200 coins
Snap Solver
Crack a code in 4 guesses or fewer.
1150 coins
Cryptographer
Crack 25 codes in total.
25300 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyCodeBreakerDifficulty.EasyHow many guesses you get to crack the code.
CodeLength> 4
ColourCount> 6

↑ Back to top

🎮 Lights Out

Switch off every light in as few taps as possible.

How to play

  1. Tap a cell to flip it and its four neighbours between lit and dark.
  2. Turn every light off to clear the level. Try to do it in as few taps as you can!

Boosters

BoosterKeyEffect
HinthintHighlight a tap that leads to the solution.
UndoundoUndo your last tap.
ZapzapSwitch off a single lit cell for free.

Achievements

AchievementGoalReward
Lights Off
Clear your first level.
1
Power Saver
Clear 10 levels in total.
10150 coins
Clean Sweep
Clear a level in as few taps as the board is wide.
1200 coins
Blackout Master
Clear 50 levels in total.
50400 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyLightsOutDifficulty.MediumBoard size: Easy = 4x4, Medium = 5x5, Hard = 6x6.

↑ Back to top

🎮 Quick Tap

Tap the targets before they vanish.

How to play

  1. Tap each target before it shrinks away. Fast taps score more.
  2. Avoid the red bombs, and don't let three targets escape — three misses ends the run.

Boosters

BoosterKeyEffect
Slow-MoslowTargets expire and spawn slowly for a few seconds.
FreezefreezePause target expiry briefly so nothing vanishes.
Big TargetsbigThe next several targets spawn larger and easier.

Achievements

AchievementGoalReward
Quick Fingers
Reach a score of 30 in one run.
30
Lightning Hands
Reach a score of 60 in one run.
60200 coins
On A Roll
Hit a combo of 10 taps without a miss.
10150 coins
Tap Machine
Tap 500 targets in total.
500250 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyQuickTapDifficulty.MediumBase spawn cadence and target lifetime — higher = harder.

↑ Back to top

🎮 Lucky Wheel

Spin the wheel and rack up points.

How to play

  1. Tap SPIN to send the wheel turning. It eases to a stop under the pointer at the top.
  2. Each wedge adds its value to your score. Land x2 to double the next spin, JACKPOT for a big bonus — reach the target to win!

Boosters

BoosterKeyEffect
Lucky EyepeekHighlight the wheel's best wedge to aim your luck at.
Value BoostboostDouble the value of your next spin.
Re-SpinnudgeTake a free extra spin.
InsuranceinsuranceTurn your next MISS into a small consolation score.

Achievements

AchievementGoalReward
Lucky Start
Reach the target score and win a round.
1
High Roller
Win 10 rounds in total.
10250 coins
Jackpot Hunter
Land on JACKPOT 5 times.
5200 coins
Wheel Warrior
Spin the wheel 100 times in total.
100150 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyLuckyWheelDifficulty.MediumHigher difficulty raises the target score and tilts the wedge odds toward low values.

↑ Back to top

🎮 Color Match

Does the word match its ink colour? Beat the clock.

How to play

  1. Read the word — but look at its INK colour. Does the word's meaning match the colour it is printed in?
  2. Tap MATCH or NO MATCH before the timer bar empties. Each correct answer speeds up the clock!

Boosters

BoosterKeyEffect
RevealhintFlash the correct answer button.
Slow ClockslowAdd extra time to the next few questions.
FreezefreezePause the timer for a moment.
SkipskipSafely skip this question and move on.

Achievements

AchievementGoalReward
Quick Eye
Reach a score of 20 in one run.
20
Ink Master
Reach a score of 50 in one run.
50200 coins
Unbroken
Hit a streak of 15 correct in a row.
15250 coins
Stroop Veteran
Answer 300 questions in total.
300150 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyColorMatchDifficulty.MediumBase time per question. Lower difficulty gives you longer to decide.

↑ Back to top

🎮 Bubble Pop

Pop groups of matching bubbles to clear the board.

How to play

  1. Tap any bubble that touches 2 or more of the same colour to pop the whole group.
  2. Bubbles fall to fill the gaps and columns slide together. Bigger groups score more — clear the whole board for a bonus!

Boosters

BoosterKeyEffect
HinthintHighlight the largest group you can pop.
Color BombbombPop every bubble of the most common colour.
ShuffleshuffleReshuffle the remaining bubbles when you're stuck.

Achievements

AchievementGoalReward
Squeaky Clean
Clear an entire board for the first time.
1
Bubble Burster
Clear 10 boards in total.
10200 coins
Mega Pop
Pop a single group of 10 or more bubbles.
1150 coins
Pop Star
Pop 2000 bubbles in total.
2000400 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyBubblePopDifficulty.MediumNumber of bubble colours: Easy = 3, Medium = 4, Hard = 5. More colours means smaller groups and a tougher board.

↑ 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
Simonhint replay slow
Rock Paper Scissorspeek double
Higher or Lowerpeek skip safety
Fruit Slicefreeze shield frenzy
Code Breakerhint undo extra_guess
Lights Outhint undo zap
Quick Tapslow freeze big
Lucky Wheelpeek boost nudge insurance
Color Matchhint slow freeze skip
Bubble Pophint bomb shuffle

🏆 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
Simonpad background
Rock Paper Scissorsbackground
Higher or Lowercard_front background
Fruit Slicefruit bomb background
Code Breakerpeg background
Lights Outlight background
Quick Taptarget background
Lucky Wheelwheel background
Color Matchbutton background
Bubble Popbubble 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_Casual2.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 SimonGame();
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 2.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/Casual2/MyGame/.
  2. Add MyGameGame.cs implementing IMiniGame, decorated with [MiniGame("…", "My Game", Category = MiniGameCategory.Casual2)].
  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. casual2_simon), 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. ⭐