Mini Game Templates · Arcade 2.0 Pack

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

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

CentipedeBlast the centipede before it reaches you.
GalagaShoot the swarm — watch for divers!
Light CyclesOutlast the AI — don't crash into the trails.
HelicopterHold to rise, release to fall — fly through the cave.
StackDrop each block to build the tallest tower.
Lunar LanderTouch down softly on the pads — mind your fuel.
Air HockeySlam the puck past the AI — first to 7.
Tank BattleOut-gun the enemy tank in the arena.
Jetpack DashHold to fly, dodge the lasers, grab the coins.
PinballFlip, bump and rack up points — keep the ball alive.
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-Arcade2.unitypackage. If Unity offers to import TMP Essentials, accept — the demo UI uses TextMeshPro.
  2. Open Assets/MiniGameTemplates/Demo/MiniGameTemplates_Arcade2.unity. The full demo is already baked into the scene.
  3. Press Play — the dashboard lists every Arcade 2.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 CentipedeGame();
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. "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

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/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
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()

🎮 Centipede

Blast the centipede before it reaches you.

How to play

  1. Move your shooter with drag, the arrow keys or A / D, and fire upward with tap or Space.
  2. Blast every segment of the marching centipede. A hit splits it and leaves a mushroom. Don't let it reach the bottom!

Boosters

BoosterKeyEffect
Rapid FirerapidFire much faster for a few seconds.
Slow CrawlslowSlow the centipede right down for a few seconds.
Bug BombbombWipe out a chunk of the centipede and every mushroom.

Achievements

AchievementGoalReward
Bug Squasher
Clear your first wave.
1
Exterminator
Destroy 300 centipede segments in total.
300250 coins
Untouched
Clear a wave without losing a life.
1150 coins
Pest Control Pro
Reach a score of 2000.
2000300 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyCentipedeDifficulty.MediumControls how fast the centipede marches and how long it starts.

↑ Back to top

🎮 Galaga

Shoot the swarm — watch for divers!

How to play

  1. Drag (or ← → / A D) to move your fighter; tap (or Space) to fire upward.
  2. Blast the swarm — but watch out: aliens break off and dive at you. Dodge or shoot them down for bonus points!

Boosters

BoosterKeyEffect
Rapid FirerapidFire much faster for 7 seconds.
ShieldshieldBlock the next hit, then brief invulnerability.
Smart BombbombDestroy every diver and the front row of the swarm.

Achievements

AchievementGoalReward
First Swarm
Clear your first wave.
1
Ace Pilot
Shoot down 50 diving aliens.
50200 coins
Untouched
Clear a wave without taking a hit.
1200 coins
Top Gun
Reach a score of 2000.
2000250 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyGalagaDifficulty.MediumControls how often and how fast aliens break formation to dive.

↑ Back to top

🎮 Light Cycles

Outlast the AI — don't crash into the trails.

How to play

  1. You are the blue cycle. Steer with the arrow keys, WASD, or a swipe — you can't turn back on yourself.
  2. 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

BoosterKeyEffect
PhasephasePass safely through the next trail cell you'd hit.
SlowslowSlow both cycles for a moment so you can plan.
Safe DirshintFlash the directions that are currently safe.

Achievements

AchievementGoalReward
First Blood
Beat the AI once.
1
Grid Champion
Win 10 duels.
10200 coins
Survivor
Survive 100 ticks in a single round.
100150 coins
Flawless
Win 5 duels without using a booster.
5300 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyLightCyclesDifficulty.MediumHow fast the cycles move (and how aggressive the duel feels).

↑ Back to top

🎮 Helicopter

Hold to rise, release to fall — fly through the cave.

How to play

  1. Hold the screen (or Space) to climb. Let go and gravity pulls you down.
  2. Thread the cave and dodge the blocks. One touch ends the flight — how far can you fly?

Boosters

BoosterKeyEffect
ShieldshieldSurvive the next crash and fly on briefly invulnerable.
Slow-MoslowSlow the cave down for 5 seconds.
Wide CavewideWiden the cave gap for 6 seconds.

Achievements

AchievementGoalReward
Lift Off
Fly 30m in a single run.
30
Cave Diver
Fly 80m in a single run.
80150 coins
Ace Pilot
Reach a best run of 40m.
40200 coins
Frequent Flyer
Fly 1000m in total across all runs.
1000250 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyHelicopterDifficulty.MediumControls how fast the cave scrolls toward you.

↑ Back to top

🎮 Stack

Drop each block to build the tallest tower.

How to play

  1. A block slides back and forth at the top. Tap anywhere to drop it onto the tower.
  2. 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

BoosterKeyEffect
Slow SlideslowSlow the sliding block right down for the next few drops.
Wide BlockwideThe next block keeps its full width — no overhang is sliced off.
Auto AlignperfectSnap the next drop to a perfect alignment.

Achievements

AchievementGoalReward
Getting High
Build a tower 15 blocks tall.
15
Skyscraper
Build a tower 30 blocks tall.
30250 coins
Steady Hands
Land 5 perfect drops in a row.
5200 coins
Master Builder
Stack 500 blocks in total.
500300 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyStackDifficulty.MediumControls the base slide speed and how fast it ramps up as the tower grows.

↑ Back to top

🎮 Lunar Lander

Touch down softly on the pads — mind your fuel.

