Hire Us For Your Game!

Resolving a Difficulty Progression Derp

“Play Now” Balancing Improvements

The most prominent mode of Life’s a Beach is the “Play Now” mode–

Life's a Beach Game Play Now Mode Forget the cutscenes and story! Let’s just go!

It is structured similarly to that of the “Arcade Modes” found in many fighting games, in that it features a set of randomly-chosen, narrative-less stages the player must clear in sequence.

Mortal Kombat 3’s Arcade Mode “Ladder”. Image by 666gonzo666 on Mobygames.

Unique to this game’s “Arcade Mode” implementation…

  • It never ends, progressing infinitely as the player clears stage after stage.
  • Collectibles obtained persist, allowing players to grind effectively.

Sounds pretty good, right? Sure, we probably want to add in bosses and “climaxes” every handful of stages, but this design should be nearly as engaging as other ladder systems (that is to say, mildly).

earning upgrade items through gameplay like normal, ranking-up their units and towers between matches. This mode is designed to allow for quick bursts of progress-causing fun, perhaps to serve as enjoyable grinding between story campaigns.

Unfortunately, the mode currently serves as a prime example of how balancing can ruin an otherwise competentely designed (if not excitingly-designed) experience.

  • Which Stage is Chosen? One of the first 30 stages from the story mode.
  • How is enemy unit / wave strength determined? From the stage chosen (the further along the stage, the higher the enemy level and corresponding stats).

With these two points in mind, this problems with this disaster of a mode should be very clear. A new player entering “Play Now” has a ~25 / 30 = ~83% chance (enemy levels 5 above the player being largely intractable) that the player gets thrown into the lions pit with a peashooter– unlikely to provide a good first impression. If players are getting dunked on, there’s a good chance they aren’t learning and exprimenting. If players aren’t learning, they aren’t making decisions and performing experiments– the core of an engaging game loop. Successful progression designs typically seek to build up a player’s confidence and knowledge before testing them, but this ladder is almost certain to crush their spirit immediately, leaving them confused about their options, confused about their decisions, and flustered (but maybe they’ll think the continue / game over screens are neat?). We need a fix.

Not the noobs!

Fortunately, the solutions are as clear as the problems.

  • Let’s keep stages random, but decouple enemy difficulty from them. Being spawned into stage 30 shouldn’t necessarily mean enemy strength levels of 30.
  • Enemy strength level begins at 1, increases with each victory, and…
  • Enemy strength level is persisted to the user’s save file.

The result of these small changes is a difficulty level that starts off managable, and scales up as the player levels up, acquires more cards, grows stronger, and wins. Beyond additional tweaks, this success of this mode will depend on the progress players feel as they achieve victories and climb the ladder. Can we provide a continuous stream of rewards to keep players enticed? Introducing new enemies as rounds progress could help, as could providing a special currency reward for the shop.

BONUS : JSON.net WebGL Deserialization Issue

A few hours this week was lost to debugging an issue with JSON deserialization. JSON.net, the popular JSON C# library does not appear to correctly deserialize HashSet types in WebGL (at least, the library’s Unity fork doesn’t). Without diving into the root cause (at a likely loss of several additional hours), switching to a List resolved the issue (it’s unsurprising that this more-common datatype is less buggy).

Subscribe to Future Devblogs!

Subscribe here to be notified when we publish future devblogs, tutorials, etc.