Mini Game Templates · Arcade Pack

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

Unity 6000.0.62f1+10 games26 boosters40 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.

Brick BreakerBounce the ball, smash every brick, clear the wall.
Space InvadersBlast the descending alien swarm before it lands.
Maze MuncherMunch the pellets, dodge the ghosts, clear the maze.
AsteroidsRotate, thrust and blast the drifting rocks apart.
Road HopHop across traffic and rivers to reach the far side.
FlappyTap to flap through the pipe gaps — how far can you fly?
PongClassic paddle duel — first to 7 beats the AI.
Sky JumpBounce up the platforms as high as you can.
Block DropStack and clear falling blocks — don't reach the top.
Missile CommandTap to intercept incoming missiles and save your cities.
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-Arcade.unitypackage. If Unity offers to import TMP Essentials, accept — the demo UI uses TextMeshPro.
  2. Open Assets/MiniGameTemplates/Demo/MiniGameTemplates_Arcade.unity. The full demo is already baked into the scene.
  3. Press Play — the dashboard lists every Arcade 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 BrickBreakerGame();
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. "arcade_brick_breaker"
    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/Arcade/<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()

🎮 Brick Breaker

Bounce the ball, smash every brick, clear the wall.

How to play

  1. Drag (or ← → / A D) to slide your paddle and keep the ball in play.
  2. Smash every brick to clear the wall. Don't let the ball fall past you!

Boosters

BoosterKeyEffect
Wide PaddlewideWiden your paddle for 8 seconds.
Multi-BallmultiSplit into three balls at once.
Slow-MoslowSlow every ball down for 6 seconds.

Achievements

AchievementGoalReward
Wall Down
Clear your first wall of bricks.
1
Demolition
Smash 500 bricks in total.
500200 coins
Flawless Clear
Clear a wall without losing the ball.
1200 coins
High Roller
Reach a score of 2000.
2000250 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyBrickDifficulty.MediumStarting ball speed and ramp-up.

↑ Back to top

🎮 Space Invaders

Blast the descending alien swarm before it lands.

How to play

  1. Drag (or ← → / A D) to move your cannon; tap (or Space) to fire.
  2. Destroy every alien before the swarm reaches you. Hide behind the bunkers!

Boosters

BoosterKeyEffect
Rapid FirerapidFire much faster for 7 seconds.
ShieldshieldBlock alien fire for 7 seconds.
Smart BombbombWipe out the lowest row of aliens.

Achievements

AchievementGoalReward
First Wave
Clear your first wave of invaders.
1
Exterminator
Destroy 500 aliens in total.
500200 coins
Untouchable
Clear a wave without losing a life.
1200 coins
Sharpshooter
Reach a score of 1500.
1500250 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyInvadersDifficulty.MediumSwarm march speed and alien fire rate.

↑ Back to top

🎮 Maze Muncher

Munch the pellets, dodge the ghosts, clear the maze.

How to play

  1. Swipe (or use arrows / WASD) to steer through the maze and munch every pellet.
  2. Avoid the ghosts! Eat a big power pellet to turn them blue and gobble them for bonus points.

Boosters

BoosterKeyEffect
FreezefreezeFreeze the ghosts in place for 5 seconds.
Power PelletpowerTurn the ghosts edible right now.
Speed UpspeedMunch faster for 6 seconds.

Achievements

AchievementGoalReward
Maze Cleared
Clear your first maze.
1
Gobbler
Munch 1000 pellets in total.
1000200 coins
Ghost Buster
Eat 20 frightened ghosts.
20200 coins
Maze Master
Reach a score of 3000.
3000250 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyMazeDifficulty.MediumPlayer and ghost speed.

↑ Back to top

🎮 Asteroids

Rotate, thrust and blast the drifting rocks apart.

How to play

  1. Use ◄ ► to rotate, ▲ to thrust, and ● to fire (or A/D, W, Space).
  2. Shoot rocks to split them; clear them all. The screen wraps around the edges.

Boosters

BoosterKeyEffect
ShieldshieldBounce off rocks unharmed for 7 seconds.
Rapid FirerapidFire much faster for 7 seconds.
HyperspacehyperWarp to the centre with a moment of safety.

Achievements

AchievementGoalReward
Belt Cleared
Clear your first asteroid wave.
1
Asteroid Miner
Destroy 300 rocks in total.
300200 coins
Untouched
Clear a wave without losing a life.
1200 coins
Deep Space Ace
Reach a score of 2000.
2000250 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyAsteroidsDifficulty.MediumRock drift speed and count ramp.

↑ Back to top

🎮 Road Hop

Hop across traffic and rivers to reach the far side.

How to play

  1. Tap (or ↑ / W / swipe) to hop forward. Swipe or use arrows to move sideways.
  2. Dodge the traffic, ride the logs across the river, and reach the gold strip at the top.

Boosters

BoosterKeyEffect
Slow-MoslowSlow all traffic and currents for 6 seconds.
ShieldshieldSurvive cars and water for 6 seconds.

Achievements