How to play

  1. Hold ▲ (or Space) to fire your thruster, and ◄ ► (or A D) to tilt. Thrusting burns fuel.
  2. Set down on a glowing pad — upright and slow. Smaller pads score more. Don't run out of fuel!

Boosters

BoosterKeyEffect
RefuelrefuelTop the fuel tank back up.
Slow FallslowfallWeaken gravity for a few seconds.
Auto-BrakeautobrakeGently damp your velocity for a soft touchdown.

Achievements

AchievementGoalReward
Touchdown
Land softly on a pad for the first time.
1
Seasoned Pilot
Land successfully 10 times.
10200 coins
Pinpoint Landing
Set down on a small bonus pad.
1200 coins
Fuel Saver
Land with more than half your fuel remaining.
1150 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyLunarLanderDifficulty.MediumGravity strength, starting fuel and landing-pad size.

↑ Back to top

🎮 Air Hockey

Slam the puck past the AI — first to 7.

How to play

  1. Drag your mallet around the bottom half. Swipe fast to slam the puck.
  2. Knock the puck into the AI's goal at the top. First to 7 goals wins!

Boosters

BoosterKeyEffect
Big MalletbigmalletEnlarge your mallet for a few seconds.
Slow PuckslowpuckSlow the puck down briefly.
Freeze AIfreezeFreeze the AI mallet for a moment.

Achievements

AchievementGoalReward
Face-Off
Win your first match.
1
Table Champion
Win 10 matches.
10200 coins
Shutout
Win a match without conceding a goal.
1150 coins
Puck Slammer
Score 50 goals in total.
50150 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyAirHockeyDifficulty.MediumControls how fast the AI mallet chases and defends.

↑ Back to top

🎮 Tank Battle

Out-gun the enemy tank in the arena.

How to play

  1. 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.
  2. 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

BoosterKeyEffect
Rapid FirerapidFire faster, harder-hitting shells for a few seconds.
ShieldshieldAbsorb the next hit without giving up a point.
SpeedspeedDrive and turn faster for a short burst.

Achievements

AchievementGoalReward
First Blood
Win your first tank duel.
1
Commander
Win 10 tank duels.
10250 coins
Sharpshooter
Land 100 hits in total.
100200 coins
Untouchable
Win a duel without being hit once.
1200 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyTankBattleDifficulty.MediumHow sharp the enemy tank aims, drives and fires.

↑ Back to top

🎮 Jetpack Dash

Hold to fly, dodge the lasers, grab the coins.

How to play

  1. Hold the screen (or Space) to fire your jetpack and fly up. Let go to fall back down to the floor.
  2. Dodge the laser beams and scoop up coins. The further you run, the higher your score — how far can you go?

Boosters

BoosterKeyEffect
ShieldshieldSurvive one laser hit and gain a brief moment of invulnerability.
Coin MagnetmagnetPull nearby coins to you for a few seconds.
Slow-MoslowSlow the scroll down for 5 seconds.

Achievements

AchievementGoalReward
First Flight
Reach 40m in a single run.
40
Sky High
Reach 100m in a single run.
100200 coins
Ace Runner
Set a best run of at least 60m.
60150 coins
Coin Hoarder
Collect 200 coins in total.
200150 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyJetpackDifficulty.MediumControls how fast the world scrolls and how densely lasers spawn.

↑ Back to top

🎮 Pinball

Flip, bump and rack up points — keep the ball alive.

How to play

  1. Tap (or Space) to launch the ball up the right lane into play.
  2. Tap the LEFT or RIGHT half (or ◄ ► / A D) to flip. Smack the bumpers for points and keep the ball off the drain!

Boosters

BoosterKeyEffect
Extra Ballextra_ballAdd one more ball to your run.
Slow-MoslowSlow the ball down for 6 seconds for tighter control.
2× PointsmultiplierDouble every point you score for 8 seconds.

Achievements

AchievementGoalReward
Table Talent
Score 5,000 in a single run.
5000
Pinball Wizard
Score 15,000 in a single run.
15000300 coins
Bumper Mania
Strike bumpers 500 times in total.
500200 coins
Long Ball
Keep a single ball alive for 30 seconds.
30150 coins

Reskin slots

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

Configurable settings

SettingDefaultWhat it does
DifficultyPinballDifficulty.MediumControls table gravity and launch speed.

↑ 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
Centipederapid slow bomb
Galagarapid shield bomb
Light Cyclesphase slow hint
Helicoptershield slow wide
Stackslow wide perfect
Lunar Landerrefuel slowfall autobrake
Air Hockeybigmallet slowpuck freeze
Tank Battlerapid shield speed
Jetpack Dashshield magnet slow
Pinballextra_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

GameSlots
Centipedeplayer segment background
Galagaplayer alien background
Light Cyclesplayer_trail ai_trail background
Helicoptercopter wall background
Stackblock background
Lunar Landerlander terrain background
Air Hockeymallet puck background
Tank Battleplayer_tank enemy_tank background
Jetpack Dashhero coin background
Pinballball bumper 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_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       */ });
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 2.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/Arcade2/MyGame/.
  2. Add MyGameGame.cs implementing IMiniGame, decorated with [MiniGame("…", "My Game", Category = MiniGameCategory.Arcade2)].
  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. 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.

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