Mini Game Templates · Arcade 3.0 Pack
Fast-action arcade templates with procedural visuals, mobile-friendly controls, scoring, and progression hooks.
🏠 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-Arcade3.unitypackage. If Unity offers to import TMP Essentials, accept — the demo UI uses TextMeshPro. - Open
Assets/MiniGameTemplates/Demo/MiniGameTemplates_Arcade3.unity. The full demo is already baked into the scene. - Press Play — the dashboard lists every Arcade 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 RiverRaidGame();
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. "arcade3_river_raid"
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/Arcade3/<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()
🎮 River Raid
Fly the river, shoot enemies, grab fuel.
How to play
- Drag (or use the arrow keys) to steer the jet left and right between the river banks.
- Tap or press Space to fire. Shoot ships and choppers, fly over the green F to refuel — don't crash or run dry!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Refuel | refuel | Instantly fill the fuel tank. |
| Shield | shield | Survive enemy contact for a few seconds. |
| Air Strike | blast | Destroy every enemy on screen. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Downstream Reach a distance of 150. | 150 | — |
| River Master Reach a distance of 400. | 400 | 250 coins |
| High Flyer Score 600 in a single flight. | 600 | 400 coins |
| Sharpshooter Destroy 200 enemies in total. | 200 | 200 coins |
Reskin slots
jet bank background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | RiverDifficulty.Medium | How fast the river scrolls and how tightly the channel narrows. |
🎮 Bomb Catch
Catch falling bombs before they hit the floor.
How to play
- The dropper at the top releases bombs. Slide your paddle to catch each one.
- Gold bombs are worth bonus points. Drop too many and it's game over — they speed up as you go!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Magnet | magnet | Pull falling bombs toward your paddle. |
| Wide Paddle | wide | Widen the paddle for a while. |
| Defuse | defuse | Take back one missed bomb. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Steady Hands Score 300 in a round. | 300 | — |
| Bomb Squad Score 800 in a round. | 800 | 250 coins |
| Butterfingers Cured Catch 500 bombs in total. | 500 | 200 coins |
Reskin slots
paddle background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | BombDifficulty.Medium | Miss budget and how fast bombs fall. |
🎮 Turbo Racer
Dodge traffic at speed — distance is your score.
How to play
- Drag, use the arrow keys, or tap a side to steer your car across the lanes.
- Weave past the slower traffic. The road speeds up the further you go — distance is your score!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Bumper | shield | Ignore collisions for a few seconds. |
| Brake | brake | Slow the road right down briefly. |
| Nitro Sweep | clear | Blow all traffic off the road. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Open Road Drive 300m in a run. | 300 | — |
| Speed Demon Drive 800m in a run. | 800 | 250 coins |
| Highway Legend Drive 1500m in a run. | 1500 | 400 coins |
| Overtaker Pass 400 cars in total. | 400 | 200 coins |
Reskin slots
car background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | RacerDifficulty.Medium | Base road speed and traffic density. |
🎮 Cube Hop
Hop the pyramid, flip every cube — dodge the chaser.
How to play
- Tap the corner buttons (or Q/E/Z/C) to hop diagonally across the pyramid. Each cube you land on flips colour.
- Flip every cube to clear the board. Avoid the blue chaser, and never hop off the edge!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Flip Around | flip | Flip the cubes next to you. |
| Freeze | freeze | Freeze the chaser for a few seconds. |
| Repel | warp | Send the chaser back to the bottom row. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Pyramid Painter Clear 5 boards in total. | 5 | — |
| Cube King Score 400 in a run. | 400 | 250 coins |
| Busy Hopper Flip 300 cubes in total. | 300 | 200 coins |
Reskin slots
hopper cube background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | CubeDifficulty.Medium | How quickly the chaser hops after you. |
🎮 Duck Shoot
Tap flying ducks before they escape.
How to play
- Tap a flying duck to bag it. Gold ducks are worth triple — but every tap, hit or miss, spends a shot.
- Each wave gives limited shots. Bag the quota before the ducks escape to move on!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Slow-Mo | slow | Slow the ducks down to line up your shots. |
| Extra Shells | ammo | Add 5 shots to this wave. |
| Scatter Shot | scatter | Bag every duck on screen at once. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Quick Draw Reach wave 5. | 5 | — |
| Crack Shot Score 500 in a run. | 500 | 250 coins |
| Duck Hunter Bag 300 ducks in total. | 300 | 200 coins |
Reskin slots
duck background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | DuckDifficulty.Medium | How fast the ducks fly across the screen. |
🎮 Trampoline
Bounce the acrobat up to pop the balloons.
How to play
- Slide the trampoline left and right so the falling acrobat lands on it and bounces back up.
- Each bounce sends the acrobat into the balloons above — pop them for points. Don't let them hit the floor!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Pop Row | pop | Instantly pop the lowest balloon row. |
| Super Bounce | super | Bounce higher for a few seconds. |
| Wide Bed | wide | Widen the trampoline briefly. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| On a Roll Keep a rally of 20 bounces. | 20 | — |
| Big Top Star Score 600 in a run. | 600 | 250 coins |
| Balloon Buster Pop 200 balloons in total. | 200 | 200 coins |
| Spring Loaded Bounce 400 times in total. | 400 | 150 coins |
Reskin slots
trampoline actor background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | TrampolineDifficulty.Medium | Bounce power — lower means a faster, harder rally. |
🎮 Mine Cart
Jump the gaps and rocks — go the distance.
How to play
- Tap (or press Space) to jump. Hold a little longer to jump higher over the gaps and rocks.
- The track keeps speeding up. Time your jumps and go as far as you can — distance is your score!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Hard Hat | shield | Pass through obstacles unharmed briefly. |
| Dynamite | clear | Blast away all obstacles ahead. |
| Speed Run | boost | Jump ahead 10 metres of distance. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Down the Shaft Travel 30m in a run. | 30 | — |
| Deep Miner Travel 80m in a run. | 80 | 250 coins |
| Rail Legend Travel 150m in a run. | 150 | 400 coins |
| Hop Along Jump 400 times in total. | 400 | 150 coins |
Reskin slots
cart background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | CartDifficulty.Medium | Base track speed and obstacle spacing. |
🎮 Laser Run
Thread the gaps in the scrolling laser walls.
How to play
- Drag up and down (or use W/S) to move your runner along the left side.
- Each laser wall has one safe gap. Line up and slip through — a single touch ends the run!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Phase Out | phase | Open the next wall's gap fully. |
| Shield | shield | Absorb the next laser hit. |
| Slow Field | slow | Slow the laser walls right down. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Threading Clear 20 walls in a run. | 20 | — |
| Slippery Clear 50 walls in a run. | 50 | 250 coins |
| Untouchable Clear 100 walls in a run. | 100 | 400 coins |
| Needle Worker Clear 500 walls in total. | 500 | 200 coins |
Reskin slots
runner laser background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | LaserDifficulty.Medium | Wall speed and how tight the safe gaps are. |
🎮 Sky Juggler
Keep all the bouncing balls aloft.
How to play
- Slide your paddle along the bottom to bat each falling ball back up.
- More balls join as you go. Drop one and you lose a life — keep them all aloft to score!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Reset Toss | reset | Pop every ball straight up to regroup. |
| Wide Paddle | wide | Widen the paddle for a while. |
| Power Bat | boost | Bat balls higher for a few seconds. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Warmed Up Score 150 in a run. | 150 | — |
| Tireless Hands Make 600 hits in total. | 600 | 200 coins |
| Juggling Master Score 500 in a run. | 500 | 400 coins |
Reskin slots
paddle ball background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | JugglerDifficulty.Medium | Starting ball count and how fast new balls are added. |
🎮 Sky Drop
Catch the parachutists before they splash down.
How to play
- Slide the boat along the water so its net is under each falling parachutist.
- They sway as they fall — golden VIPs are worth a bonus. Let one splash down and you lose a life!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Updraft | slow | Slow the falling parachutists down. |
| Wide Net | wide | Widen the boat and net for a while. |
| Mass Rescue | rescue | Catch every parachutist on screen at once. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Lifesaver Score 300 in a run. | 300 | — |
| Coast Guard Score 800 in a run. | 800 | 250 coins |
| No One Left Behind Rescue 500 parachutists in total. | 500 | 200 coins |
Reskin slots
boat background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | DropDifficulty.Medium | Life budget and how fast the parachutists fall. |
💥 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 |
|---|---|
| River Raid | refuel shield blast |
| Bomb Catch | magnet wide defuse |
| Turbo Racer | shield brake clear |
| Cube Hop | flip freeze warp |
| Duck Shoot | slow ammo scatter |
| Trampoline | pop super wide |
| Mine Cart | shield clear boost |
| Laser Run | phase shield slow |
| Sky Juggler | reset wide boost |
| Sky Drop | slow wide rescue |
🏆 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 |
|---|---|
| River Raid | jet bank background |
| Bomb Catch | paddle background |
| Turbo Racer | car background |
| Cube Hop | hopper cube background |
| Duck Shoot | duck background |
| Trampoline | trampoline actor background |
| Mine Cart | cart background |
| Laser Run | runner laser background |
| Sky Juggler | paddle ball background |
| Sky Drop | boat 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_Arcade3.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 RiverRaidGame();
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 > Arcade 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/Arcade3/MyGame/. - Add
MyGameGame.csimplementingIMiniGame, decorated with[MiniGame("…", "My Game", Category = MiniGameCategory.Arcade3)]. - 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. arcade3_river_raid), 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.