AchievementGoalReward
First Crossing
Reach the far side once.
1
Road Warrior
Complete 25 crossings in total.
25200 coins
Highway Hero
Reach a score of 800.
800250 coins
Survivor
Complete 5 crossings in a single run.
5150 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyRoadDifficulty.MediumTraffic and current speed.

↑ Back to top

🎮 Flappy

Tap to flap through the pipe gaps — how far can you fly?

How to play

  1. Tap anywhere (or Space) to flap upward. Gravity does the rest.
  2. Steer through the gaps between pipes. One touch ends the flight!

Boosters

BoosterKeyEffect
ShieldshieldSurvive one crash for the next 6 seconds.
Slow-MoslowSlow the pipes down for 5 seconds.

Achievements

AchievementGoalReward
Fledgling
Pass 5 pipes in a single run.
5
Ace Pilot
Score 20 in a single run.
20150 coins
Sky Legend
Score 40 in a single run.
40300 coins
Frequent Flyer
Pass 150 pipes in total.
150150 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyFlappyDifficulty.MediumPipe scroll speed.

↑ Back to top

🎮 Pong

Classic paddle duel — first to 7 beats the AI.

How to play

  1. Drag (or use W/S · ↑/↓) to slide your paddle on the left.
  2. Return the ball past the AI. First to 7 points wins the match!

Boosters

BoosterKeyEffect
Big PaddlegrowEnlarge your paddle for 6 seconds.
Slow-MoslowSlow the ball down for 5 seconds.

Achievements

AchievementGoalReward
First Volley
Beat the AI once.
1
Table Champion
Win 10 matches.
10150 coins
Shutout
Win a match without conceding a single point.
1250 coins
Rally Master
Keep a single rally going for 15 returns.
15120 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyPongDifficulty.MediumAI paddle reaction speed / accuracy.

↑ Back to top

🎮 Sky Jump

Bounce up the platforms as high as you can.

How to play

  1. You bounce automatically. Steer left/right (drag · ← → · A D) onto the next platform.
  2. Climb as high as you can — blue platforms move, red ones crumble. Don't fall off the bottom!

Boosters

BoosterKeyEffect
JetpackjetpackBlast straight up for 2 seconds.
BubbleshieldSurvive one fall — bounces you back up.

Achievements

AchievementGoalReward
Cloud Niner
Climb to 100 m in a run.
100
Sky High
Climb to 300 m in a run.
300150 coins
Astronaut
Climb to 600 m in a run.
600300 coins
Springer
Bounce off 300 platforms in total.
300150 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultySkyJumpDifficulty.MediumFrequency of moving / breakable platforms.

↑ Back to top

🎮 Block Drop

Stack and clear falling blocks — don't reach the top.

How to play

  1. Use ◄ ► to move, Turn to rotate, ▼ to drop faster and Drop to slam down (or arrows / Space).
  2. Fill complete rows to clear them. Don't let the stack reach the top!

Boosters

BoosterKeyEffect
Slow FallslowHalve the fall speed for 8 seconds.
Clear RowsbombWipe out the bottom three rows.
Line PieceipieceMake the next piece a straight I-bar.

Achievements

AchievementGoalReward
Line Cleaner
Clear 100 lines in total.
100150 coins
Block Drop!
Clear four lines at once.
1250 coins
Speed Demon
Reach level 10.
10300 coins
Stacker
Reach a score of 5000.
5000200 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyBlockDropDifficulty.MediumStarting fall speed.

↑ Back to top

🎮 Missile Command

Tap to intercept incoming missiles and save your cities.

How to play

  1. Tap the sky to launch an interceptor; its blast destroys nearby enemy missiles.
  2. Protect your cities along the bottom. Lose them all and the game ends!

Boosters

BoosterKeyEffect
ReloadreloadRestock 16 interceptor missiles.
Big BlastbigLarger explosion radius for 8 seconds.
Slow-MoslowSlow incoming missiles for 6 seconds.

Achievements

AchievementGoalReward
Wave Defended
Survive your first wave.
1
Interceptor
Shoot down 300 missiles in total.
300200 coins
City Saver
Clear a wave without losing a city.
1200 coins
Defense Grid
Reach a score of 2000.
2000250 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyMissileDifficulty.MediumIncoming missile speed and spawn rate.

↑ 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
Brick Breakerwide multi slow
Space Invadersrapid shield bomb
Maze Muncherfreeze power speed
Asteroidsshield rapid hyper
Road Hopslow shield
Flappyshield slow
Ponggrow slow
Sky Jumpjetpack shield
Block Dropslow bomb ipiece
Missile Commandreload big 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

GameSlots
Brick Breakerpaddle ball brick background
Space Invadersplayer alien background
Maze Muncherplayer wall background
Asteroidsship asteroid background
Road Hopplayer car log background
Flappybird pipe background
Pongpaddle ball background
Sky Jumpplayer platform background
Block Dropbackground
Missile Commandcity 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_Arcade.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 BrickBreakerGame();
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, 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/Arcade/MyGame/.
  2. Add MyGameGame.cs implementing IMiniGame, decorated with [MiniGame("…", "My Game", Category = MiniGameCategory.Arcade)].
  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. arcade_brick_breaker), 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. ⭐