Mini Game Templates · Arcade 3.0 Pack

Fast-action arcade templates with procedural visuals, mobile-friendly controls, scoring, and progression hooks.

Unity 6000.0.62f1+10 games30 boosters35 achievementsLiveOps Kit bundled

🏠 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.

River RaidFly the river, shoot enemies, grab fuel.
Bomb CatchCatch falling bombs before they hit the floor.
Turbo RacerDodge traffic at speed — distance is your score.
Cube HopHop the pyramid, flip every cube — dodge the chaser.
Duck ShootTap flying ducks before they escape.
TrampolineBounce the acrobat up to pop the balloons.
Mine CartJump the gaps and rocks — go the distance.
Laser RunThread the gaps in the scrolling laser walls.
Sky JugglerKeep all the bouncing balls aloft.
Sky DropCatch the parachutists before they splash down.
One contract, 10 implementations. Every game implements IMiniGame and is discovered automatically by reflection — no scene wiring, no prefab lists.

Shared capabilities

💥 BoostersPer-game power-ups with persistent counts and refund safety.
🏆 AchievementsProgression goals per game, tracked persistently, with coin rewards.
🎨 ReskinsDrop in your own art per slot, per game — no code required.
🎯 TutorialsFirst-run overlay walkthroughs, defined declaratively per game.
📈 Level scalingAuto-generated difficulty curves, editable in the Studio.
🌙 Light & darkOne toggle re-themes the chrome and every game.
🎁 LiveOps Kit bundledAds, IAP, haptics, rate-us, notifications and more — the full HyperCasual LiveOps Kit ships in this pack.

⚙ 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 changeWhere to find it
Game rules / difficulty / dimensionsStudio, or the game's <Game>Settings asset
Per-level difficulty curveStudio > game panel > Levels editor
Colours / overall lookMiniGameTheme asset, or the in-app DARK/LIGHT toggle
Game art (tiles, pieces, backgrounds…)Reskin system — Tools > Mini Game Templates > Reskin Editor
Boosters offeredEach game's <Game>BoosterSpec.cs
Deeper layout / behaviourThe game's <Game>Game.cs build code
Heads-up: because the UI is procedural, customization happens through data (settings assets, theme, reskins) rather than dragging things around a scene. The data-driven path covers day-to-day tweaks; source access covers the rest.

⚡ Quick start

  1. Import MiniGameTemplates-Arcade3.unitypackage. If Unity offers to import TMP Essentials, accept — the demo UI uses TextMeshPro.
  2. Open Assets/MiniGameTemplates/Demo/MiniGameTemplates_Arcade3.unity. The full demo is already baked into the scene.
  3. Press Play — the dashboard lists every Arcade 3.0 game; pick, play, and try the boosters and cheat rail.
  4. Open Tools > Mini Game Templates > Studio and tune any game's settings.
  5. (Optional) Open Tools > HLK > Guided Setup to configure the bundled LiveOps kit — ads, IAP, notifications, rate-us and more (see the LiveOps Kit section).
  6. To ship a single game inside your own UI, use the IMiniGame contract:
IMiniGame game = new RiverRaidGame();
game.Mount(hostRect, context);   // context : IMiniGameContext
// ... later, when done:
game.Unmount();
Tip: the demo scene's dashboard is a complete reference implementation of 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

RegistryDiscoversConvention
MiniGameRegistryIMiniGame classes with a [MiniGame] attributeone per game
Booster registryIBoosterSpec implementations<Game>BoosterSpec.cs
Achievement registryIAchievementSpec implementations<Game>AchievementSpec.cs
Reskin registryIReskinSpec implementations<Game>ReskinSpec.cs
Tutorial registryITutorialSpec 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
Modular by design. Delete any single game's folder and the rest keep working. Add a new game by mirroring the layout — no edits to any other file required.

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

  1. Drag (or use the arrow keys) to steer the jet left and right between the river banks.
  2. Tap or press Space to fire. Shoot ships and choppers, fly over the green F to refuel — don't crash or run dry!

