Mini Game Templates · Arcade 2.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-Arcade2.unitypackage. If Unity offers to import TMP Essentials, accept — the demo UI uses TextMeshPro. - Open
Assets/MiniGameTemplates/Demo/MiniGameTemplates_Arcade2.unity. The full demo is already baked into the scene. - Press Play — the dashboard lists every Arcade 2.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 CentipedeGame();
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. "arcade2_centipede"
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/Arcade2/<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()
🎮 Centipede
Blast the centipede before it reaches you.
How to play
- Move your shooter with drag, the arrow keys or A / D, and fire upward with tap or Space.
- Blast every segment of the marching centipede. A hit splits it and leaves a mushroom. Don't let it reach the bottom!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Rapid Fire | rapid | Fire much faster for a few seconds. |
| Slow Crawl | slow | Slow the centipede right down for a few seconds. |
| Bug Bomb | bomb | Wipe out a chunk of the centipede and every mushroom. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Bug Squasher Clear your first wave. | 1 | — |
| Exterminator Destroy 300 centipede segments in total. | 300 | 250 coins |
| Untouched Clear a wave without losing a life. | 1 | 150 coins |
| Pest Control Pro Reach a score of 2000. | 2000 | 300 coins |
Reskin slots
player segment background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | CentipedeDifficulty.Medium | Controls how fast the centipede marches and how long it starts. |
🎮 Galaga
Shoot the swarm — watch for divers!
How to play
- Drag (or ← → / A D) to move your fighter; tap (or Space) to fire upward.
- Blast the swarm — but watch out: aliens break off and dive at you. Dodge or shoot them down for bonus points!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Rapid Fire | rapid | Fire much faster for 7 seconds. |
| Shield | shield | Block the next hit, then brief invulnerability. |
| Smart Bomb | bomb | Destroy every diver and the front row of the swarm. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| First Swarm Clear your first wave. | 1 | — |
| Ace Pilot Shoot down 50 diving aliens. | 50 | 200 coins |
| Untouched Clear a wave without taking a hit. | 1 | 200 coins |
| Top Gun Reach a score of 2000. | 2000 | 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 | GalagaDifficulty.Medium | Controls how often and how fast aliens break formation to dive. |
🎮 Light Cycles
Outlast the AI — don't crash into the trails.
How to play
- You are the blue cycle. Steer with the arrow keys, WASD, or a swipe — you can't turn back on yourself.
- Both cycles leave a solid trail. Crash into a wall or any trail and you're out — box the orange AI in to win.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Phase | phase | Pass safely through the next trail cell you'd hit. |
| Slow | slow | Slow both cycles for a moment so you can plan. |
| Safe Dirs | hint | Flash the directions that are currently safe. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| First Blood Beat the AI once. | 1 | — |
| Grid Champion Win 10 duels. | 10 | 200 coins |
| Survivor Survive 100 ticks in a single round. | 100 | 150 coins |
| Flawless Win 5 duels without using a booster. | 5 | 300 coins |
Reskin slots
player_trail ai_trail background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | LightCyclesDifficulty.Medium | How fast the cycles move (and how aggressive the duel feels). |
🎮 Helicopter
Hold to rise, release to fall — fly through the cave.
How to play
- Hold the screen (or Space) to climb. Let go and gravity pulls you down.
- Thread the cave and dodge the blocks. One touch ends the flight — how far can you fly?
Boosters
| Booster | Key | Effect |
|---|---|---|
| Shield | shield | Survive the next crash and fly on briefly invulnerable. |
| Slow-Mo | slow | Slow the cave down for 5 seconds. |
| Wide Cave | wide | Widen the cave gap for 6 seconds. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Lift Off Fly 30m in a single run. | 30 | — |
| Cave Diver Fly 80m in a single run. | 80 | 150 coins |
| Ace Pilot Reach a best run of 40m. | 40 | 200 coins |
| Frequent Flyer Fly 1000m in total across all runs. | 1000 | 250 coins |
Reskin slots
copter wall background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | HelicopterDifficulty.Medium | Controls how fast the cave scrolls toward you. |
🎮 Stack
Drop each block to build the tallest tower.
How to play
- A block slides back and forth at the top. Tap anywhere to drop it onto the tower.
- Any overhang gets sliced off, so aim for a clean stack. Miss the tower entirely and it's over — how tall can you build?
Boosters
| Booster | Key | Effect |
|---|---|---|
| Slow Slide | slow | Slow the sliding block right down for the next few drops. |
| Wide Block | wide | The next block keeps its full width — no overhang is sliced off. |
| Auto Align | perfect | Snap the next drop to a perfect alignment. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Getting High Build a tower 15 blocks tall. | 15 | — |
| Skyscraper Build a tower 30 blocks tall. | 30 | 250 coins |
| Steady Hands Land 5 perfect drops in a row. | 5 | 200 coins |
| Master Builder Stack 500 blocks in total. | 500 | 300 coins |
Reskin slots
block background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | StackDifficulty.Medium | Controls the base slide speed and how fast it ramps up as the tower grows. |
🎮 Lunar Lander
Touch down softly on the pads — mind your fuel.
How to play
- Hold ▲ (or Space) to fire your thruster, and ◄ ► (or A D) to tilt. Thrusting burns fuel.
- Set down on a glowing pad — upright and slow. Smaller pads score more. Don't run out of fuel!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Refuel | refuel | Top the fuel tank back up. |
| Slow Fall | slowfall | Weaken gravity for a few seconds. |
| Auto-Brake | autobrake | Gently damp your velocity for a soft touchdown. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Touchdown Land softly on a pad for the first time. | 1 | — |
| Seasoned Pilot Land successfully 10 times. | 10 | 200 coins |
| Pinpoint Landing Set down on a small bonus pad. | 1 | 200 coins |
| Fuel Saver Land with more than half your fuel remaining. | 1 | 150 coins |
Reskin slots
lander terrain background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | LunarLanderDifficulty.Medium | Gravity strength, starting fuel and landing-pad size. |
🎮 Air Hockey
Slam the puck past the AI — first to 7.
How to play
- Drag your mallet around the bottom half. Swipe fast to slam the puck.
- Knock the puck into the AI's goal at the top. First to 7 goals wins!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Big Mallet | bigmallet | Enlarge your mallet for a few seconds. |
| Slow Puck | slowpuck | Slow the puck down briefly. |
| Freeze AI | freeze | Freeze the AI mallet for a moment. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Face-Off Win your first match. | 1 | — |
| Table Champion Win 10 matches. | 10 | 200 coins |
| Shutout Win a match without conceding a goal. | 1 | 150 coins |
| Puck Slammer Score 50 goals in total. | 50 | 150 coins |
Reskin slots
mallet puck background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | AirHockeyDifficulty.Medium | Controls how fast the AI mallet chases and defends. |
🎮 Tank Battle
Out-gun the enemy tank in the arena.
How to play
- You drive the blue tank. Hold the on-screen arrows (or A / D) to rotate and the forward button (or W) to drive along your barrel.
- Tap FIRE (or Space) to launch a shell. Hit the red tank to score — first to 5 hits wins the round. Mind the walls and blocks!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Rapid Fire | rapid | Fire faster, harder-hitting shells for a few seconds. |
| Shield | shield | Absorb the next hit without giving up a point. |
| Speed | speed | Drive and turn faster for a short burst. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| First Blood Win your first tank duel. | 1 | — |
| Commander Win 10 tank duels. | 10 | 250 coins |
| Sharpshooter Land 100 hits in total. | 100 | 200 coins |
| Untouchable Win a duel without being hit once. | 1 | 200 coins |
Reskin slots
player_tank enemy_tank background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | TankBattleDifficulty.Medium | How sharp the enemy tank aims, drives and fires. |
🎮 Jetpack Dash
Hold to fly, dodge the lasers, grab the coins.
How to play
- Hold the screen (or Space) to fire your jetpack and fly up. Let go to fall back down to the floor.
- Dodge the laser beams and scoop up coins. The further you run, the higher your score — how far can you go?
Boosters
| Booster | Key | Effect |
|---|---|---|
| Shield | shield | Survive one laser hit and gain a brief moment of invulnerability. |
| Coin Magnet | magnet | Pull nearby coins to you for a few seconds. |
| Slow-Mo | slow | Slow the scroll down for 5 seconds. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| First Flight Reach 40m in a single run. | 40 | — |
| Sky High Reach 100m in a single run. | 100 | 200 coins |
| Ace Runner Set a best run of at least 60m. | 60 | 150 coins |
| Coin Hoarder Collect 200 coins in total. | 200 | 150 coins |
Reskin slots
hero coin background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | JetpackDifficulty.Medium | Controls how fast the world scrolls and how densely lasers spawn. |
🎮 Pinball
Flip, bump and rack up points — keep the ball alive.
How to play
- Tap (or Space) to launch the ball up the right lane into play.
- Tap the LEFT or RIGHT half (or ◄ ► / A D) to flip. Smack the bumpers for points and keep the ball off the drain!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Extra Ball | extra_ball | Add one more ball to your run. |
| Slow-Mo | slow | Slow the ball down for 6 seconds for tighter control. |
| 2× Points | multiplier | Double every point you score for 8 seconds. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Table Talent Score 5,000 in a single run. | 5000 | — |
| Pinball Wizard Score 15,000 in a single run. | 15000 | 300 coins |
| Bumper Mania Strike bumpers 500 times in total. | 500 | 200 coins |
| Long Ball Keep a single ball alive for 30 seconds. | 30 | 150 coins |
Reskin slots
ball bumper background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | PinballDifficulty.Medium | Controls table gravity and launch speed. |
💥 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 |
|---|---|
| Centipede | rapid slow bomb |
| Galaga | rapid shield bomb |
| Light Cycles | phase slow hint |
| Helicopter | shield slow wide |
| Stack | slow wide perfect |
| Lunar Lander | refuel slowfall autobrake |
| Air Hockey | bigmallet slowpuck freeze |
| Tank Battle | rapid shield speed |
| Jetpack Dash | shield magnet slow |
| Pinball | extra_ball slow multiplier |
🏆 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 |
|---|---|
| Centipede | player segment background |
| Galaga | player alien background |
| Light Cycles | player_trail ai_trail background |
| Helicopter | copter wall background |
| Stack | block background |
| Lunar Lander | lander terrain background |
| Air Hockey | mallet puck background |
| Tank Battle | player_tank enemy_tank background |
| Jetpack Dash | hero coin background |
| Pinball | ball bumper 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_Arcade2.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 CentipedeGame();
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 2.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/Arcade2/MyGame/. - Add
MyGameGame.csimplementingIMiniGame, decorated with[MiniGame("…", "My Game", Category = MiniGameCategory.Arcade2)]. - 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. arcade2_centipede), 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.