Mini Game Templates · Arcade 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-Arcade.unitypackage. If Unity offers to import TMP Essentials, accept — the demo UI uses TextMeshPro. - Open
Assets/MiniGameTemplates/Demo/MiniGameTemplates_Arcade.unity. The full demo is already baked into the scene. - Press Play — the dashboard lists every Arcade 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 BrickBreakerGame();
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. "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
| 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/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
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
- Drag (or ← → / A D) to slide your paddle and keep the ball in play.
- Smash every brick to clear the wall. Don't let the ball fall past you!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Wide Paddle | wide | Widen your paddle for 8 seconds. |
| Multi-Ball | multi | Split into three balls at once. |
| Slow-Mo | slow | Slow every ball down for 6 seconds. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Wall Down Clear your first wall of bricks. | 1 | — |
| Demolition Smash 500 bricks in total. | 500 | 200 coins |
| Flawless Clear Clear a wall without losing the ball. | 1 | 200 coins |
| High Roller Reach a score of 2000. | 2000 | 250 coins |
Reskin slots
paddle ball brick background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | BrickDifficulty.Medium | Starting ball speed and ramp-up. |
🎮 Space Invaders
Blast the descending alien swarm before it lands.
How to play
- Drag (or ← → / A D) to move your cannon; tap (or Space) to fire.
- Destroy every alien before the swarm reaches you. Hide behind the bunkers!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Rapid Fire | rapid | Fire much faster for 7 seconds. |
| Shield | shield | Block alien fire for 7 seconds. |
| Smart Bomb | bomb | Wipe out the lowest row of aliens. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| First Wave Clear your first wave of invaders. | 1 | — |
| Exterminator Destroy 500 aliens in total. | 500 | 200 coins |
| Untouchable Clear a wave without losing a life. | 1 | 200 coins |
| Sharpshooter Reach a score of 1500. | 1500 | 250 coins |
Reskin slots
player alien background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | InvadersDifficulty.Medium | Swarm march speed and alien fire rate. |
🎮 Maze Muncher
Munch the pellets, dodge the ghosts, clear the maze.
How to play
- Swipe (or use arrows / WASD) to steer through the maze and munch every pellet.
- Avoid the ghosts! Eat a big power pellet to turn them blue and gobble them for bonus points.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Freeze | freeze | Freeze the ghosts in place for 5 seconds. |
| Power Pellet | power | Turn the ghosts edible right now. |
| Speed Up | speed | Munch faster for 6 seconds. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Maze Cleared Clear your first maze. | 1 | — |
| Gobbler Munch 1000 pellets in total. | 1000 | 200 coins |
| Ghost Buster Eat 20 frightened ghosts. | 20 | 200 coins |
| Maze Master Reach a score of 3000. | 3000 | 250 coins |
Reskin slots
player wall background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | MazeDifficulty.Medium | Player and ghost speed. |
🎮 Asteroids
Rotate, thrust and blast the drifting rocks apart.
How to play
- Use ◄ ► to rotate, ▲ to thrust, and ● to fire (or A/D, W, Space).
- Shoot rocks to split them; clear them all. The screen wraps around the edges.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Shield | shield | Bounce off rocks unharmed for 7 seconds. |
| Rapid Fire | rapid | Fire much faster for 7 seconds. |
| Hyperspace | hyper | Warp to the centre with a moment of safety. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Belt Cleared Clear your first asteroid wave. | 1 | — |
| Asteroid Miner Destroy 300 rocks in total. | 300 | 200 coins |
| Untouched Clear a wave without losing a life. | 1 | 200 coins |
| Deep Space Ace Reach a score of 2000. | 2000 | 250 coins |
Reskin slots
ship asteroid background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | AsteroidsDifficulty.Medium | Rock drift speed and count ramp. |
🎮 Road Hop
Hop across traffic and rivers to reach the far side.
How to play
- Tap (or ↑ / W / swipe) to hop forward. Swipe or use arrows to move sideways.
- Dodge the traffic, ride the logs across the river, and reach the gold strip at the top.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Slow-Mo | slow | Slow all traffic and currents for 6 seconds. |
| Shield | shield | Survive cars and water for 6 seconds. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| First Crossing Reach the far side once. | 1 | — |
| Road Warrior Complete 25 crossings in total. | 25 | 200 coins |
| Highway Hero Reach a score of 800. | 800 | 250 coins |
| Survivor Complete 5 crossings in a single run. | 5 | 150 coins |
Reskin slots
player car log background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | RoadDifficulty.Medium | Traffic and current speed. |
🎮 Flappy
Tap to flap through the pipe gaps — how far can you fly?
How to play
- Tap anywhere (or Space) to flap upward. Gravity does the rest.
- Steer through the gaps between pipes. One touch ends the flight!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Shield | shield | Survive one crash for the next 6 seconds. |
| Slow-Mo | slow | Slow the pipes down for 5 seconds. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Fledgling Pass 5 pipes in a single run. | 5 | — |
| Ace Pilot Score 20 in a single run. | 20 | 150 coins |
| Sky Legend Score 40 in a single run. | 40 | 300 coins |
| Frequent Flyer Pass 150 pipes in total. | 150 | 150 coins |
Reskin slots
bird pipe background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | FlappyDifficulty.Medium | Pipe scroll speed. |
🎮 Pong
Classic paddle duel — first to 7 beats the AI.
How to play
- Drag (or use W/S · ↑/↓) to slide your paddle on the left.
- Return the ball past the AI. First to 7 points wins the match!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Big Paddle | grow | Enlarge your paddle for 6 seconds. |
| Slow-Mo | slow | Slow the ball down for 5 seconds. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| First Volley Beat the AI once. | 1 | — |
| Table Champion Win 10 matches. | 10 | 150 coins |
| Shutout Win a match without conceding a single point. | 1 | 250 coins |
| Rally Master Keep a single rally going for 15 returns. | 15 | 120 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 | PongDifficulty.Medium | AI paddle reaction speed / accuracy. |
🎮 Sky Jump
Bounce up the platforms as high as you can.
How to play
- You bounce automatically. Steer left/right (drag · ← → · A D) onto the next platform.
- Climb as high as you can — blue platforms move, red ones crumble. Don't fall off the bottom!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Jetpack | jetpack | Blast straight up for 2 seconds. |
| Bubble | shield | Survive one fall — bounces you back up. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Cloud Niner Climb to 100 m in a run. | 100 | — |
| Sky High Climb to 300 m in a run. | 300 | 150 coins |
| Astronaut Climb to 600 m in a run. | 600 | 300 coins |
| Springer Bounce off 300 platforms in total. | 300 | 150 coins |
Reskin slots
player platform background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | SkyJumpDifficulty.Medium | Frequency of moving / breakable platforms. |
🎮 Block Drop
Stack and clear falling blocks — don't reach the top.
How to play
- Use ◄ ► to move, Turn to rotate, ▼ to drop faster and Drop to slam down (or arrows / Space).
- Fill complete rows to clear them. Don't let the stack reach the top!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Slow Fall | slow | Halve the fall speed for 8 seconds. |
| Clear Rows | bomb | Wipe out the bottom three rows. |
| Line Piece | ipiece | Make the next piece a straight I-bar. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Line Cleaner Clear 100 lines in total. | 100 | 150 coins |
| Block Drop! Clear four lines at once. | 1 | 250 coins |
| Speed Demon Reach level 10. | 10 | 300 coins |
| Stacker Reach a score of 5000. | 5000 | 200 coins |
Reskin slots
background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | BlockDropDifficulty.Medium | Starting fall speed. |
🎮 Missile Command
Tap to intercept incoming missiles and save your cities.
How to play
- Tap the sky to launch an interceptor; its blast destroys nearby enemy missiles.
- Protect your cities along the bottom. Lose them all and the game ends!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Reload | reload | Restock 16 interceptor missiles. |
| Big Blast | big | Larger explosion radius for 8 seconds. |
| Slow-Mo | slow | Slow incoming missiles for 6 seconds. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Wave Defended Survive your first wave. | 1 | — |
| Interceptor Shoot down 300 missiles in total. | 300 | 200 coins |
| City Saver Clear a wave without losing a city. | 1 | 200 coins |
| Defense Grid Reach a score of 2000. | 2000 | 250 coins |
Reskin slots
city background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | MissileDifficulty.Medium | Incoming missile speed and spawn rate. |
💥 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 |
|---|---|
| Brick Breaker | wide multi slow |
| Space Invaders | rapid shield bomb |
| Maze Muncher | freeze power speed |
| Asteroids | shield rapid hyper |
| Road Hop | slow shield |
| Flappy | shield slow |
| Pong | grow slow |
| Sky Jump | jetpack shield |
| Block Drop | slow bomb ipiece |
| Missile Command | reload 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
| Game | Slots |
|---|---|
| Brick Breaker | paddle ball brick background |
| Space Invaders | player alien background |
| Maze Muncher | player wall background |
| Asteroids | ship asteroid background |
| Road Hop | player car log background |
| Flappy | bird pipe background |
| Pong | paddle ball background |
| Sky Jump | player platform background |
| Block Drop | background |
| Missile Command | city 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_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 */ });
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
- 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/Arcade/MyGame/. - Add
MyGameGame.csimplementingIMiniGame, decorated with[MiniGame("…", "My Game", Category = MiniGameCategory.Arcade)]. - 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. 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.