Game monetization strategies, in-app purchases, battle passes, ads integration, and player retention mechanics. Ethical monetization that respects players.
CHOOSING YOUR MODEL:
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā GAME TYPE ā RECOMMENDED MODEL ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā Story-driven / Single play ā PREMIUM ($10-60) ā
ā Competitive multiplayer ā F2P + Battle Pass ā
ā Mobile casual ā F2P + Ads + Light IAP ā
ā MMO / Live service ā Subscription + Cosmetics ā
ā Indie narrative ā Premium + Optional tip jar ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ETHICAL PRINCIPLES:
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā ā
DO: ā DON'T: ā
ā ⢠Cosmetics only ⢠Pay-to-win ā
ā ⢠Clear pricing ⢠Hidden costs ā
ā ⢠Earnable alternatives ⢠Predatory targeting ā
ā ⢠Transparent odds ⢠Gambling mechanics ā
ā ⢠Respect time/money ⢠Exploit psychology ā
ā ⢠Value for purchase ⢠Bait and switch ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
// ā
Production-Ready: Unity IAP Manager
public class IAPManager : MonoBehaviour, IStoreListener
{
public static IAPManager Instance { get; private set; }
private IStoreController _storeController;
private IExtensionProvider _extensionProvider;
// Product IDs (match store configuration)
public const string PRODUCT_STARTER_PACK = "com.game.starterpack";
public const string PRODUCT_GEMS_100 = "com.game.gems100";
public const string PRODUCT_BATTLE_PASS = "com.game.battlepass";
public const string PRODUCT_VIP_SUB = "com.game.vip_monthly";
public event Action<string> OnPurchaseComplete;
public event Action<string, string> OnPurchaseFailed;
private void Awake()
{
if (Instance != null) { Destroy(gameObject); return; }
Instance = this;
DontDestroyOnLoad(gameObject);
InitializePurchasing();
}
private void InitializePurchasing()
{
var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
// Consumables
builder.AddProduct(PRODUCT_GEMS_100, ProductType.Consumable);
// Non-consumables
builder.AddProduct(PRODUCT_STARTER_PACK, ProductType.NonConsumable);
// Subscriptions
builder.AddProduct(PRODUCT_VIP_SUB, ProductType.Subscription);
builder.AddProduct(PRODUCT_BATTLE_PASS, ProductType.Subscription);
UnityPurchasing.Initialize(this, builder);
}
public void BuyProduct(string productId)
{
if (_storeController == null)
{
OnPurchaseFailed?.Invoke(productId, "Store not initialized");
return;
}
var product = _storeController.products.WithID(productId);
if (product != null && product.availableToPurchase)
{
_storeController.InitiatePurchase(product);
}
else
{
OnPurchaseFailed?.Invoke(productId, "Product not available");
}
}
public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args)
{
var productId = args.purchasedProduct.definition.id;
// Validate receipt (server-side recommended for security)
if (ValidateReceipt(args.purchasedProduct.receipt))
{
// Grant the purchase
GrantPurchase(productId);
OnPurchaseComplete?.Invoke(productId);
}
return PurchaseProcessingResult.Complete;
}
private void GrantPurchase(string productId)
{
switch (productId)
{
case PRODUCT_GEMS_100:
PlayerInventory.AddGems(100);
break;
case PRODUCT_STARTER_PACK:
PlayerInventory.UnlockStarterPack();
break;
case PRODUCT_BATTLE_PASS:
BattlePassManager.Activate();
break;
}
}
// IStoreListener implementation...
public void OnInitialized(IStoreController controller, IExtensionProvider extensions)
{
_storeController = controller;
_extensionProvider = extensions;
}
public void OnInitializeFailed(InitializationFailureReason error) { }
public void OnPurchaseFailed(Product product, PurchaseFailureReason reason) { }
}
BATTLE PASS STRUCTURE:
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā SEASON LENGTH: 8-12 weeks ā
ā TIERS: 100 levels ā
ā XP PER TIER: 1000 (increases gradually) ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā FREE TRACK: ā
ā ⢠Common rewards every 5 levels ā
ā ⢠1-2 rare items mid-season ā
ā ⢠Currency to buy next pass (partial) ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā PREMIUM TRACK ($10): ā
ā ⢠Exclusive skin at level 1 (instant value) ā
ā ⢠Premium rewards every level ā
ā ⢠Legendary items at 25, 50, 75, 100 ā
ā ⢠Enough currency to buy next pass (with effort) ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā XP SOURCES: ā
ā ⢠Daily challenges: 500 XP ā
ā ⢠Weekly challenges: 2000 XP each ā
ā ⢠Playtime: 50 XP per match ā
ā ⢠Special events: Bonus XP weekends ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
DUAL CURRENCY SYSTEM:
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā SOFT CURRENCY (Gold/Coins): ā
ā ⢠Earned through gameplay ā
ā ⢠Used for: Upgrades, basic items, consumables ā
ā ⢠Sink: Level-gated purchases, repair costs ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā HARD CURRENCY (Gems/Diamonds): ā
ā ⢠Purchased with real money ā
ā ⢠Small amounts earnable in-game ā
ā ⢠Used for: Premium cosmetics, time skips ā
ā ⢠NEVER required for core gameplay ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
PRICING PSYCHOLOGY:
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā $0.99 - Impulse buy, low barrier ā
ā $4.99 - Starter pack sweet spot ā
ā $9.99 - Battle pass standard ā
ā $19.99 - High-value bundles ā
ā $49.99 - Whale offering (best value/gem) ā
ā $99.99 - Maximum purchase (regulations) ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
MONETIZATION KPIS:
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā CONVERSION RATE: 2-5% (F2P) ā
ā ARPU: $0.05-0.50/DAU (casual mobile) ā
ā ARPPU: $5-50/paying user ā
ā LTV: Should exceed CPI by 1.5x+ ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā HEALTHY INDICATORS: ā
ā ā D1 retention > 40% ā
ā ā D7 retention > 20% ā
ā ā Conversion > 2% ā
ā ā LTV/CPI > 1.5 ā
ā ā Refund rate < 5% ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā PROBLEM: Low conversion rate (< 1%) ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā ROOT CAUSES: ā
ā ⢠IAP offers too expensive ā
ā ⢠Poor first purchase experience ā
ā ⢠No perceived value ā
ā ⢠Wrong timing ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā SOLUTIONS: ā
ā ā Add high-value starter pack ā
ā ā Show IAP after engagement hook ā
ā ā A/B test price points ā
ā ā Improve soft currency scarcity ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā PROBLEM: High refund rate (> 10%) ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā ROOT CAUSES: ā
ā ⢠Unclear what purchase provides ā
ā ⢠Buyers remorse (poor value) ā
ā ⢠Accidental purchases ā
ā ⢠Technical issues ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā SOLUTIONS: ā
ā ā Add purchase confirmation ā
ā ā Show exactly what user receives ā
ā ā Improve purchase value ā
ā ā Fix any delivery bugs ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā PROBLEM: Economy inflation ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā SOLUTIONS: ā
ā ā Add more currency sinks ā
ā ā Reduce faucets gradually ā
ā ā Introduce prestige/reset systems ā
ā ā Create consumable high-end items ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
| Region | Requirement |
|---|---|
| EU | Loot box odds disclosure |
| Belgium | No loot boxes |
| China | Odds, spending limits |
| Japan | Kompu gacha banned |
| US | COPPA for under-13 |
Use this skill: When designing monetization, balancing economy, or implementing purchasing systems.