Mini Game Templates · Solitaire 2.0 Pack
Card-based patience templates with reusable card visuals, rule engines, scoring, and undo-friendly flows.
🏠 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-Solitaire2.unitypackage. If Unity offers to import TMP Essentials, accept — the demo UI uses TextMeshPro. - Open
Assets/MiniGameTemplates/Demo/MiniGameTemplates_Solitaire2.unity. The full demo is already baked into the scene. - Press Play — the dashboard lists every Solitaire 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 AcesUpGame();
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. "solitaire2_aces_up"
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/Solitaire2/<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()
🎮 Aces Up
Discard low cards, leave the four aces.
How to play
- Tap a column's top card to discard it when another column shows a higher card of the SAME suit. Aces are high, so they can never be beaten.
- Stuck? Tap the stock to deal four fresh cards. Empty a column by moving a top card into it. Leave only the four Aces to win.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Hint | hint | Highlight a card you can discard or move right now. |
| Undo | undo | Take back your last discard, move or deal. |
| Magic Discard | magic_discard | Banish the lowest non-Ace top card, no match required. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Aces High Win your first game of Aces Up. | 1 | — |
| Ace Collector Win 10 games of Aces Up. | 10 | 200 coins |
| Flawless Win a game without using Undo. | 1 | 150 coins |
| Purist Win a game without using Magic Discard. | 1 | 150 coins |
Reskin slots
background card_back card_face — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
AllowEmptyColumnMoves | true | If true, a tapped top card that can't be discarded is picked up for an empty-column move. When false, only auto-discard taps work. |
🎮 Clock
Beat the clock before the fourth King turns up.
How to play
- The deck is dealt face-down into a clock: each hour holds its rank (1 = Ace … 12 = Queen) and the centre pile holds the Kings. Tap the lit centre pile to flip the first card.
- Each flipped card slides under its matching hour, then you continue from that pile. Reveal all 52 to win — but if the fourth King turns up too soon you're stuck.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Hint | hint | Highlight the pile the next card belongs to. |
| Peek | peek | Briefly reveal the next face-down card before you flip it. |
| Second Chance | second_chance | Once per game, continue from another pile when you get stuck. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Beat the Clock Turn over all 52 cards and win a game. | 1 | — |
| Clockwork Win 10 games of Clock. | 10 | 150 coins |
| Close Call Reveal 48 or more cards in a single game. | 48 | 150 coins |
| Timekeeper Play 50 games of Clock. | 50 | 200 coins |
Reskin slots
background card_back card_face — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
AutoPlay | false | If true, the game auto-advances on a short delay instead of waiting for a tap. The runtime keeps tap-to-flip regardless; this is reserved for a future auto-play mode. |
🎮 Monte Carlo
Pair up touching cards of equal rank.
How to play
- Tap a card to select it, then tap a touching card of the SAME rank to remove the pair. Touching means next to it across, down, or diagonally.
- Out of pairs? Hit Consolidate to slide the cards up and deal fresh ones from the stock. Clear all 52 cards to win.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Hint | hint | Flash a touching pair of equal-rank cards you can remove. |
| Undo | undo | Take back your last removal, consolidate or reshuffle. |
| Reshuffle | reshuffle | Shuffle the cards still on the board into new spots when you're stuck. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| First Match Clear the board and win your first game. | 1 | — |
| Pair Master Win 10 games of Monte Carlo. | 10 | 150 coins |
| Clean Sweep Clear the board and win without spending a reshuffle. | 1 | 200 coins |
| Centurion Remove 300 pairs across all your games. | 300 | 250 coins |
Reskin slots
background card_back card_face — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
MaxReshuffles | 2 | How many times the Reshuffle booster may be used per round. |
🎮 Accordion
Squeeze the whole deck into a single pile.
How to play
- The whole deck is laid out left to right. Tap a pile to fold it onto the pile 1 or 3 spots to its left when their top cards share a suit or a rank.
- Every fold closes the gap and shifts the line left. Keep squeezing until the entire deck collapses into a single pile to win.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Hint | hint | Flash a pile that can legally fold to its left. |
| Undo | undo | Take back your last fold. |
| Free Fold | free_move | Fold one pile left even when the cards don't match. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Squeezed Shut Compress the whole deck into a single pile and win. | 1 | — |
| Accordionist Win 10 games of Accordion. | 10 | 150 coins |
| Tight Squeeze Fold a deal down to 3 piles or fewer. | 49 | 200 coins |
| Folded a Thousand Times Make 500 folds across all your games. | 500 | 150 coins |
Reskin slots
background card_back card_face — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
PreferLongFold | true | If true, the auto-move prefers the longer distance-3 fold when both a distance-1 and distance-3 move are legal. |
🎮 Wish
Remove every pair — make your wish come true.
How to play
- Tap a pile's top card to select it, then tap another top card of the SAME RANK to remove both to the discard.
- Clear all eight piles to win. Stuck with no matching tops? Spend a Reshuffle to re-deal the cards you have left.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Hint | hint | Flash a pair of matching top cards you can remove. |
| Undo | undo | Take back your last pair removal. |
| Reshuffle | reshuffle | Gather the remaining cards and deal the piles again. Limited uses. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Make a Wish Clear every card and win your first game. | 1 | — |
| Wish Granted Win 10 games of Wish. | 10 | 150 coins |
| Pure Wish Win a game without using a reshuffle. | 1 | 200 coins |
| Pair Collector Remove 200 pairs across all your games. | 200 | 150 coins |
Reskin slots
background card_back card_face — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
ReshuffleLimit | 2 | How many reshuffles the player may use per round when stuck. Each reshuffle gathers the remaining cards and re-deals the piles. |
FanPiles | false | If true the piles fan downward so the buried cards peek out; if false only the top card shows (with a small +N badge). |
🎮 Gaps
Slide cards into the gaps to sort each row.
How to play
- A gap can be filled only by the card one rank higher and the same suit as the card on its LEFT. Tap that card to slide it in. A gap at the far left of a row takes any 2.
- Build each row 2,3,...,K of a single suit. Out of moves? Tap Reshuffle to deal the loose cards into the gaps again. Sort all four rows to win.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Hint | hint | Flash a card that can slide into one of the gaps. |
| Undo | undo | Take back your last slide or reshuffle. |
| Reshuffle | reshuffle | Gather the loose cards and deal them into the gaps again when stuck. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Mind the Gap Sort all four rows and win your first game. | 1 | — |
| Sorter Win 10 games of Gaps. | 10 | 150 coins |
| Clean Run Sort every row and win without using a reshuffle. | 1 | 200 coins |
| Gap Year Play 50 games of Gaps. | 50 | 250 coins |
Reskin slots
background card_back card_face — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
MaxReshuffles | 2 | How many times the loose cards may be reshuffled per round. |
🎮 Baker's Dozen
Build the foundations from thirteen short columns.
How to play
- All 52 cards are dealt face-up into thirteen short columns. Tap a column's top card to send it to a foundation when it follows in suit, starting from the Ace.
- Can't play to a foundation? Tap a top card, then tap another column to drop it on a card one rank higher (any suit). Empty columns stay empty. Clear all four foundations to win.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Hint | hint | Flash a card you can play to a foundation or build down right now. |
| Undo | undo | Take back your last move. |
| Auto Collect | auto_collect | Sweep every safely-playable card up to the foundations. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Fresh Batch Win your first game of Baker's Dozen. | 1 | — |
| Master Baker Win 10 games of Baker's Dozen. | 10 | 200 coins |
| Flawless Win a game without using Undo. | 1 | 150 coins |
| Stocked Pantry Send 500 cards to the foundations across all games. | 500 | 250 coins |
Reskin slots
background card_back card_face — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
SinkKingsOnDeal | true | Sink any King to the bottom of its column during the deal so it never blocks the cards above it. This is the standard Baker's Dozen deal; turning it off makes most deals unwinnable. |
🎮 Beleaguered Castle
Storm the castle — clear all eight wings to the aces.
How to play
- The four Aces start on the foundations. Move the OUTER card of any wing onto another wing's outer card if it is exactly one rank lower (any suit). Only one card moves at a time.
- Tap an outer card to send it up to its foundation when it follows in suit. Empty wings accept any card. Build all four foundations up to the Kings to storm the castle.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Hint | hint | Flash a legal move you can make right now. |
| Undo | undo | Take back your last move. |
| Auto-Collect | auto_collect | Sweep every outer card that is safe to play onto the foundations. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Castle Stormed Win your first game of Beleaguered Castle. | 1 | — |
| Castellan Win 10 games of Beleaguered Castle. | 10 | 200 coins |
| Flawless Siege Win a game without using Undo. | 1 | 150 coins |
| Master Mason Place 500 cards on the foundations across all games. | 500 | 250 coins |
Reskin slots
background card_back card_face — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
AutoPlayToFoundation | true | When true, tapping a column's outer card auto-plays it to a foundation when that move is legal before falling back to a tableau move. When false, every move requires source→dest taps. |
🎮 Calculation
Build the foundations by ones, twos, threes and fours.
How to play
- Each foundation starts on A, 2, 3 or 4 and builds UP by that step, wrapping past the King: the +2 pile goes 2,4,6,8,10,Q,A,3… Suit never matters. Each pile's label shows the rank it needs next.
- Tap the stock to turn over the current card, then tap a foundation to play it — or tap a waste pile to park it for later. Build all four foundations up to the King to win.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Hint | hint | Highlight a foundation you can advance right now. |
| Undo | undo | Take back your last play, park or deal. |
| Peek | peek | Reveal the next card waiting on top of the stock. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| Carry the One Win your first game of Calculation. | 1 | — |
| Calculator Win 10 games of Calculation. | 10 | 200 coins |
| Flawless Win a game without using Undo. | 1 | 150 coins |
| Number Cruncher Finish 50 games of Calculation. | 50 | 250 coins |
Reskin slots
background card_back card_face — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
AutoRouteCurrentCard | true | If true, tapping the current card auto-routes it to a foundation when it fits, otherwise parks it on the first free waste pile. |
🎮 Osmosis
Seep cards into the rows once their rank appears above.
How to play
- Tap a reserve top to seep it into a row. The top row takes its suit in any order; lower rows need the SAME RANK already placed in the row just above.
- Out of plays? Tap the stock to turn over a waste card. Place all 52 cards into the four rows to win.
Boosters
| Booster | Key | Effect |
|---|---|---|
| Hint | hint | Flash a reserve or waste card you can seep into a row. |
| Undo | undo | Take back your last play, stock draw, or redeal. |
| Redeal | redeal | Recycle the waste back into the stock to cycle through it again. Limited uses. |
Achievements
| Achievement | Goal | Reward |
|---|---|---|
| First Seep Place all 52 cards and win your first game. | 1 | — |
| Osmosis Master Win 10 games of Osmosis. | 10 | 150 coins |
| Perfect Diffusion Win a game without using Undo. | 1 | 200 coins |
| Steady Trickle Seep 50 cards into rows across all your games. | 50 | 150 coins |
Reskin slots
background card_back card_face — drop art per slot via Tools > Mini Game Templates > Reskin Editor.
Configurable settings
| Setting | Default | What it does |
|---|---|---|
RedealLimit | 2 | How many times per round the player may recycle the waste back into the stock to cycle through it again. |
💥 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 |
|---|---|
| Aces Up | hint undo magic_discard |
| Clock | hint peek second_chance |
| Monte Carlo | hint undo reshuffle |
| Accordion | hint undo free_move |
| Wish | hint undo reshuffle |
| Gaps | hint undo reshuffle |
| Baker's Dozen | hint undo auto_collect |
| Beleaguered Castle | hint undo auto_collect |
| Calculation | hint undo peek |
| Osmosis | hint undo redeal |
🏆 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 |
|---|---|
| Aces Up | background card_back card_face |
| Clock | background card_back card_face |
| Monte Carlo | background card_back card_face |
| Accordion | background card_back card_face |
| Wish | background card_back card_face |
| Gaps | background card_back card_face |
| Baker's Dozen | background card_back card_face |
| Beleaguered Castle | background card_back card_face |
| Calculation | background card_back card_face |
| Osmosis | background card_back card_face |
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_Solitaire2.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 AcesUpGame();
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 > Solitaire 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/Solitaire2/MyGame/. - Add
MyGameGame.csimplementingIMiniGame, decorated with[MiniGame("…", "My Game", Category = MiniGameCategory.Solitaire2)]. - 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. solitaire2_aces_up), 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.