Boosters

BoosterKeyEffect
RefuelrefuelInstantly fill the fuel tank.
ShieldshieldSurvive enemy contact for a few seconds.
Air StrikeblastDestroy every enemy on screen.

Achievements

AchievementGoalReward
Downstream
Reach a distance of 150.
150
River Master
Reach a distance of 400.
400250 coins
High Flyer
Score 600 in a single flight.
600400 coins
Sharpshooter
Destroy 200 enemies in total.
200200 coins

Reskin slots

jet bank background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.

Configurable settings

SettingDefaultWhat it does
DifficultyRiverDifficulty.MediumHow fast the river scrolls and how tightly the channel narrows.

↑ Back to top

🎮 Bomb Catch

Catch falling bombs before they hit the floor.

How to play

  1. The dropper at the top releases bombs. Slide your paddle to catch each one.
  2. Gold bombs are worth bonus points. Drop too many and it's game over — they speed up as you go!

Boosters

BoosterKeyEffect
MagnetmagnetPull falling bombs toward your paddle.
Wide PaddlewideWiden the paddle for a while.
DefusedefuseTake back one missed bomb.

Achievements

AchievementGoalReward
Steady Hands
Score 300 in a round.
300
Bomb Squad
Score 800 in a round.
800250 coins
Butterfingers Cured
Catch 500 bombs in total.
500200 coins

Reskin slots

paddle background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.

Configurable settings

SettingDefaultWhat it does
DifficultyBombDifficulty.MediumMiss budget and how fast bombs fall.

↑ Back to top

🎮 Turbo Racer

Dodge traffic at speed — distance is your score.

How to play

  1. Drag, use the arrow keys, or tap a side to steer your car across the lanes.
  2. Weave past the slower traffic. The road speeds up the further you go — distance is your score!

Boosters

BoosterKeyEffect
BumpershieldIgnore collisions for a few seconds.
BrakebrakeSlow the road right down briefly.
Nitro SweepclearBlow all traffic off the road.

Achievements

AchievementGoalReward
Open Road
Drive 300m in a run.
300
Speed Demon
Drive 800m in a run.
800250 coins
Highway Legend
Drive 1500m in a run.
1500400 coins
Overtaker
Pass 400 cars in total.
400200 coins

Reskin slots

car background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.

Configurable settings

SettingDefaultWhat it does
DifficultyRacerDifficulty.MediumBase road speed and traffic density.

↑ Back to top

🎮 Cube Hop

Hop the pyramid, flip every cube — dodge the chaser.

How to play

  1. Tap the corner buttons (or Q/E/Z/C) to hop diagonally across the pyramid. Each cube you land on flips colour.
  2. Flip every cube to clear the board. Avoid the blue chaser, and never hop off the edge!

Boosters

BoosterKeyEffect
Flip AroundflipFlip the cubes next to you.
FreezefreezeFreeze the chaser for a few seconds.
RepelwarpSend the chaser back to the bottom row.

Achievements

AchievementGoalReward
Pyramid Painter
Clear 5 boards in total.
5
Cube King
Score 400 in a run.
400250 coins
Busy Hopper
Flip 300 cubes in total.
300200 coins

Reskin slots

hopper cube background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.

Configurable settings

SettingDefaultWhat it does
DifficultyCubeDifficulty.MediumHow quickly the chaser hops after you.

↑ Back to top

🎮 Duck Shoot

Tap flying ducks before they escape.

How to play

  1. Tap a flying duck to bag it. Gold ducks are worth triple — but every tap, hit or miss, spends a shot.
  2. Each wave gives limited shots. Bag the quota before the ducks escape to move on!

Boosters

BoosterKeyEffect
Slow-MoslowSlow the ducks down to line up your shots.
Extra ShellsammoAdd 5 shots to this wave.
Scatter ShotscatterBag every duck on screen at once.

