Supporting A Cosmetic Ball System

Separating Ball Effects from Ball Cosmetics

This game features a gacha system where players spend gems to acquire ball shards. Collected shards unlock new balls, each with unique visual assets and passive effects. These effects meaningfully change gameplay: modifying the number of level attempts, adjusting ball bounciness, altering ball weight, and more.

The challenge was designing a system that lets players leverage these passive effects without forcing them to look at balls they don't want to see during gameplay.

The Initial Design Problem

My first implementation conflated too many concerns in a single interface. The configuration scene—where players select which balls to use—also contained shard management and upgrade functionality. This created confusion: configuration should be about selecting options, not upgrading them.

The solution was to separate these responsibilities. I created a dedicated Upgrade tab where players spend shards to upgrade balls, removing that functionality from the configuration scene entirely. This separation improved the overall user experience and enabled a cleaner architecture for the next feature: the loadout popup.

The Loadout Popup

Before starting any level, players can now access a loadout popup directly from the level start screen. This popup displays:

  • Currently equipped balls and their effects
  • Currently equipped skills
  • Cannon power setting
  • Whether upgrades apply (differs between regular and challenge levels)

This gives players immediate visibility into their configuration without navigating away from the level they're about to play.

The Cosmetics Problem

With approximately 20 upgradable balls (featuring custom artwork) and 10 common balls (with simpler visuals), players have significant variety in what they can equip. Three balls are active during gameplay at any time.

A coworker raised an important question: if players invest in unlocking balls with appealing visuals, shouldn't they be able to see those visuals during gameplay—regardless of which passive effects they need?

This is a problem I've encountered in other games. Elden Ring, for example, forced players to choose between optimal armor stats and preferred aesthetics. You could wear the gear with the effects you needed, or you could look the way you wanted—not both. Some mods addressed this, but the base game made players sacrifice one for the other.

The Cosmetics System

I implemented a cosmetics layer that completely decouples visual presentation from passive effects.

Within the configuration scene, after selecting balls for their passive effects, players can access a cosmetics screen via an icon in the top right corner. On this screen, players select which balls they want to see during gameplay—independent of which balls are providing the passive effects.

The result: players equip Ball A, Ball B, and Ball C for their effects, but can display Ball X, Ball Y, and Ball Z during actual gameplay. Best of both worlds.

Implementation Details

  • Three balls must always be equipped. New accounts default to three basic balls.
  • Cosmetics are optional. If no cosmetic override is set, the ball displays its natural appearance.
  • Cosmetics require unlocked balls. Players can only set cosmetics for balls they've actually unlocked through gameplay or the gacha system.

This system caters to players who care deeply about aesthetics—a significant portion of the mobile gaming audience—while ensuring that mechanical advantages remain tied to actual progression and ball selection.

Comments

Popular posts from this blog

Solving Aspect Ratio Problems For Good!!

Designing a Scalable Community Content System

Customizing the playing experience with special ball effects