Mini Game Templates · Casual 2.0 Pack
Pick-up-and-play casual templates with fast loops, configurable settings, level curves, and reusable UI patterns.
🏠 Overview
10 fully playable mini-games, each with boosters, achievements, reskin slots, a first-run tutorial, per-level difficulty scaling and light/dark theming — all driven by one shared runtime.
IMiniGame and is discovered automatically by reflection — no scene wiring, no prefab lists.Shared capabilities
⚙ How it works
This is a procedural-UI games template. Every game builds its own interface and logic in C# at runtime inside the RectTransform you give it — there are no hand-placed prefabs to wire up. The shipped demo scene is a pre-baked snapshot of that build, so you can inspect the full hierarchy without pressing Play; on Play it rebuilds itself and becomes fully interactive.
The Studio
Open Tools > Mini Game Templates > Studio for per-game tuning panels. Settings you edit are saved to ScriptableObject assets under Assets/MiniGameTemplates/Resources/Config/ and loaded by the games at runtime.
Customization at a glance
| What to change | Where to find it |
|---|---|
| Game rules / difficulty / dimensions | Studio, or the game's <Game>Settings asset |
| Per-level difficulty curve | Studio > game panel > Levels editor |
| Colours / overall look | MiniGameTheme asset, or the in-app DARK/LIGHT toggle |
| Game art (tiles, pieces, backgrounds…) | Reskin system — Tools > Mini Game Templates > Reskin Editor |
| Boosters offered | Each game's <Game>BoosterSpec.cs |
| Deeper layout / behaviour | The game's <Game>Game.cs build code |
⚡ Quick start
- Import
MiniGameTemplates-Casual2.unitypackage. If Unity offers to import TMP Essentials, accept — the demo UI uses TextMeshPro. - Open
Assets/MiniGameTemplates/Demo/MiniGameTemplates_Casual2.unity. The full demo is already baked into the scene. - Press Play — the dashboard lists every Casual 2.0 game; pick, play, and try the boosters and cheat rail.
- Open Tools > Mini Game Templates > Studio and tune any game's settings.
- (Optional) Open Tools > HLK > Guided Setup to configure the bundled LiveOps kit — ads, IAP, notifications, rate-us and more (see the LiveOps Kit section).
- To ship a single game inside your own UI, use the
IMiniGamecontract:
IMiniGame game = new SimonGame();
game.Mount(hostRect, context); // context : IMiniGameContext
// ... later, when done:
game.Unmount();
IMiniGameContext (theme, audio, save, events, wallet, score) — copy it or implement the interface with your own services.🛠 Architecture
The IMiniGame contract
public interface IMiniGame {
string Id { get; } // stable snake_case id, e.g. "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
| Registry | Discovers | Convention |
|---|---|---|
MiniGameRegistry | IMiniGame classes with a [MiniGame] attribute | one per game |
| Booster registry | IBoosterSpec implementations | <Game>BoosterSpec.cs |
| Achievement registry | IAchievementSpec implementations | <Game>AchievementSpec.cs |
| Reskin registry | IReskinSpec implementations | <Game>ReskinSpec.cs |
| Tutorial registry | ITutorialSpec implementations | <Game>TutorialSpec.cs |
Per-game folder layout
Assets/MiniGameTemplates/Runtime/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
Runtime flow
Mount(host, ctx) → NewRound() → player input loop → RoundWon / RoundLost event → NewRound() or Unmount()
🎮 Simon
Repeat the growing colour sequence.
How to play
- Watch the pads flash in order.
- Then tap them back in the same order. Each round adds one more — how far can you go?
Boosters
| Booster | Key | Effect |
|---|---|---|
| Next Pad | hint | Flash the next pad you need to tap. |
| Replay | replay | Play the current sequence again. |
| Slow Show | slow | Replay the sequence more slowly. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Warmed Up Match a sequence of 5. | 5 | — |
| Sharp Memory Match a sequence of 10. | 10 | 150 coins |
| Photographic Match a sequence of 15. | 15 | 300 coins |
| Repeat Offender Complete 100 rounds in total. | 100 | 150 coins |
Reskin slots
pad background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | SimonDifficulty.Medium | Playback speed of the sequence. |
🎮 Rock Paper Scissors
Best-of duel — first to 5 beats the AI.
How to play
- Tap Rock, Paper or Scissors. Rock beats Scissors, Scissors beats Paper, Paper beats Rock.
- First to 5 round-wins takes the match!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Peek | peek | Reveal the AI's next move before you pick. |
| Double Up | double | Your next round win counts as two points. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| First Match Win a match. | 1 | — |
| Champion Win 10 matches. | 10 | 150 coins |
| On a Roll Win 5 rounds in a row. | 5 | 200 coins |
| Veteran Play 200 rounds in total. | 200 | 150 coins |
Reskin slots
background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | RpsDifficulty.Medium | Hard biases the AI toward countering your move. |
🎮 Higher or Lower
Guess if the next card is higher or lower.
How to play
- A card is shown. Will the NEXT card be higher or lower? Aces are high, 2 is low.
- Tap HIGHER ▲ or LOWER ▼. A correct guess scores a point and continues; a wrong guess — or a tie — ends the run.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Peek | peek | Reveal the rank of the next card before you guess. |
| Skip Card | skip | Swap the current card for a fresh draw — no penalty, keep your streak. |
| Safety Net | safety | Arm a shield that forgives your next wrong guess once. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| On a Roll Reach a streak of 5 correct guesses. | 5 | — |
| Card Counter Reach a streak of 10 correct guesses. | 10 | 150 coins |
| High Roller Reach a streak of 20 correct guesses. | 20 | 300 coins |
| Seasoned Gambler Make 200 guesses in total. | 200 | 150 coins |
Reskin slots
card_front background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | HigherLowerDifficulty.Medium | Reserved tuning knob — affects flavour only; the deck is always a standard 52-card deck. |
🎮 Fruit Slice
Swipe to slice the fruit — avoid the bombs.
How to play
- Drag across the screen to slice the fruit as it flies up. Hit several in one swipe for a combo bonus.
- Avoid the dark bombs — slicing one costs a life. You have three. Missing fruit only breaks your combo.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Freeze | freeze | Slow everything down for a few seconds — easy pickings. |
| Shield | shield | The next bomb you slice is harmless. |
| Frenzy | frenzy | Launch a big wave of fruit for a scoring burst. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Fruit Salad Score 500 in a single run. | 500 | — |
| Juicer Score 1500 in a single run. | 1500 | 200 coins |
| Master Slicer Slice 6 fruit in one swipe. | 6 | 250 coins |
| Orchard Cleared Slice 1000 fruit in total. | 1000 | 150 coins |
Reskin slots
fruit bomb background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | FruitSliceDifficulty.Medium | Controls how fast fruit are tossed and how often bombs appear. |
🎮 Code Breaker
Crack the secret colour code.
How to play
- Tap palette colours to fill the four slots, then SUBMIT your guess.
- Black pegs = right colour AND place; white = right colour, wrong place. Crack the code before your guesses run out!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Reveal Peg | hint | Lock one peg of the secret code into its correct slot. |
| Undo | undo | Clear the last-filled slot, or remove your last submitted row. |
| Extra Guesses | extra_guess | Add two more guesses to your budget. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| First Crack Crack your first code. | 1 | — |
| Code Master Crack 10 codes. | 10 | 200 coins |
| Snap Solver Crack a code in 4 guesses or fewer. | 1 | 150 coins |
| Cryptographer Crack 25 codes in total. | 25 | 300 coins |
Reskin slots
peg background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | CodeBreakerDifficulty.Easy | How many guesses you get to crack the code. |
CodeLength | > 4 | — |
ColourCount | > 6 | — |
🎮 Lights Out
Switch off every light in as few taps as possible.
How to play
- Tap a cell to flip it and its four neighbours between lit and dark.
- Turn every light off to clear the level. Try to do it in as few taps as you can!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Hint | hint | Highlight a tap that leads to the solution. |
| Undo | undo | Undo your last tap. |
| Zap | zap | Switch off a single lit cell for free. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Lights Off Clear your first level. | 1 | — |
| Power Saver Clear 10 levels in total. | 10 | 150 coins |
| Clean Sweep Clear a level in as few taps as the board is wide. | 1 | 200 coins |
| Blackout Master Clear 50 levels in total. | 50 | 400 coins |
Reskin slots
light background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | LightsOutDifficulty.Medium | Board size: Easy = 4x4, Medium = 5x5, Hard = 6x6. |
🎮 Quick Tap
Tap the targets before they vanish.
How to play
- Tap each target before it shrinks away. Fast taps score more.
- Avoid the red bombs, and don't let three targets escape — three misses ends the run.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Slow-Mo | slow | Targets expire and spawn slowly for a few seconds. |
| Freeze | freeze | Pause target expiry briefly so nothing vanishes. |
| Big Targets | big | The next several targets spawn larger and easier. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Quick Fingers Reach a score of 30 in one run. | 30 | — |
| Lightning Hands Reach a score of 60 in one run. | 60 | 200 coins |
| On A Roll Hit a combo of 10 taps without a miss. | 10 | 150 coins |
| Tap Machine Tap 500 targets in total. | 500 | 250 coins |
Reskin slots
target background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | QuickTapDifficulty.Medium | Base spawn cadence and target lifetime — higher = harder. |
🎮 Lucky Wheel
Spin the wheel and rack up points.
How to play
- Tap SPIN to send the wheel turning. It eases to a stop under the pointer at the top.
- 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
| Booster | Key | Effect |
|---|---|---|
| Lucky Eye | peek | Highlight the wheel's best wedge to aim your luck at. |
| Value Boost | boost | Double the value of your next spin. |
| Re-Spin | nudge | Take a free extra spin. |
| Insurance | insurance | Turn your next MISS into a small consolation score. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Lucky Start Reach the target score and win a round. | 1 | — |
| High Roller Win 10 rounds in total. | 10 | 250 coins |
| Jackpot Hunter Land on JACKPOT 5 times. | 5 | 200 coins |
| Wheel Warrior Spin the wheel 100 times in total. | 100 | 150 coins |
Reskin slots
wheel background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | LuckyWheelDifficulty.Medium | Higher difficulty raises the target score and tilts the wedge odds toward low values. |
🎮 Color Match
Does the word match its ink colour? Beat the clock.
How to play
- Read the word — but look at its INK colour. Does the word's meaning match the colour it is printed in?
- Tap MATCH or NO MATCH before the timer bar empties. Each correct answer speeds up the clock!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Reveal | hint | Flash the correct answer button. |
| Slow Clock | slow | Add extra time to the next few questions. |
| Freeze | freeze | Pause the timer for a moment. |
| Skip | skip | Safely skip this question and move on. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Quick Eye Reach a score of 20 in one run. | 20 | — |
| Ink Master Reach a score of 50 in one run. | 50 | 200 coins |
| Unbroken Hit a streak of 15 correct in a row. | 15 | 250 coins |
| Stroop Veteran Answer 300 questions in total. | 300 | 150 coins |
Reskin slots
button background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | ColorMatchDifficulty.Medium | Base time per question. Lower difficulty gives you longer to decide. |
🎮 Bubble Pop
Pop groups of matching bubbles to clear the board.
How to play
- Tap any bubble that touches 2 or more of the same colour to pop the whole group.
- Bubbles fall to fill the gaps and columns slide together. Bigger groups score more — clear the whole board for a bonus!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Hint | hint | Highlight the largest group you can pop. |
| Color Bomb | bomb | Pop every bubble of the most common colour. |
| Shuffle | shuffle | Reshuffle the remaining bubbles when you're stuck. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Squeaky Clean Clear an entire board for the first time. | 1 | — |
| Bubble Burster Clear 10 boards in total. | 10 | 200 coins |
| Mega Pop Pop a single group of 10 or more bubbles. | 1 | 150 coins |
| Pop Star Pop 2000 bubbles in total. | 2000 | 400 coins |
Reskin slots
bubble background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | BubblePopDifficulty.Medium | Number of bubble colours: Easy = 3, Medium = 4, Hard = 5. More colours means smaller groups and a tougher board. |
💥 Boosters
Per-game power-ups with persistent counts and refund safety, auto-discovered from each game's <Game>BoosterSpec.cs. The demo dashboard renders them as the bottom booster bar.
Activating a booster
bool OnBoosterActivated(string key) {
if (_ended || _busy) return false; // returning false REFUNDS the charge
switch (key) { /* per-key effects */ }
return false; // unknown key -> refund
}
false from the handler refunds the booster — use it whenever the activation can't proceed. Returning true deducts the charge.Award boosters programmatically with BoosterManager.Add(gameId, key, count).
Full booster catalogue
| Game | Booster keys |
|---|---|
| Simon | hint replay slow |
| Rock Paper Scissors | peek double |
| Higher or Lower | peek skip safety |
| Fruit Slice | freeze shield frenzy |
| Code Breaker | hint undo extra_guess |
| Lights Out | hint undo zap |
| Quick Tap | slow freeze big |
| Lucky Wheel | peek boost nudge insurance |
| Color Match | hint slow freeze skip |
| Bubble Pop | hint 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
| Game | Slots |
|---|---|
| Simon | pad background |
| Rock Paper Scissors | background |
| Higher or Lower | card_front background |
| Fruit Slice | fruit bomb background |
| Code Breaker | peg background |
| Lights Out | light background |
| Quick Tap | target background |
| Lucky Wheel | wheel background |
| Color Match | button background |
| Bubble Pop | bubble background |
Skin: —.🎯 Tutorials
First-run overlay walkthroughs, defined declaratively in <Game>TutorialSpec.cs as an ordered list of captioned spotlight steps. Each shows once per game's first session and can be replayed from the demo's cheat rail. Reset with TutorialManager.Reset(gameId).
📈 Level scaling
Per-game difficulty progression — auto-generated out of the box, fully editable in the Studio.
int level = LevelManager.GetCurrent(gameId); // player's current level
var diff = LevelManager.GetDifficultyForCurrent(gameId);
float mult = diff.Get("difficulty", 1f); // ramp targets / timers / AI
The Studio's Levels editor can regenerate a curve (level count, start/end difficulty) or hand-edit individual levels; edits are saved as a LevelSet asset under Resources/Config/Levels/<gameId>.asset. Reset progress with LevelManager.ResetProgress(gameId).
🌙 Light & dark mode
One toggle re-themes the whole scene — chrome and every game. Games read every colour from ctx.Theme, a MiniGameTheme asset that carries both palettes:
theme.ApplyMode(light: true); // swap palettes
bool isLight = theme.IsLightMode;
The demo dashboard's header has a DARK / LIGHT pill; the choice persists between sessions (default: dark). Both palettes are contrast-checked — panel/text/accent pairings stay readable in either mode.
ctx.Theme (Accent, TextPrimary, PanelBackground, …) rather than hardcoding, and your changes work in both modes.🎁 LiveOps Kit (bundled)
The full HyperCasual LiveOps Kit is included in this pack — no stripping, nothing to buy on top. It provides the production meta-game layer around the games:
How it is hooked up in this demo
- Vibrations: every game's sound events (taps, wins, errors) fire matching haptics through the kit automatically.
- Rewarded ad: winning a round with a coin reward offers a “Watch Ad” doubler; completing the (mock) ad credits the bonus.
- Interstitial: auto-shows after every 3rd round (skipped after a No-Ads purchase).
- Banner + shop: the cheat rail's Ads & IAP section toggles the banner and opens the simulated IAP shop (Coin Pack, No Ads, Starter Bundle) through the kit's store backend.
Setup & going live
- Everything works out of the box in the editor with mock/dummy backends — no SDKs required, nothing to configure for the demo.
- Open Tools > HLK > Open Toolset (or Tools > HLK > Guided Setup) to configure ad units, IAP products, notifications, rate-us and the rest.
- To go live, install the SDKs you want (e.g. AdMob, Unity Ads, Firebase) — the kit detects them automatically via scripting defines (
HLK_ADMOB,HLK_UNITY_ADS,HLK_FIREBASE, …) and switches from mock to real backends.
Full kit documentation: Assets/MiniGameTemplates/HyperCasualLiveOpsKit/Documentation/HLK-Documentation.html (also listed under Tools > Mini Game Templates > Welcome > Open Documentation).
➕ Add to your project
Path A — use the bundled demo dashboard
Add Assets/MiniGameTemplates/Demo/MiniGameTemplates_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 */ });
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
- Remove: delete the
BoosterDeffrom the game's spec. - Add: append a
BoosterDefand handle its key in the game's booster handler. - Grant:
BoosterManager.Add(gameId, key, count).
Audio
Games call ctx.Audio.Play(SfxKind.…). The bundled ProceduralAudioBus synthesizes all SFX at runtime — no audio files to manage; swap in your own IAudioBus to use recorded audio.
🧰 Adding new games
- Create
Assets/MiniGameTemplates/Runtime/Casual2/MyGame/. - Add
MyGameGame.csimplementingIMiniGame, decorated with[MiniGame("…", "My Game", Category = MiniGameCategory.Casual2)]. - Add
MyGameSettings(optional) with a staticDefaultgetter. - Add the spec files —
MyGameBoosterSpec,MyGameAchievementSpec,MyGameReskinSpec,MyGameTutorialSpec— all auto-discovered. - Done: the dashboard and Studio list your game automatically. No edits to existing files.
💡 Troubleshooting
Text is invisible / fonts look broken
Import TMP Essentials: Window > TextMeshPro > Import TMP Essential Resources. The demo UI uses TextMeshPro's default font.
My game doesn't show up in the dashboard
Check it implements IMiniGame, carries the [MiniGame] attribute, and its assembly references MiniGameTemplates.Core.
A booster button does nothing when pressed
The booster's key must exactly match a case in the game's booster handler — unknown keys refund silently by design.
Tutorials replay every time I press Play in the editor
The "seen" flag is stored per game id in PlayerPrefs; clearing PlayerPrefs resets it. Replay on demand from the cheat rail instead.
Reskin sprites don't apply
Import the art through Tools > Mini Game Templates > Reskin Editor (it handles the copy + import settings), then flip the in-game Skin pill to Custom.
Coroutine errors about destroyed RectTransforms when switching games
Call Unmount() before destroying the host. The unmount path stops the game's coroutines and tweens.
Ads say “SIMULATED” / no real ads show
By design: without an ad SDK installed the kit uses its mock backend, which draws clearly-labelled placeholder ads so every flow is testable. Install a real provider (e.g. AdMob via its package) and the kit switches to it automatically — see the LiveOps Kit section.
Where do I report a bug?
Email satisvizion@gmail.com with your Unity version, target platform, the game id (e.g. 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.