Mini Game Templates · Casual 4.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-Casual4.unitypackage. If Unity offers to import TMP Essentials, accept — the demo UI uses TextMeshPro. - Open
Assets/MiniGameTemplates/Demo/MiniGameTemplates_Casual4.unity. The full demo is already baked into the scene. - Press Play — the dashboard lists every Casual 4.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 RhythmTapGame();
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. "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
| 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/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
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
- A marker sweeps back and forth. The yellow beat line is your target.
- Tap anywhere exactly as the marker crosses the line. Perfect hits score most; the tempo rises as you go.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Slow Beat | hint | Briefly slow the tempo so the next beats are easy to read. |
| Combo Boost | combo | Add a small cushion to your combo and score. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| On Beat Reach a score of 150 in one run. | 150 | — |
| In the Groove Build a combo of 20. | 20 | 150 coins |
| Metronome Land 20 perfect hits in total. | 20 | 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 | RhythmTapDifficulty.Medium | Starting tempo of the sweeping marker. |
🎮 Slot Match
Stop three spinning reels to line up matching symbols.
How to play
- Three reels spin. Tap STOP to lock each one in turn — matching symbols pay out.
- Keep spinning to grow the round's pot, then BANK it into your score before your luck runs out.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Lucky Nudge | hint | Nudge the spinning reels toward a match. |
| Re-spin | respin | Re-roll all reels for a fresh spin. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| High Roller Grow a single round's pot to 100 before banking. | 100 | — |
| Jackpot Chaser Reach a banked score of 300. | 300 | 200 coins |
| Three of a Kind Land 10 three-of-a-kind spins in total. | 10 | 200 coins |
Reskin slots
reel background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | SlotMatchDifficulty.Medium | How many symbols are on the reels — more symbols, rarer matches. |
🎮 Balloon Pump
Inflate for a bigger pot — bank before it bursts.
How to play
- Tap PUMP to inflate. Each pump grows the pot — but also the chance it bursts.
- Tap BANK to lock the pot into your score before it pops. If it bursts, that pot is lost!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Safe Pump | hint | Pump once with zero burst risk. |
| Patch | patch | Lower the current burst risk. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Big Air Grow a single balloon's pot to 80. | 80 | — |
| Daredevil Reach a banked score of 250. | 250 | 200 coins |
| Cool Head Bank a balloon 50 times in total. | 50 | 200 coins |
Reskin slots
balloon background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | BalloonPumpDifficulty.Medium | Base burst risk per pump. |
🎮 Pattern Lock
Memorise then redraw the connect-the-dots pattern.
How to play
- Watch the dots light up one by one — that's the pattern.
- Tap the dots back in the same order. Each round adds one more dot.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Next Dot | hint | Flash the next dot you need to tap. |
| Replay | replay | Play the current pattern again. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Locked In Redraw a pattern of 6 dots. | 6 | — |
| Master Key Redraw a pattern of 8 dots. | 8 | 200 coins |
| Persistent Clear 20 patterns in total. | 20 | 150 coins |
Reskin slots
dot background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | PatternLockDifficulty.Medium | Starting pattern length and flash speed. |
🎮 Sort It
Bin each item left or right by the current rule, against the clock.
How to play
- An item appears in the centre. The banner tells you whether to sort by colour or shape.
- Tap the matching LEFT or RIGHT bin. Correct sorts add time; wrong ones cost time. Watch — the rule can flip!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Show Bin | hint | Flash the correct bin for the current item. |
| Add Time | time | Add 5 seconds to the clock. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Sorter Reach a score of 60 in one run. | 60 | — |
| On a Roll Build a correct-sort combo of 25. | 25 | 150 coins |
| Conveyor Correctly sort 80 items in one run. | 80 | 200 coins |
Reskin slots
bin background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | SortItDifficulty.Medium | Starting time on the clock. |
🎮 Count Up
Count the briefly-flashed shapes and pick the right number.
How to play
- A scatter of shapes flashes for a moment, then hides. Count them fast!
- Tap how many you saw before the timer empties. Three misses ends the run.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Fifty-Fifty | hint | Remove two wrong answers. |
| Add Time | time | Add 3 seconds to the answer timer. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Quick Count Reach a score of 80 in one run. | 80 | — |
| Eagle Eye Build a streak of 12 correct counts. | 12 | 150 coins |
| Tally Master Count correctly 100 times in total. | 100 | 200 coins |
Reskin slots
button background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | CountUpDifficulty.Medium | Flash time, max shapes, and answer timer. |
🎮 Bullseye
Time your throw to hit the drifting target's centre.
How to play
- A ringed target drifts around the field. Tap anywhere to throw a dart at it.
- The closer to the centre, the more points. Each hit shrinks and speeds up the target; three misses ends the run.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Steady Aim | hint | Slow the target so your next throw is easier. |
| Extra Dart | life | Gain an extra life. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Sharpshooter Reach a score of 300 in one run. | 300 | — |
| Dead Eye Hit 10 throws in a row. | 10 | 150 coins |
| Bull Whisperer Land 15 bullseyes in total. | 15 | 200 coins |
Reskin slots
dart background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | BullseyeDifficulty.Medium | Starting drift speed of the target. |
🎮 Dice Poker
Hold and reroll five dice for the best poker hand.
How to play
- Tap dice to HOLD them, then REROLL the rest — you have a limited number of rerolls.
- Tap SCORE to bank the hand's best poker category. Reach the target score to win the round.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Suggest Hold | hint | Auto-hold the most common dice value. |
| Extra Reroll | reroll | Gain one more reroll this hand. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Lucky Roller Reach the target and win a round. | 1 | — |
| Dice Stacker Bank 500 points in total. | 500 | 200 coins |
| Big Hands Score 10 hands worth 40+ points (full house or better). | 10 | 200 coins |
Reskin slots
die background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | DicePokerDifficulty.Medium | Target score and number of rerolls. |
🎮 Scratch Card
Scratch cells and match three symbols for a prize.
How to play
- Tap covered cells to scratch them. You only get a few scratches per card.
- Reveal three matching symbols to win that symbol's prize. The star pays the most!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Lucky Reveal | hint | Reveal one cell of the winning symbol for free. |
| Extra Scratch | scratch | Gain one more scratch on this card. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Big Winner Reach a score of 600 in one run. | 600 | — |
| Card Sharp Win 20 cards in total. | 20 | 200 coins |
| Jackpot! Hit five 100-point star prizes. | 5 | 250 coins |
Reskin slots
cover background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | ScratchCardDifficulty.Medium | How many scratches you get per card. |
🎮 Treasure Hunt
Follow hot/cold taps to the hidden treasure in the fewest taps.
How to play
- Tap cells to probe. Each shows hot (red) or cold (blue) and an arrow toward the treasure.
- Follow the trail and tap the treasure. The fewer taps you use, the higher your score.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Dowse | hint | Probe a cell right next to the treasure. |
| Line Scan | scan | Pulse the treasure's row and column. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Fortune Hunter Reach a score of 500 in one run. | 500 | — |
| Pathfinder Find 25 treasures in total. | 25 | 200 coins |
| Surveyor Find 10 treasures within the par tap count. | 10 | 250 coins |
Reskin slots
cell background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | TreasureHuntDifficulty.Medium | Grid size — bigger grids hide the treasure better. |
💥 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 |
|---|---|
| Rhythm Tap | hint combo |
| Slot Match | hint respin |
| Balloon Pump | hint patch |
| Pattern Lock | hint replay |
| Sort It | hint time |
| Count Up | hint time |
| Bullseye | hint life |
| Dice Poker | hint reroll |
| Scratch Card | hint scratch |
| Treasure Hunt | hint 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
| Game | Slots |
|---|---|
| Rhythm Tap | marker background |
| Slot Match | reel background |
| Balloon Pump | balloon background |
| Pattern Lock | dot background |
| Sort It | bin background |
| Count Up | button background |
| Bullseye | dart background |
| Dice Poker | die background |
| Scratch Card | cover background |
| Treasure Hunt | cell 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_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 */ });
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
- 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/Casual4/MyGame/. - Add
MyGameGame.csimplementingIMiniGame, decorated with[MiniGame("…", "My Game", Category = MiniGameCategory.Casual4)]. - 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. 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.