Achievements

AchievementGoalReward
Quick Draw
Reach wave 5.
5
Crack Shot
Score 500 in a run.
500250 coins
Duck Hunter
Bag 300 ducks in total.
300200 coins

Reskin slots

duck background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.

Configurable settings

SettingDefaultWhat it does
DifficultyDuckDifficulty.MediumHow fast the ducks fly across the screen.

↑ Back to top

🎮 Trampoline

Bounce the acrobat up to pop the balloons.

How to play

  1. Slide the trampoline left and right so the falling acrobat lands on it and bounces back up.
  2. Each bounce sends the acrobat into the balloons above — pop them for points. Don't let them hit the floor!

Boosters

BoosterKeyEffect
Pop RowpopInstantly pop the lowest balloon row.
Super BouncesuperBounce higher for a few seconds.
Wide BedwideWiden the trampoline briefly.

Achievements

AchievementGoalReward
On a Roll
Keep a rally of 20 bounces.
20
Big Top Star
Score 600 in a run.
600250 coins
Balloon Buster
Pop 200 balloons in total.
200200 coins
Spring Loaded
Bounce 400 times in total.
400150 coins

Reskin slots

trampoline actor background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.

Configurable settings

SettingDefaultWhat it does
DifficultyTrampolineDifficulty.MediumBounce power — lower means a faster, harder rally.

↑ Back to top

🎮 Mine Cart

Jump the gaps and rocks — go the distance.

How to play

  1. Tap (or press Space) to jump. Hold a little longer to jump higher over the gaps and rocks.
  2. The track keeps speeding up. Time your jumps and go as far as you can — distance is your score!

Boosters

BoosterKeyEffect
Hard HatshieldPass through obstacles unharmed briefly.
DynamiteclearBlast away all obstacles ahead.
Speed RunboostJump ahead 10 metres of distance.

Achievements

AchievementGoalReward
Down the Shaft
Travel 30m in a run.
30
Deep Miner
Travel 80m in a run.
80250 coins
Rail Legend
Travel 150m in a run.
150400 coins
Hop Along
Jump 400 times in total.
400150 coins

Reskin slots

cart background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.

Configurable settings

SettingDefaultWhat it does
DifficultyCartDifficulty.MediumBase track speed and obstacle spacing.

↑ Back to top

🎮 Laser Run

Thread the gaps in the scrolling laser walls.

How to play

  1. Drag up and down (or use W/S) to move your runner along the left side.
  2. Each laser wall has one safe gap. Line up and slip through — a single touch ends the run!

Boosters

BoosterKeyEffect
Phase OutphaseOpen the next wall's gap fully.
ShieldshieldAbsorb the next laser hit.
Slow FieldslowSlow the laser walls right down.

Achievements

AchievementGoalReward
Threading
Clear 20 walls in a run.
20
Slippery
Clear 50 walls in a run.
50250 coins
Untouchable
Clear 100 walls in a run.
100400 coins
Needle Worker
Clear 500 walls in total.
500200 coins

Reskin slots

runner laser background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.

Configurable settings

SettingDefaultWhat it does
DifficultyLaserDifficulty.MediumWall speed and how tight the safe gaps are.

↑ Back to top

🎮 Sky Juggler

Keep all the bouncing balls aloft.

How to play

  1. Slide your paddle along the bottom to bat each falling ball back up.
  2. More balls join as you go. Drop one and you lose a life — keep them all aloft to score!

Boosters

BoosterKeyEffect
Reset TossresetPop every ball straight up to regroup.
Wide PaddlewideWiden the paddle for a while.
Power BatboostBat balls higher for a few seconds.

Achievements

AchievementGoalReward
Warmed Up
Score 150 in a run.
150
Tireless Hands
Make 600 hits in total.
600200 coins
Juggling Master
Score 500 in a run.
500400 coins

Reskin slots

paddle ball background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.

