Overview
Open Project → Catalog to manage two related lists:
- Items - individual SKUs (hat, coin pack, power-up).
- Bundles - named groups of items at a single bundle price (starter pack, weekend deal).
Both share the same shape: stable key, soft-currency price, optional image, translations, and an active toggle. The SDK fetches whichever ones are active at request time.
Items
- Click New item.
- Set a stable key (snake_case, never change after release).
- Optional category for grouping in your store UI.
- Set price and currency (your in-game currency name, e.g.
coins,gems). - Upload an image or paste a URL.
- Fill translations for each language (or auto-translate).
- Toggle active to publish.
Bundles
A bundle has its own price and image, plus a list of contained items with quantities. The SDK returns bundles alongside items, with the contained items resolvable by id.
Common patterns:
- Starter pack - coin pack + cosmetic + double-XP scroll for less than the sum of parts.
- Weekend deal - toggle
activeon Friday, off on Monday. - Seasonal pack - pair with a Live Event for time-limited availability.
Images
Uploaded images go to KalmForge Cloud Storage with Cache-Control: max-age=31536000, immutable and a unique filename per upload. That means:
- Images are downloaded once per device and cached forever.
- Replacing an item's image gives it a brand-new URL - caches naturally expire, no manual purge.
- A future CDN can be put in front with zero code changes.
Translations & auto-translate
The translations panel shows one row per project language, default language first. Click Auto-translate from {default} to fill every other language at once. Edits are saved with the rest of the item - nothing is locked.
Purchase logging
The SDK calls StoreCatalog.LogPurchaseAsync whenever your game completes a soft-currency purchase. KalmForge writes a row in catalog_purchases with the player, item or bundle, price paid and currency. This powers:
- Per-item revenue charts in Player Analytics.
- Top-N item / bundle reports.
- Per-player purchase history (visible on the player detail page).
LogPurchaseAsync after the platform receipt is verified - that gives you both worlds.Tier limits
No hard cap on items or bundles. Project storage (catalog images) counts against the studio storage quota tracked under Usage.