Bernard Hwang

Level Designer

Dev Blog - MechDog - Dungeon Meter

DevBlog, Solo ProjectBernard HwangComment

A new system was designed to add interactivity during level generation.

Everything you see in this post is work in progress.

Previous Level Generation

Recap

I go into detail about the previous level generation method in this previous dev blog. But here is the quick recap: 

The previous generator created level sequences based on designer input. The input determined the order in which level segment types would appear. Segments of challenge and reward were interspersed to try and create a good flowing experience.

Analysis

The components that made up the generator were these:

  • Procedural generator (system rules)
  • Level types (content for the system)
  • Sequence code (designer input)

The component that the generator didn't utilize was "player action". The generator created levels independent of how the player was doing. Two players of different skills received similar experiences from the level generator.

The Dungeon Meter

The question was then raised: How can the level generator create different experiences for players of different skill levels?

The player's actions needed to be factor into level generation. The two actions that helped indicate player skill were collecting coins and destroying enemies. The latter was chosen as it was the more challenging action of the two.

Now I needed a way to affect the level generator. Fortunately, the level generator already sorted level segments by difficulty. I created a meter that charted enemy kills and that needed to be filled before producing more challenging level segments (dungeons). 

Result

With the game's minimalist approach to controls, player actions needed to have high feelings of agency. The meter served the purpose of providing intermediate feedback for the player's actions. The feedback was longer term than an immediate points reward, but more frequent than the end-game score screen.

Design

Why make the level generator responsive to the player?

When a person plays a game, a relationship is formed. The player inputs actions -> the game outputs feedback -> the player interprets those actions and inputs more actions. When more game components are able to respond to the player's inputs, the game feels like a better experience. I realized that the procedural level generator was a perfect target for injecting a little more life into.

Was this an easy change to implement?

The level generator was already broken up into exposed components which allowed me to quickly iterate and find solutions. The system was initially designed like this to test specific level segments without having to play to that point. Because these components were already exposed, it was relatively easy so create another system that utilized the exposed components.