pluginagentmarketplace

monetization-systems

6
0
# Install this skill:
npx skills add pluginagentmarketplace/custom-plugin-game-developer --skill "monetization-systems"

Install specific skill from multi-skill repository

# Description

|

# SKILL.md


name: monetization-systems
version: "2.0.0"
description: |
Game monetization strategies, in-app purchases, battle passes, ads integration,
and player retention mechanics. Ethical monetization that respects players.
sasmp_version: "1.3.0"
bonded_agent: 07-game-publishing
bond_type: PRIMARY_BOND

parameters:
- name: model
type: string
required: false
validation:
enum: [premium, f2p, freemium, subscription, ad_supported]
- name: platform
type: string
required: false
validation:
enum: [mobile, pc, console, web]

retry_policy:
enabled: true
max_attempts: 3
backoff: exponential

observability:
log_events: [start, complete, error, purchase, refund]
metrics: [arpu, arppu, conversion_rate, ltv, retention]


Monetization Systems

Monetization Models

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            β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

IAP Implementation

// βœ… 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 Design

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                        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Economy Design

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)                    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Key Metrics

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%                                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ”§ Troubleshooting

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ 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                          β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Compliance

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.

# Supported AI Coding Agents

This skill is compatible with the SKILL.md standard and works with all major AI coding agents:

Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.