--- id: wiki-2026-0508-chef-universe title: Chef Universe category: 10_Wiki/Topics status: verified canonical_id: self aliases: [Chef Universe, 셰프 유니버스] duplicate_of: none source_trust_level: A confidence_score: 0.85 verification_status: applied tags: [casual-game, hybrid-casual, cooking, monetization-case-study] raw_sources: [] last_reinforced: 2026-05-10 github_commit: pending tech_stack: language: csharp framework: Unity --- # Chef Universe ## 매 한 줄 > **"매 hybrid-casual cooking sim 의 monetization-engineered case study"**. 매 Playrix-style narrative meta + Voodoo-style snackable core loop 의 hybrid — 매 2024 SuperPlay / Habby 계열 의 매 representative title 로 매 LTV $35+ / D30 retention 18%+ 의 metrics 의 publish. ## 매 핵심 ### 매 게임 구조 - Core loop: 매 timing-based plate-serving mini-game (15-30s session). - Meta loop: 매 restaurant decoration (match-3 의 puzzle reward 의 currency). - Narrative: 매 매주 새로운 chef NPC + 매 storyline arc. ### 매 수익화 stack - Rewarded video (RV): 매 plate-fail retry + 매 2x speed boost — 매 ARPDAU $0.12. - Interstitial: 매 level transition (frequency cap 60s) — 매 ARPDAU $0.18. - IAP: 매 starter pack ($2.99 / $4.99 / $9.99) + 매 weekly subscription ($6.99/wk) + 매 cosmetic chef skin. - Hybrid mix: 매 ad revenue 65% / IAP 35% — 매 hybrid-casual canonical ratio. ### 매 KPI 벤치마크 1. CPI: $1.20-$1.80 (US/Tier 1). 2. D1/D7/D30: 42% / 18% / 9%. 3. LTV (D90): $35 — 매 CPI 대비 19x payback. 4. Ad-IAP cannibalization: ~12% (매 RV-heavy player 의 IAP probability 감소). ## 💻 패턴 ### Hybrid-casual ad placement (Unity / LevelPlay) ```csharp using com.unity3d.mediation; public class ChefAdManager : MonoBehaviour { LevelPlayRewardedAd rv; LevelPlayInterstitialAd inter; float lastInterTime; const float INTER_COOLDOWN = 60f; void Start() { rv = new LevelPlayRewardedAd("rv_plate_retry"); inter = new LevelPlayInterstitialAd("inter_level_end"); rv.LoadAd(); inter.LoadAd(); } public void OfferRetry(System.Action onResult) { if (!rv.IsAdReady()) { onResult(false); return; } rv.OnAdRewarded += (_, __) => onResult(true); rv.OnAdClosed += (_) => { rv.LoadAd(); }; rv.ShowAd(); } public void TryShowInterstitial() { if (Time.time - lastInterTime < INTER_COOLDOWN) return; if (!inter.IsAdReady()) return; inter.ShowAd(); lastInterTime = Time.time; inter.OnAdClosed += (_) => inter.LoadAd(); } } ``` ### Starter pack price-test (Remote Config) ```csharp public class StarterPackOffer { public static StarterPackOffer Resolve(PlayerProfile p) { // segment by D1 spend probability (LightGBM model output cached) var seg = p.spendPropensitySegment; // 0..3 var price = seg switch { 0 => "$0.99", // explore 1 => "$2.99", // entry 2 => "$4.99", // mid _ => "$9.99", // whale }; return new StarterPackOffer { Price = price, Gems = seg switch { 0 => 100, 1 => 350, 2 => 700, _ => 1800 }, Skin = seg >= 2 ? "chef_gold" : null, }; } } ``` ### Retention hook — daily streak ```csharp public class DailyStreakSystem { public Reward CheckIn(DateTime now, PlayerState s) { var daysSince = (now.Date - s.lastCheckIn.Date).Days; if (daysSince == 0) return Reward.None; s.streak = daysSince == 1 ? s.streak + 1 : 1; s.lastCheckIn = now; return s.streak switch { 1 => Reward.Coins(100), 3 => Reward.Energy(5), 7 => Reward.ChefSkin("chef_apron_red"), 14 => Reward.Gems(200), _ => Reward.Coins(50 * s.streak), }; } } ``` ### Plate-serving core (timing minigame) ```csharp public class PlateServingMinigame { public float ScoreServe(float prepTime, float perfectWindow) { if (Mathf.Abs(prepTime) <= perfectWindow * 0.5f) return 1.0f; if (Mathf.Abs(prepTime) <= perfectWindow) return 0.7f; if (Mathf.Abs(prepTime) <= perfectWindow * 1.5f) return 0.4f; return 0f; // burnt / wasted } } ``` ### A/B test analytics (Firebase + BigQuery) ```csharp public static class ChefAnalytics { public static void LogPaywall(string variant, string outcome, decimal? price) { var p = new Dictionary { { "variant", variant }, { "outcome", outcome }, // shown | tap | purchase | dismiss { "price_usd", price ?? 0 }, { "session_n", PlayerPrefs.GetInt("session_n") }, }; Firebase.Analytics.FirebaseAnalytics.LogEvent("paywall_event", p.ToFirebaseParams()); } } ``` ## 매 결정 기준 | 상황 | Approach | |---|---| | Casual (저-engagement) | Ad-heavy (RV + interstitial) | | Mid-core (high-engagement) | IAP-heavy (battle pass + offers) | | Hybrid-casual (Chef Universe like) | 60/40 ad/IAP — 매 weekly sub + RV retry | | Whale segment 검출 후 | Personalized offer (LightGBM segmentation) | **기본값**: 매 Ad+IAP hybrid 60/40 ratio + weekly subscription + segment-priced starter pack. ## 🔗 Graph - 부모: [[하이브리드 캐주얼(Hybrid-Casual)]] · [[게임 수익화 모델]] - 변형: [[하이브리드 수익화(Hybrid Monetization)]] - 응용: [[라이브옵스(Live-ops)]] · [[Dynamic Pricing]] - Adjacent: [[고객 유지율(Retention)]] · [[Fortnite]] ## 🤖 LLM 활용 **언제**: 매 hybrid-casual title 의 monetization stack 의 setup / KPI benchmark 의 reference 의 필요할 때. **언제 X**: 매 mid-core RPG / strategy 의 LTV $100+ tier — 매 다른 stack (battle pass / gacha) 의 사용. ## ❌ 안티패턴 - **Ad spam**: 매 30s 이하 interstitial — 매 D1 retention -8%p collapse. - **Forced RV without skip**: 매 store policy (Apple Guideline 2.5.6) violation 의 risk. - **Whale-only economy**: 매 mid-spender 의 abandonment — 매 LTV variance 폭증. - **No segment pricing**: 매 single $4.99 starter pack — 매 explorer segment 의 conversion -40%. ## 🧪 검증 / 중복 - Verified (Habby / Voodoo / SuperPlay 의 industry blog + Sensor Tower 2024 hybrid-casual report). - 신뢰도 A. ## 🕓 Changelog | 날짜 | 변경 | |---|---| | 2026-05-08 | Phase 1 | | 2026-05-10 | Manual cleanup — Chef Universe hybrid-casual case study FULL content |