Dynamic Difficulty and Enemy Composition

In Rival Star Hero, the goal is essentially to outlast your opponent. To keep gameplay interesting, we're using a combination of RNG, predefined groups of enemies (referred to as waves), and predefined difficulty curves.

The process we use for creating waves of enemies for a particular stage is:

  1. Create a collection of enemies to appear in the stage. Each enemy is unique: Designed individually and built manually. 
  2. Generate a completely random wave of enemies. Number of enemies, spawn intervals, spawn delays, etc. are all randomly generated. 
  3. Play with the wave and tweak values until the composition feels right and it is fun to play.
  4. Assign a difficulty to the wave and save it.
  5. Repeat steps 2-4 many, many times.

Once the enemy waves are defined, we can plop them into the stage and start playing. The base difficulty raises over time so that the gameplay gradually becomes more hectic. However, linearly increasing the difficulty isn't fun. As a player, it feels like you're constantly being bombarded with more and more enemies. There's no time to breathe. We implemented a simple fix for this.

Each stage has a predefined difficulty curve. In our example stage, the difficulty curve is a sine wave.

Difficulty curve example Difficulty curve example

The bottom of the curve represents the minimum difficulty, and the top of the curve represents the maximum difficulty. Both the minimum and the maximum difficulty increase over time. This results in a distinct feeling of ups and downs throughout the stage. Early on, you may be granted easy breaks after hectic shootouts. As the round goes on, however, the downtime won't be so easy.

Rival Star Hero is a multiplayer competitive shmup in development by Spacewave Software. Follow us on Twitter for more updates.

Leave a Comment