Configurable settings

SettingDefaultWhat it does
DifficultyJugglerDifficulty.MediumStarting ball count and how fast new balls are added.

↑ Back to top

🎮 Sky Drop

Catch the parachutists before they splash down.

How to play

  1. Slide the boat along the water so its net is under each falling parachutist.
  2. They sway as they fall — golden VIPs are worth a bonus. Let one splash down and you lose a life!

Boosters

BoosterKeyEffect
UpdraftslowSlow the falling parachutists down.
Wide NetwideWiden the boat and net for a while.
Mass RescuerescueCatch every parachutist on screen at once.

Achievements

AchievementGoalReward
Lifesaver
Score 300 in a run.
300
Coast Guard
Score 800 in a run.
800250 coins
No One Left Behind
Rescue 500 parachutists in total.
500200 coins

Reskin slots

boat background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.

Configurable settings

SettingDefaultWhat it does
DifficultyDropDifficulty.MediumLife budget and how fast the parachutists fall.

↑ Back to top

💥 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
}
Refund safety: returning 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

GameBooster keys
River Raidrefuel shield blast
Bomb Catchmagnet wide defuse
Turbo Racershield brake clear
Cube Hopflip freeze warp
Duck Shootslow ammo scatter
Trampolinepop super wide
Mine Cartshield clear boost
Laser Runphase shield slow
Sky Jugglerreset wide boost
Sky Dropslow 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

GameSlots
River Raidjet bank background
Bomb Catchpaddle background
Turbo Racercar background
Cube Hophopper cube background
Duck Shootduck background
Trampolinetrampoline actor background
Mine Cartcart background
Laser Runrunner laser background
Sky Jugglerpaddle ball background
Sky Dropboat background
Sprite-only. The reskin system swaps sprites — layouts, colours and animations stay the same. Until custom art is added the games use clean procedural sprites and the pill shows 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.

Tip: when customizing, read colours from 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:

AdsRewarded, interstitial and banner service with mediation backends (AdMob, LevelPlay, AppLovin, Unity Ads). Runs a safe mock backend until a real SDK is installed.
IAPUnity Purchasing integration with catalog, dummy store for testing, and purchase-reward hooks.
HapticsCross-platform vibration service — already wired to every game's audio events in this demo.
Rate UsNative store-review prompts (Android in-app review / iOS SKStoreReviewController) with dummy editor backend.
NotificationsLocal notification scheduling with permission flow (mobile packages activate it).
Consent & privacyGoogle UMP / Apple ATT consent flow with editor-safe dummy backend.
Analytics & crashPluggable analytics (Unity Analytics / Firebase) and crash-reporter hooks.
Retention systemsDaily rewards, quests, battle pass, energy, offers, shop, unlocks, deep links, sharing, update prompt.

How it is hooked up in this demo

Setup & going live

  1. Everything works out of the box in the editor with mock/dummy backends — no SDKs required, nothing to configure for the demo.
  2. Open Tools > HLK > Open Toolset (or Tools > HLK > Guided Setup) to configure ad units, IAP products, notifications, rate-us and the rest.
  3. 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.
No SDK binaries ship in this package. The kit is pure source with optional integrations — it compiles clean in an empty project and lights up real providers only when you add them.

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       */ });
Always 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

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

  1. Create Assets/MiniGameTemplates/Runtime/Arcade3/MyGame/.
  2. Add MyGameGame.cs implementing IMiniGame, decorated with [MiniGame("…", "My Game", Category = MiniGameCategory.Arcade3)].
  3. Add MyGameSettings (optional) with a static Default getter.
  4. Add the spec files — MyGameBoosterSpec, MyGameAchievementSpec, MyGameReskinSpec, MyGameTutorialSpec — all auto-discovered.
  5. 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.

Enjoying the pack? Reviews on the Asset Store are the biggest help to an indie publisher — if this pack saved you time, a star rating is hugely appreciated. ⭐