Mini Game Templates · Casual 3.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-Casual3.unitypackage. If Unity offers to import TMP Essentials, accept — the demo UI uses TextMeshPro. - Open
Assets/MiniGameTemplates/Demo/MiniGameTemplates_Casual3.unity. The full demo is already baked into the scene. - Press Play — the dashboard lists every Casual 3.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 ReactionTestGame();
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. "casual3_reaction"
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/Casual3/<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()
🎮 Reaction Test
Tap the instant the panel flashes green.
How to play
- Watch the panel. It starts red — do NOT tap yet.
- The moment it flashes green, tap as fast as you can. Tap too early and you take a penalty.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Pre-Cue | hint | Tint the panel amber just before it goes green. |
| Re-Roll | redo | Throw out the current trial and start it again. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Quick Draw Record a best reaction under 300 ms. | 1 | — |
| Lightning Record a best reaction under 250 ms. | 1 | 200 coins |
| Sharp Average Finish a run with a strong score. | 350 | 150 coins |
| Reflex Regular Complete 50 full runs. | 50 | 250 coins |
Reskin slots
panel background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | ReactionDifficulty.Medium | Higher difficulty widens the random wait before the flash. |
Trials | 5 | Number of timed trials per run. |
🎮 Coin Streak
Call the coin, build a streak, bank before you bust.
How to play
- Call HEADS or TAILS. Each correct call grows your streak and your pot.
- BANK the pot to lock it into your safe score, or keep calling — a wrong call wipes the pot!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Safe Flip | hint | Your next call is guaranteed to land right. |
| Double Pot | double | Double whatever is currently in the pot. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Hot Hand Reach a streak of 5 correct calls. | 5 | — |
| On Fire Reach a streak of 10 correct calls. | 10 | 250 coins |
| Banker Bank a safe score of 100. | 100 | 200 coins |
| Cash Out Bank the pot 50 times in total. | 50 | 200 coins |
Reskin slots
coin background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | CoinStreakDifficulty.Medium | Higher difficulty biases the coin against your call. |
🎮 Guess the Number
Find the hidden number with higher/lower hints.
How to play
- Type a number between 1 and 100 on the keypad, then tap OK.
- The hint says HIGHER or LOWER and narrows the range. Fewer guesses score more!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Narrow | hint | Shrink the live range toward the hidden number. |
| Extra Tries | extra | Add two more attempts to your budget. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Code Breaker Find the number 10 times. | 10 | — |
| Bisector Solve it in 4 guesses or fewer. | 1 | 200 coins |
| Beginner's Luck Nail it on the very first guess. | 1 | 300 coins |
| High Roller Score 120 in a single solve. | 120 | 150 coins |
Reskin slots
background key — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | NumberGuessDifficulty.Medium | Higher difficulty allows fewer attempts. |
🎮 Dice Duel
Push your luck rolling dice — bank before a 1 busts you.
How to play
- ROLL adds the die to your turn total — but rolling a 1 busts the whole turn!
- HOLD to bank your turn total. First to the target beats the AI.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Lucky Roll | hint | Your next roll cannot come up a 1. |
| Steal | steal | Take 5 points straight from the AI's score. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Duelist Win 10 duels. | 10 | — |
| Giant Slayer Beat the AI on Hard. | 1 | 250 coins |
| Crushing Victory Win a duel by a wide margin. | 60 | 150 coins |
| Persistent Play 25 duels. | 25 | 150 coins |
Reskin slots
die background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | DiceDuelDifficulty.Medium | Higher difficulty makes the AI hold for bigger turns. |
Target | 50 | Target total to win the duel. |
🎮 Odd One Out
Spot the slightly-off tile before time runs out.
How to play
- Every tile is the same colour except one. Tap the odd one out.
- Each correct tap grows the grid and shrinks the difference. Beat the timer at the top!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Reveal | hint | Briefly flash the odd tile. |
| Add Time | time | Add 6 seconds to the timer. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Sharp Eye Reach level 10. | 10 | — |
| Eagle Eye Reach level 20. | 20 | 250 coins |
| Tile Hunter Spot 200 odd tiles in total. | 200 | 200 coins |
| Persistent Spotter Play 20 runs. | 20 | 150 coins |
Reskin slots
tile background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | OddOneOutDifficulty.Medium | Higher difficulty shrinks the colour difference faster and tightens the timer. |
🎮 Chimp Test
Memorise the numbers, then tap them in order.
How to play
- Numbers appear on the grid. Memorise where they are.
- Tap them in order 1, 2, 3... The tiles hide as you go. Clear it to add one more number.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Peek | hint | Briefly reveal the remaining numbers. |
| Auto Tap | skip | Tap the next correct number for you. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Smarter Than Average Reach 8 numbers. | 8 | — |
| Chimp Champ Reach 12 numbers. | 12 | 300 coins |
| Memory Marathon Clear 100 boards in total. | 100 | 200 coins |
| Test Subject Play 20 runs. | 20 | 150 coins |
Reskin slots
tile background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | ChimpTestDifficulty.Medium | Higher difficulty starts with more numbers and hides them sooner. |
🎮 Math Sprint
Solve quick maths against the clock.
How to play
- Solve the sum and tap the matching answer below.
- Correct answers build a combo and add time; wrong ones cost time. Beat the clock!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Fifty-Fifty | hint | Remove two wrong answers. |
| Add Time | time | Add 5 seconds to the clock. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Number Cruncher Score 40 in a single run. | 40 | — |
| On a Roll Reach a combo of 15. | 15 | 200 coins |
| Mathlete Solve 500 problems in total. | 500 | 250 coins |
| Daily Drill Play 25 runs. | 25 | 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 | MathSprintDifficulty.Medium | Higher difficulty uses bigger operands and harder operators. |
🎮 Flood It
Flood the whole board to one colour in time.
How to play
- The flood starts at the top-left. Pick a palette colour to repaint your region.
- Each pick absorbs matching neighbours. Make the whole board one colour before your moves run out!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Best Colour | hint | Highlight the colour that grows your region most. |
| Extra Moves | moves | Add 3 moves to your budget. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Flooded Win 10 boards. | 10 | — |
| Efficient Win with at least 3 moves to spare. | 1 | 200 coins |
| Big Board Boss Win on Hard. | 1 | 250 coins |
| Perfectionist Score 160 in a single win. | 160 | 150 coins |
Reskin slots
cell background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | FloodItDifficulty.Medium | Higher difficulty uses a bigger board, more colours and a tighter move budget. |
🎮 Tile Memory
Memorise the lit cells, then tap them all.
How to play
- Some cells light up for a moment. Remember which ones.
- Once they hide, tap every cell that was lit. Clear it to add one more next round.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Reveal One | hint | Briefly flash one cell you still need. |
| Peek Again | peek | Show the whole pattern once more. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Good Recall Reach level 8. | 8 | — |
| Total Recall Reach level 14. | 14 | 300 coins |
| Pattern Pro Clear 150 patterns in total. | 150 | 200 coins |
| Memory Lane Play 20 runs. | 20 | 150 coins |
Reskin slots
cell background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | TileMemoryDifficulty.Medium | Higher difficulty starts with more lit cells and a shorter flash. |
🎮 Stop the Clock
Stop the sweeping marker inside the target zone.
How to play
- A marker sweeps across the bar. The green band is your target.
- Tap STOP inside the zone — closer to the gold centre scores more. Each hit speeds up and shrinks the zone.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Widen Zone | hint | Make the target zone bigger for this stop. |
| Slow Sweep | slow | Halve the marker speed for the current sweep. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Steady Hand Score 80 in a single run. | 80 | — |
| In the Zone Hit the zone 8 times in a row. | 8 | 250 coins |
| Bullseye Master Land 50 bullseyes in total. | 50 | 250 coins |
| Right on Time Hit the zone 300 times in total. | 300 | 200 coins |
Reskin slots
marker background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | StopTheClockDifficulty.Medium | Higher difficulty sweeps faster and starts with a narrower zone. |
💥 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 |
|---|---|
| Reaction Test | hint redo |
| Coin Streak | hint double |
| Guess the Number | hint extra |
| Dice Duel | hint steal |
| Odd One Out | hint time |
| Chimp Test | hint skip |
| Math Sprint | hint time |
| Flood It | hint moves |
| Tile Memory | hint peek |
| Stop the Clock | hint slow |
🏆 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 |
|---|---|
| Reaction Test | panel background |
| Coin Streak | coin background |
| Guess the Number | background key |
| Dice Duel | die background |
| Odd One Out | tile background |
| Chimp Test | tile background |
| Math Sprint | button background |
| Flood It | cell background |
| Tile Memory | cell background |
| Stop the Clock | marker 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_Casual3.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 ReactionTestGame();
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 3.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/Casual3/MyGame/. - Add
MyGameGame.csimplementingIMiniGame, decorated with[MiniGame("…", "My Game", Category = MiniGameCategory.Casual3)]. - 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. casual3_reaction), 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.