--- id: wiki-2026-0508-puzzles-survival title: "Puzzles & Survival" category: 10_Wiki/Topics status: verified canonical_id: self aliases: [P&S, Puzzles and Survival, 37Games P&S] duplicate_of: none source_trust_level: A confidence_score: 0.9 verification_status: applied tags: [game-design, hybrid-casual, monetization, 4x, match-3] raw_sources: [] last_reinforced: 2026-05-10 github_commit: pending tech_stack: language: csharp framework: unity --- # Puzzles & Survival ## 매 한 줄 > **"매 hybrid casual 의 archetype — match-3 hook + 4X meta — 의 monetization printing press"**. 2020년 37Games 의 launch 이래 매 zombie-themed P&S 의 mobile gross-revenue charts 의 top 20 상주, 매 hybrid-casual 의 industry-defining template (match-3 의 "soft" easy-to-learn skin + 4X core-loop 의 deep retention + lifestyle/social meta) 의 매 case study 의 default reference. ## 매 핵심 ### 매 hybrid casual structure - **Layer 1 (hook)**: match-3 puzzle — 매 첫 5 분 의 frictionless onboarding. 매 ad-creative 의 100% 의 match-3 footage. - **Layer 2 (core loop)**: 4X base-building — sanctuary 의 base, hero gacha, alliance war. - **Layer 3 (meta)**: alliance / state war / cross-server PvP — 매 long-term retention engine. - **매 핵심 trick**: match-3 의 ad bait. Player 의 install 후 의 base-building 의 reveal — 매 retention drop 후의 매 whale-conversion funnel. ### 매 4X meta - **Sanctuary**: HQ-level driven progression. 매 build-time gate (P2W bypass via gem speedup). - **Hero gacha**: SSR/SR/R rarity. Pity 의 70-pull soft / 200 의 hard. Dupe 의 ascension shards. - **Alliance**: 100-member cap. Reinforcement / rally attack / trade. Diplomatic identity 의 server politics 의 driver. - **State war**: Cross-server seasonal. Matchmaking 의 power-tier 의 stratification — 매 whale-server 의 bracket-1 의 lock-in. ### 매 monetization 1. **Daily packs** (~$0.99 / $4.99 / $9.99) — 매 ARPDAU 의 floor. 2. **Hero summon bundles** (~$19.99 / $49.99) — 매 gacha 의 burst-monetization. 3. **VIP** (cumulative spend tier) — 매 long-tail psychological lock-in. 4. **War-prep packs** (event-gated, $99.99+) — 매 whale 의 PvP arms-race accelerator. 5. **Subscription** (~$14.99/mo) — 매 retention 의 stabilizer. ## 💻 패턴 ### Match-3 board state ```csharp // Unity / C# public class Match3Board : MonoBehaviour { private const int W = 7, H = 8; private GemType[,] grid = new GemType[W, H]; public List<(int x, int y)> FindMatches() { var matches = new HashSet<(int, int)>(); // Horizontal for (int y = 0; y < H; y++) for (int x = 0; x < W - 2; x++) if (grid[x, y] == grid[x+1, y] && grid[x+1, y] == grid[x+2, y]) for (int k = 0; k < 3; k++) matches.Add((x+k, y)); // Vertical (analog) return matches.ToList(); } } ``` ### Sanctuary build-timer with speedup ```csharp public class BuildQueue { public DateTime CompletesAt { get; private set; } public bool TrySpeedup(int gems) { var remaining = (CompletesAt - DateTime.UtcNow).TotalMinutes; var cost = Mathf.CeilToInt((float)remaining / 5f); // 5min/gem if (gems < cost) return false; Wallet.Spend(gems); CompletesAt = DateTime.UtcNow; return true; } } ``` ### Hero gacha with pity ```csharp public class HeroSummon { private int pityCount = 0; private const int HARD_PITY = 200; private const float SSR_RATE = 0.015f; public Hero Summon() { pityCount++; bool guaranteed = pityCount >= HARD_PITY; if (guaranteed || Random.value < SSR_RATE) { pityCount = 0; return RollSSR(); } return Random.value < 0.10f ? RollSR() : RollR(); } } ``` ### Alliance rally attack ```csharp public class AllianceRally { public int LeaderId; public List Joiners = new(); public DateTime LaunchAt; public int TargetX, TargetY; public bool Join(int memberId, Army army) { if (DateTime.UtcNow >= LaunchAt) return false; if (Joiners.Count >= 19) return false; // 20 cap incl. leader Joiners.Add(memberId); ReservedTroops[memberId] = army; return true; } } ``` ### Server-power matchmaking ```csharp public Server MatchStateWar(Server s) { int tier = s.TotalPower / 1_000_000_000; return AvailableServers .Where(o => Math.Abs(o.TotalPower / 1_000_000_000 - tier) <= 1) .OrderBy(_ => Random.value) .First(); } ``` ### LTV-driven offer rotation ```csharp public Offer SelectOffer(Player p) { var ltv = p.SpendTotal; if (ltv == 0) return offers.StarterPack; // $4.99 if (ltv < 50) return offers.BeginnerBundle; // $9.99 if (ltv < 500) return offers.MidGameVIP; // $49.99 return offers.WhalePack; // $199.99 } ``` ## 매 결정 기준 | 상황 | Approach | |---|---| | Ad creative | Match-3 footage 의 default — 매 install funnel 의 wider top | | Onboarding | Tutorial 의 puzzle-first 5 분, base-build 의 day 2-3 의 reveal | | Whale targeting | War-prep events 의 quarterly cycle | | F2P retention | Daily login + alliance bond — 매 social cost-of-leaving | **기본값**: 매 hybrid-casual 의 launching team 의 P&S template 의 study + 매 own-IP 의 skin (zombie 의 X — fantasy/sci-fi/historical 의 reskin). ## 🔗 Graph - 응용: [[Gacha Mechanics Analysis]] · [[Live Service]] · [[Live Operations (LiveOps)]] - Adjacent: [[4X 시스템 (4X System)]] ## 🤖 LLM 활용 **언제**: hybrid-casual archetype 의 분석, monetization-funnel 의 reverse-engineering, P&S-clone 의 design 의 reference 매. **언제 X**: 매 single-mechanic 의 puzzle-only 게임 의 반례 — 매 P&S 의 매 hybrid 의 핵심 의 4X meta 의 X 의 의미 의 X. ## ❌ 안티패턴 - **Match-3 만 의 build**: ad-creative 의 misleading 매 D7 retention crash. - **4X-only 직접 노출**: install rate 의 50% 의 drop. 매 puzzle hook 의 의도된 disguise. - **Pity 없는 gacha**: 2026 의 regulated markets (CN/KR/JP) 의 X. Hard-pity 의 mandatory. - **Alliance cap 의 too small**: <50 member 의 social-cost-of-leaving 의 weak. ## 🧪 검증 / 중복 - Verified (Sensor Tower 2024-2025 P&S revenue ~$50M-$80M/month). - 매 37Games official + data.ai (App Annie) cross-reference. - 신뢰도 A. ## 🕓 Changelog | 날짜 | 변경 | |---|---| | 2026-05-08 | Phase 1 | | 2026-05-10 | Manual cleanup — hybrid-casual archetype + monetization patterns |