| 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
public class IAPManager : MonoBehaviour, IStoreListener
{
public static IAPManager Instance { get; private set; }
private IStoreController _storeController;
private IExtensionProvider _extensionProvider;
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 PRODUCT_VIP_SUB = ;
Action<> OnPurchaseComplete;
Action<, > OnPurchaseFailed;
{
(Instance != ) { Destroy(gameObject); ; }
Instance = ;
DontDestroyOnLoad(gameObject);
InitializePurchasing();
}
{
builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
builder.AddProduct(PRODUCT_GEMS_100, ProductType.Consumable);
builder.AddProduct(PRODUCT_STARTER_PACK, ProductType.NonConsumable);
builder.AddProduct(PRODUCT_VIP_SUB, ProductType.Subscription);
builder.AddProduct(PRODUCT_BATTLE_PASS, ProductType.Subscription);
UnityPurchasing.Initialize(, builder);
}
{
(_storeController == )
{
OnPurchaseFailed?.Invoke(productId, );
;
}
product = _storeController.products.WithID(productId);
(product != && product.availableToPurchase)
{
_storeController.InitiatePurchase(product);
}
{
OnPurchaseFailed?.Invoke(productId, );
}
}
{
productId = .purchasedProduct.definition.id;
(ValidateReceipt(.purchasedProduct.receipt))
{
GrantPurchase(productId);
OnPurchaseComplete?.Invoke(productId);
}
PurchaseProcessingResult.Complete;
}
{
(productId)
{
PRODUCT_GEMS_100:
PlayerInventory.AddGems();
;
PRODUCT_STARTER_PACK:
PlayerInventory.UnlockStarterPack();
;
PRODUCT_BATTLE_PASS:
BattlePassManager.Activate();
;
}
}
{
_storeController = controller;
_extensionProvider = extensions;
}
{ }
{ }
}