08. LiveOps & A/B Testing

← Back to index

Thematic Bundles

[DATA Bundles.csv, Bundle_Items.csv] [CODE ✔ BundleService]

BundleCycle timerCoin skip price / cycleContents (3 cycles × 2 items)
Cat2 min500case, spray, 2D sticker ×2, 3D, charm
Anime5 min600case, spray, 2D, 3D, charm, strap
Robot5 min700case, spray, 2D, 3D, charm, strap
Cloud10 min800case, 2D, 3D, glitter, charm, strap
Spaceship10 min900case, spray, 3D, glitter, charm, strap
Narwhal10 min1,000case, spray, 2D, 3D, glitter, strap

Flow

Unlocks on Day 2
  → cycle timer runs
  → timer ends: next 2 items become "claimable" → claim with 1 RV (for both items)
  → or pay 500–1,000 coins to skip the timer
  → or buy the whole bundle via IAP
  → 3 cycles done → move to the next bundle
  • coins_per_cycle is the skip price, not a reward.
  • There are RVs per item category (bundle_case_rv, bundle_glitter_rv, …).
  • Flag bundle_timer_reset_on_relaunch=1: the timer resets when the app is relaunched (remotely configurable).
  • Design purpose: the timer brings players back (repeat sessions).

Weekly Event

WeeklyStartPopup and the weeklyEvent keychain [CODE]. Event contents are not in the tables.

A/B Testing

The game is built as an A/B testing machine.

MechanismContents
UiVariants.csv89 swappable UI prefabs (_V2, ResultPanel_V430, phoneOrder_440, …)
RuntimeBehaviorVariants.csv23 behavior flags
iOS vs GP unlock daysDifferent pacing per platform
LeaderboardSO_V470_*4 leaderboard content variants
Features.csvFeature on/off

Example behavior flags

  • all_decoration_tools_unlocked_early
  • makers_day_lock_removed
  • phone_selection_available_from_first_day
  • break_screen_rewarded_unlock
  • between_level_flow_rework

iOS vs Google Play pacing

MakeriOSGP
AcrylicDay 4Day 2
StencilDay 2Day 4
MarbleDay 7Day 5

Remote Config

[CODE ✔ CrazyLabs DatabaseController]

  • The game does not read remote keys one by one.
  • Entire CSV files can be replaced from the server (fileConfig_*), or just specific cells.
  • So every value in these docs (rewards, prices, unlock days, drop rates) is a default that can be A/B tested without an app update.

Legacy flags hardcoded in GameSettingPrefs

FlagValue
RevengeON, replaces VIP
AuctionON, skippable
IAP NoAdsON
RV-unlock-offersOFF

Notes for the team

  • Keep all design numbers in tables (CSV / spreadsheet), not in code.
  • Build a pipeline to replace tables from the server. This lets designers tune pacing and economy without a new release.
Built with LogoFlowershow