Mini Game Templates · Arcade 4.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-Arcade4.unitypackage. If Unity offers to import TMP Essentials, accept — the demo UI uses TextMeshPro. - Open
Assets/MiniGameTemplates/Demo/MiniGameTemplates_Arcade4.unity. The full demo is already baked into the scene. - Press Play — the dashboard lists every Arcade 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 SlalomGame();
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. "arcade4_slalom"
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/Arcade4/<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()
🎮 Ski Slalom
Steer between gate flags and dodge the trees.
How to play
- Drag left and right (or use A/D) to steer your skier as the slope rushes up.
- Pass between each pair of gate flags and dodge the trees. Miss a gate or clip a tree and the run ends.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Widen Gate | widen | Open the next gate ahead wide. |
| Snow Shield | shield | Plough through trees and missed gates for a while. |
| Slow Slope | slow | Slow the downhill scroll right down. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Carving Pass 20 gates in a run. | 20 | — |
| Downhill Demon Pass 50 gates in a run. | 50 | 250 coins |
| Gold Medal Pass 100 gates in a run. | 100 | 400 coins |
| Slalom Season Pass 500 gates in total. | 500 | 200 coins |
Reskin slots
skier flag snow — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | SlalomDifficulty.Medium | Downhill speed and how tight the gates are. |
🎮 Pop the Lock
Tap as the sweeping marker hits the glowing notch.
How to play
- A marker sweeps around the ring. Tap (or press Space) the instant it reaches the glowing notch.
- Each hit moves the notch and speeds up. Land enough pins to crack the lock — but tap off the notch and it jams.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Wide Notch | widen | Widen the hit window for the current lock. |
| Freeze | freeze | Slow the sweep right down for a few seconds. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Picking Up Land 25 pins in a single run. | 25 | — |
| Master Locksmith Land 60 pins in a single run. | 60 | 300 coins |
| Vault Cracker Crack 5 locks in one run. | 5 | 250 coins |
| Tumbler Tamer Land 400 pins in total. | 400 | 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 | PopLockDifficulty.Medium | Sweep speed and how tight the hit window is. |
🎮 Jump Rope
Tap to hop the swinging rope; it turns ever faster.
How to play
- Tap (or press Space) to hop just as the rope sweeps across the ground.
- Time it right and you clear the rope. It turns faster the longer you skip — let it catch your feet and you trip.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Auto Spring | spring | Hop the very next rope pass automatically. |
| Slow Rope | slow | Slow the rope's turn for a few seconds. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Skipping Along Clear 25 jumps in a run. | 25 | — |
| Double Dutch Clear 60 jumps in a run. | 60 | 250 coins |
| Rope Champion Clear 120 jumps in a run. | 120 | 400 coins |
| Cardio King Clear 600 jumps in total. | 600 | 200 coins |
Reskin slots
player rope background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | JumpRopeDifficulty.Medium | How fast the rope turns to start with. |
🎮 Tug of War
Tap faster than the AI to drag the rope to your line.
How to play
- Tap as fast as you can (or press Space) to haul the rope marker toward your green line on the right.
- The AI pulls left. Drag the marker past your line to take the round; first to three rounds wins the match.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Anchor | anchor | Freeze the AI's next few pulls. |
| Power Surge | power | Each tap counts double for a few seconds. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| First Blood Win a match. | 1 | — |
| Clean Sweep Win a match without losing a round. | 1 | 250 coins |
| Heave Ho Win 30 rounds in total. | 30 | 200 coins |
| Rope Burn Play 80 rounds in total. | 80 | 150 coins |
Reskin slots
marker background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | TugDifficulty.Medium | How fast and hard the AI pulls. |
🎮 Meteor Dodge
Drag your ship to weave between falling meteors.
How to play
- Drag your ship anywhere in the field (or use WASD / arrows) to fly around.
- Meteors rain from the top and the storm thickens over time. One hit ends the run — survive as long as you can.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Vaporise | clear | Blast every meteor on screen right now. |
| Shield | shield | Soak up meteor hits for a few seconds. |
| Slow Storm | slow | Slow the meteors right down. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Steady Hands Survive 15 seconds in a run. | 15 | — |
| Storm Chaser Survive 40 seconds in a run. | 40 | 250 coins |
| Untouchable Reach a score of 800. | 800 | 400 coins |
| Asteroid Field Dodge 1000 meteors in total. | 1000 | 200 coins |
Reskin slots
ship meteor background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | MeteorDifficulty.Medium | Fall speed and how dense the meteor storm gets. |
🎮 Color Switch
Flap up through the gate arc matching your ball's colour.
How to play
- Tap (or press Space) to flap your ball upward against gravity.
- Each spinning gate lets you through only via the arc matching your ball's colour. Grab a switch dot to change colour.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Free Pass | pass | Pass through any colour for a few seconds. |
| Slow Spin | slow | Slow the gates' spin right down. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Colour Coded Pass 15 gates in a run. | 15 | — |
| Spectrum Runner Pass 40 gates in a run. | 40 | 250 coins |
| Prism Master Pass 90 gates in a run. | 90 | 400 coins |
| Kaleidoscope Pass 600 gates in total. | 600 | 200 coins |
Reskin slots
ball background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | ColorSwitchDifficulty.Medium | Gravity and how fast the gates spin. |
🎮 Orbit
Tap to flip your satellite's orbit; grab stars, dodge debris.
How to play
- Your satellite circles the planet. Tap (or press Space) to flip its direction of travel.
- Sweep over the green stars to collect them; flip away before you reach the red debris. One collision ends the orbit.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Sweep Debris | clear | Clear all debris from the ring right now. |
| Shield | shield | Pass through debris unharmed for a few seconds. |
| Slow Orbit | slow | Slow the satellite right down. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Stargazer Collect 20 stars in a run. | 20 | — |
| Constellation Collect 50 stars in a run. | 50 | 250 coins |
| Cosmonaut Collect 100 stars in a run. | 100 | 400 coins |
| Galaxy Hoarder Collect 800 stars in total. | 800 | 200 coins |
Reskin slots
satellite planet background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | OrbitDifficulty.Medium | How fast the satellite circles to start with. |
🎮 Knife Hit
Throw knives into the spinning log without hitting one.
How to play
- Tap (or press Space) to fling the waiting knife up into the spinning log.
- Fill the stage quota to advance to a faster log — but bury a knife into one already stuck and it's over.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Safe Throw | shield | The next throw lands safely even if it would clash. |
| Slow Log | slow | Halve the log's spin speed for this stage. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Sharp Eye Land 25 knives in a run. | 25 | — |
| Stage Hand Reach stage 6 in a run. | 6 | 250 coins |
| Blade Master Land 70 knives in a run. | 70 | 400 coins |
| Whittler Land 500 knives in total. | 500 | 200 coins |
Reskin slots
knife log background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | KnifeDifficulty.Medium | How fast the log spins to start with. |
🎮 Circle Guard
Spin the shield arc to block shots coming from all sides.
How to play
- Hold (or press Space) to spin the glowing shield arc around the core. A tap flips its direction.
- Shots streak in from every side. Line the shield up with each one to deflect it. Let one reach the core and it shatters.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Wide Shield | wide | Widen the shield arc for the rest of the run. |
| Pulse Blast | clear | Vaporise every shot on screen right now. |
| Slow Barrage | slow | Slow the incoming shots right down. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| On Guard Block 25 shots in a run. | 25 | — |
| Bulwark Block 60 shots in a run. | 60 | 250 coins |
| Impenetrable Block 120 shots in a run. | 120 | 400 coins |
| Aegis Block 800 shots in total. | 800 | 200 coins |
Reskin slots
core background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | GuardDifficulty.Medium | Shield arc width, spin speed and how fast shots fly. |
🎮 Fireworks
Tap to detonate each rocket at the peak of its arc.
How to play
- Rockets rise and slow near their peak. Tap (or press Space) to detonate the highest one — closer to the peak scores more.
- Chain perfect pops to build a combo multiplier. Let a rocket fizzle past its peak and you lose a life.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Perfect Pop | auto | Detonate the best-placed rocket perfectly right now. |
| Slow Sky | slow | Slow the rising rockets right down. |
| Spare Rocket | life | Gain an extra life. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Sparkler Reach a score of 1500 in a run. | 1500 | — |
| Chain Reaction Build a perfect combo of 8. | 8 | 250 coins |
| Grand Finale Reach a score of 5000 in a run. | 5000 | 400 coins |
| Pyrotechnician Detonate 600 rockets in total. | 600 | 200 coins |
Reskin slots
rocket sky — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | FireworksDifficulty.Medium | How fast rockets rise and how often they launch. |
💥 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 |
|---|---|
| Ski Slalom | widen shield slow |
| Pop the Lock | widen freeze |
| Jump Rope | spring slow |
| Tug of War | anchor power |
| Meteor Dodge | clear shield slow |
| Color Switch | pass slow |
| Orbit | clear shield slow |
| Knife Hit | shield slow |
| Circle Guard | wide clear slow |
| Fireworks | auto slow life |
🏆 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 |
|---|---|
| Ski Slalom | skier flag snow |
| Pop the Lock | marker background |
| Jump Rope | player rope background |
| Tug of War | marker background |
| Meteor Dodge | ship meteor background |
| Color Switch | ball background |
| Orbit | satellite planet background |
| Knife Hit | knife log background |
| Circle Guard | core background |
| Fireworks | rocket sky |
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_Arcade4.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 SlalomGame();
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 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/Arcade4/MyGame/. - Add
MyGameGame.csimplementingIMiniGame, decorated with[MiniGame("…", "My Game", Category = MiniGameCategory.Arcade4)]. - 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. arcade4_slalom), 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.