Mini Game Templates · Puzzles 2.0 Pack
Logic, tile, number, and spatial puzzle templates with editable difficulty and reusable board/UI systems.
🏠 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-Puzzles2.unitypackage. If Unity offers to import TMP Essentials, accept — the demo UI uses TextMeshPro. - Open
Assets/MiniGameTemplates/Demo/MiniGameTemplates_Puzzles2.unity. The full demo is already baked into the scene. - Press Play — the dashboard lists every Puzzles 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 CatSortGame();
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. "puzzles2_cat_sort"
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/Puzzles2/<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()
🎮 Cat Sort
Pour cats between beds until each tube is one colour.
How to play
- Click a bed to pick up the top cat — then click another bed to pour it in.
- A cat only stacks onto an empty bed or onto its own colour. Different colours won't mix.
- Finish when every bed is empty or filled with cats of one colour. Extra empty beds are your workspace.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Undo | undo | Reverse your last cat move. |
| Extra Bed | extra_bed | Add an extra empty bed for the rest of this round. |
| Reset | reset | Re-shuffle the cats into a fresh starting layout. |
| Auto Move | auto_move | Find and play one safe legal move for you. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Cat Nap Win your first Cat Sort round. | 1 | 50 coins |
| Cat Lady Win 10 Cat Sort rounds. | 10 | 200 coins |
| Purrfect Win a round without using the Undo booster. | 1 | 120 coins |
| Streak Cat Win 5 rounds in a row without using Undo. | 5 | 300 coins |
| Bed Master Reach 2,000 best-score in a single round. | 2000 | 250 coins |
Reskin slots
cat bed background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
BedCount | 6 | — |
BedCapacity | 4 | — |
CatTypes | 4 | — |
MoveDuration | 0.28f | — |
🎮 Arrows Escape
Find the way out — slide every arrow path off the maze.
How to play
- Tap any arrow to slide its whole path forward — it keeps going until something blocks it or it escapes.
- Each tap costs one move from the budget shown at the top. Run out of moves before clearing every arrow and the level is lost.
- Plan the order — arrows block each other, so the path you free first matters. Leftover moves count for bonus score.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Undo | undo | Rewind your last arrow move. |
| Hint | hint | Highlights which arrow to slide next on the shortest known solution. |
| Reset | reset | Restore the level to its starting position. |
| Skip | skip_level | Skip the level (no clear bonus). |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Way Out Clear your first level. | 1 | — |
| Smart Moves Clear 5 levels. | 5 | 50 coins |
| Brain Workout Clear 20 levels. | 20 | 200 coins |
| Clean Path Clear a level without using undo. | 1 | 75 coins |
| Solo Solver Clear a level without using hint. | 1 | 75 coins |
Reskin slots
path_segment arrow_head background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Visual | ArrowsEscapeVisualStyle.Modern | Visual preset. Player can flip this at runtime via the in-game toggle. |
GridColsBase | 6 | — |
GridRowsBase | 6 | — |
PathsBase | 4 | — |
MaxGenerationAttempts | 200 | — |
SlideDuration | 0.07f | — |
🎮 Sudoku
Fill the grid — every row, column and box 1-9.
How to play
- Tap an empty cell to select it, then tap a number to fill it.
- Every row, column and 3x3 box must hold 1-9 with no repeats. Fill the whole grid to win!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Reveal | hint | Fill the selected (or a random) empty cell with its correct digit. |
| Check | check | Flash any wrong digits currently on the board in red. |
| Undo | undo | Undo your last entry. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| First Grid Solve your first Sudoku. | 1 | — |
| Sudoku Master Solve 10 puzzles. | 10 | 250 coins |
| Unaided Solve a puzzle without using the Reveal booster. | 1 | 150 coins |
| Grid Grinder Solve 25 puzzles in total. | 25 | 400 coins |
Reskin slots
cell background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | SudokuDifficulty.Easy | How many cells are revealed at the start. Easy ~40 givens, Medium ~32, Hard ~26 — fewer givens makes the puzzle harder. |
🎮 Minesweeper
Clear the field without hitting a mine.
How to play
- Tap a cell to dig. Your first dig is always safe — numbers show how many mines touch that cell.
- Switch to FLAG mode to mark mines (▲). Clear every safe cell to win — hit a mine and it's over.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Hint | hint | Correctly flag a mine, or open one safe cell. |
| Safe Dig | safe_reveal | Auto-reveal one cell guaranteed to be safe. |
| Shield | defuse | Survive the next mine you hit — it gets defused. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| First Sweep Clear your first field. | 1 | — |
| Sweeper Clear 10 fields. | 10 | 200 coins |
| Clean Hands Win a round without placing a single flag. | 1 | 150 coins |
| Bomb Squad Clear 25 fields in total. | 25 | 400 coins |
Reskin slots
cell mine background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | MinesweeperDifficulty.Easy | Board preset. Easy 9×9 / 10 mines, Medium 12×12 / 26 mines, Hard 14×14 / 45 mines. Changing this via the cheat panel calls ApplyDifficulty() to resize the grid. |
Columns | 9 | — |
Rows | 9 | — |
MineCount | 10 | — |
🎮 Fifteen
Slide the tiles into numerical order.
How to play
- Tap a tile next to the empty gap to slide it across.
- Arrange the numbers in order, top-left to bottom-right, with the gap last. Fewer moves is better!
Boosters
| Booster | Key | Effect |
|---|---|---|
| Next Move | hint | Flash a tile worth sliding next. |
| Undo | undo | Slide the last tile back. |
| Shuffle | shuffle | Re-scramble the board into a fresh solvable layout. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| In Order Solve your first puzzle. | 1 | — |
| Slide Master Solve 10 puzzles in total. | 10 | 150 coins |
| Clean Lines Solve a puzzle within par moves. | 1 | 200 coins |
| Puzzle Veteran Solve 25 puzzles in total. | 25 | 400 coins |
Reskin slots
tile background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | FifteenDifficulty.Medium | Board size: Easy = 3x3, Medium = 4x4, Hard = 5x5. |
🎮 Tile Fly
Tap an arrow tile to send it flying off the board — if its path is clear.
How to play
- Each tile has an arrow. Tap it and it tries to fly off the board in that direction.
- If another tile is in the way, this tile can't leave. Find the right order.
- Clear every tile to win. No timer — just plan and tap.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Hint | hint | Highlights a tile that can fly off RIGHT NOW. |
| Reset | reset | Restore the level to its starting position. |
| Skip | skip_level | Skip the level (no clear bonus). |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| First Takeoff Clear your first board. | 1 | — |
| Ground Crew Clear 5 boards. | 5 | 50 coins |
| Airfield Master Clear 20 boards. | 20 | 200 coins |
| Pure Pilot Clear a board without using hint. | 1 | 75 coins |
Reskin slots
tile background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
ColsBase | 4 | — |
RowsBase | 5 | — |
ScaleGridByLevel | true | If true, lower levels start with a smaller grid that grows with the level number. |
FlyDuration | 0.40f | — |
WiggleDuration | 0.22f | — |
🎮 Nonogram
Use the number clues to reveal the hidden picture.
How to play
- The numbers count runs of filled cells in each row and column.
- Tap to fill a cell. Switch to X mode to mark blanks. Fill every cell the clues demand to reveal the picture.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Reveal Cell | hint | Correctly fill or mark one cell from the solution. |
| Check Board | check | Flag every cell you have filled by mistake. |
| Solve Line | auto_line | Auto-solve one unfinished row or column. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| First Picture Solve your first nonogram. | 1 | — |
| Picross Pro Solve 10 nonograms. | 10 | 200 coins |
| Clear Eye Solve a nonogram without using a hint. | 1 | 150 coins |
| Master of Pixels Solve 25 nonograms in total. | 25 | 400 coins |
Reskin slots
cell background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | NonogramDifficulty.Medium | Board size: Easy 5x5, Medium 10x10, Hard 15x15. |
🎮 Sokoban
Push every crate onto a goal.
How to play
- Move with the arrows / WASD / swipe, or the on-screen ◄►▲▼ pad. Walk into a crate to push it.
- You can't pull crates or push one into a wall. Push every crate onto a goal tile to clear the level.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Hint | hint | Flash a crate that isn't on a goal yet. |
| Undo | undo | Undo your last move (and the crate it pushed). |
| Reset | reset | Restart the current level from scratch. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Crate Expectations Solve your first level. | 1 | — |
| Warehouse Boss Solve 10 levels in total. | 10 | 150 coins |
| Optimal Pusher Solve a level in par moves or fewer. | 1 | 200 coins |
| Logistics Legend Solve 25 levels in total. | 25 | 400 coins |
Reskin slots
player crate wall background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Tier | StartTier.Beginner | Which level the run starts on: Beginner = 1, Intermediate = 3, Advanced = 5. |
🎮 Pipes
Rotate the pipes to connect the whole network.
How to play
- Tap a pipe to rotate it 90°. Lit pipes are powered from the glowing source.
- Connect every pipe back to the source with no open ends to light up the whole network.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Hint | hint | Rotate one misaligned pipe to its correct orientation. |
| Undo | undo | Undo your last rotation. |
| Reset | reset | Reset the board to its scrambled start. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| First Flow Connect your first network. | 1 | — |
| Master Plumber Solve 10 networks. | 10 | 150 coins |
| No Wasted Turns Solve a network in very few rotations. | 1 | 200 coins |
| Pipe Dream Solve 25 networks in total. | 25 | 400 coins |
Reskin slots
pipe background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | PipesDifficulty.Easy | Grid size: Easy = 5x5, Medium = 6x6, Hard = 7x7. |
🎮 Flow Connect
Link the matching dots — fill every cell.
How to play
- Drag from a coloured dot to its matching dot to lay a pipe.
- Connect every pair AND fill every cell to solve the board. Crossing a pipe erases it.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Hint | hint | Flash the dots of a pair you haven't connected yet. |
| Undo | undo | Clear the longest pipe you've drawn. |
| Reset | reset | Clear the whole board back to its dots. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| First Connection Solve your first Flow level. | 1 | 50 coins |
| Flow Master Solve 10 Flow levels. | 10 | 200 coins |
| No Backtracking Solve a level without using Undo. | 1 | 120 coins |
| Pipe Layer Solve 25 levels in total. | 25 | 300 coins |
Reskin slots
dot background — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
Difficulty | FlowDifficulty.Easy | Easy = 5x5, Medium = 6x6, Hard = 7x7. |
💥 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 |
|---|---|
| Cat Sort | undo extra_bed reset auto_move |
| Arrows Escape | undo hint reset skip_level |
| Sudoku | hint check undo |
| Minesweeper | hint safe_reveal defuse |
| Fifteen | hint undo shuffle |
| Tile Fly | hint reset skip_level |
| Nonogram | hint check auto_line |
| Sokoban | hint undo reset |
| Pipes | hint undo reset |
| Flow Connect | hint undo reset |
🏆 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 |
|---|---|
| Cat Sort | cat bed background |
| Arrows Escape | path_segment arrow_head background |
| Sudoku | cell background |
| Minesweeper | cell mine background |
| Fifteen | tile background |
| Tile Fly | tile background |
| Nonogram | cell background |
| Sokoban | player crate wall background |
| Pipes | pipe background |
| Flow Connect | dot 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_Puzzles2.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 CatSortGame();
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 > Puzzles 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/Puzzles2/MyGame/. - Add
MyGameGame.csimplementingIMiniGame, decorated with[MiniGame("…", "My Game", Category = MiniGameCategory.Puzzles2)]. - 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. puzzles2_cat_sort), 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.