As you play any game, you continually test various skills as you progress through its levels and face different challenges. Testing whether you can accomplish something, big or small, is one of the things that makes games what they are.
Such tests of skills can be as simple as:
- Jumping over a pit in Mario
- Reacting with a precise parry or dodge in Dark Souls
- Reciting a combo in a fighting game (like Street Fighter or Mortal Kombat).
However, it can be easy to make skill tests feel rote and formulaic.
At that point, you’re just repeating a series of inputs until you finally get through. It can also be easy to go too far on the opposite extreme and overwhelm the player with a sea of obstacles.
Take some custom levels in Mario Maker, for example.
As designers, we want players to:
- Engage with our games
- Learn skills that they can apply in different contexts
- Make purposeful decisions rather than memorizing solutions or spamming buttons
I will examine different techniques you can use to create challenging situations for your game. These will be dynamic and have a variety of solutions but are not overwhelmingly random.
By the way, if you have any questions as you read this post, feel free to ask in the Funsmith Club Discord where you can seek advice and network with game devs of all levels including me.
You can also get notified on exclusive game design tips, workshops, and guides (like this one) here 👇
With that said, let’s first see what a skill test is.
What is a Player Skill Test?
A skill test is when a game asks you to succeed in a certain situation by demonstrating 1 or more skills.
Many such examples include:
- Timing
- Dexterity
- Reaction time
- Visual calculus
- Sense of direction
- Betting odds
- Game knowledge
Games consist of many skill tests. When multiple skill tests are combined, we call that a skill challenge.
(By they way, don’t confuse this with a “skill challenge” from TTRPGs. Where players attempt multiple skill checks to overcome an obstacle or achieve a goal.)
Let’s transform one of the simplest childhood games, “Slaps,” into a skill challenge.
Slaps is a 2-player duel of lightning-fast reflexes: one player tries to slap the other’s hand before they can pull it away. The skill test here seems straightforward — be the fastest hand.
If you only think about it this way, then the game is kind of one-dimensional.
Slap or avoid a slap.

However, it gets more dynamic when you think about the psychology of the other player and start using tactics besides simply slapping fast, such as:
- Faking out your opponent.
- Get a read for their timing or preparedness.
- Waiting for them to lose focus.
Slaps becomes a spectrum of possible points you could slap or pull when adding these tactics. Creating a range of possible response times and speeds.
Even though Slaps initially appears to be a very simple game, by combining multiple skill tests in this way, it can become a fairly dynamic skill challenge.
So, How Can You Make Player Skill Tests More Interesting and Engaging?
You can do this by leveraging dynamism. To clarify, Dynamism in game design is when players cannot solve a given challenge or situation with a single solution.
It’s easy to make situations that only test a single skill (not dynamic). These are boring to players and lack gameplay depth. Because once a player finds a solution, there’s no replayability!
Dynamism is how you build depth in level design, creating levels with more unique situations and, therefore, more engagement and replayability.
This all ties back to the Sid Meier idea of Interesting Decisions, a choice where you won’t make the same decision every time.
Interesting choices are one of the core principles of game design. Building exciting levels and challenges for players is primarily about forcing them to make interesting choices. To choose differently based on the nuances of the situation.
What’s the game designer’s goal, then?
Create an experience where players face familiar crossroads, yet their choices remain unpredictable. Each decision point becomes a fork in the road.
Here’s an example of what not to do…
Human Benchmark has a reaction test that’s a little similar to the game of Slaps, but you just react.

It lacks any sense of dynamism. Unlike in Slaps, where the human element makes it more dynamic.
Now let’s look at a video game that creates a dynamic skill test with very little
I once played a game called SKY DIVER for the Atari 2600 at a house party and was amazed at how it creates a dynamic skill test with as few moving parts as possible.
The goal is to land your Sky Diver onto the platform to score as many points as possible — with a maximum score of 99. If you’re playing against another person, you need to get more points than them.
Here’s how it works:
- The plane will fly across the screen, and you press a button to release your Sky Diver.
- While your Sky Diver is falling, press Down to open their parachute.
- After their parachute is open, press Left and Right to guide your Sky Diver onto the landing pad.
- The game awards you 0 to 11 points based on when you open your parachute.
It gets more interesting since it includes 5 game modes that require different skill sets.
In game modes 1, 2, and 5, there is a wind sock. It indicates the force of the wind on your Sky Diver, which varies randomly.

In game modes 3 and 4, the platform moves back and forth in a set pattern.
I prefer modes 3 and 4 because the platform’s movement is deterministic, unlike the randomized wind sock. The starting position is randomized, meaning there’s a little input randomness but no output randomness.
I’ll go into these mechanics in a bit.

Let’s see each point where we make a decision:
- Where to release the Sky Diver from the plane: Don’t release too soon or late.
- When to open the parachute:
- Open too early, you’ll fall and move slowly, giving you the least control.
- The longer you wait to open the chute, the more points you score.
- You can’t open your parachute if you’re too close to the ground.
- Not releasing your parachute at all loses you 4 points.
- If your trajectory from the plane doesn’t line up with the platform, releasing your parachute earlier will help you course-correct.
- To move left or right: You move slower than the platform, so you must look ahead to where the platform will be when you land. If you try chasing the platform, you can find yourself over- or undershooting.
SKY DIVER’s skill challenge is fun because each decision builds upon the last. Each choice you make alters the game’s state, influencing the following options and outcomes.
Your skill in timing jumps and tracking movement directly impacts your success.
The unpredictable platform and wind sock levels also add a layer of randomness. Preventing memorization and requiring adaptability.
Every run is a unique test of skill, a dynamic challenge that keeps you engaged.
4 Principles for Creating Dynamic Skill Challenges
You can apply the following principles to create dynamic skill challenges for players:
- Asynchronicity: Unpredictable patterns or timings within a game’s challenges or environments.
- Responsiveness: Designing game elements (enemies, obstacles, etc.) to react and adapt to player choices in real time.
- Multi-threading: Interwoven paths or approaches within a single level or encounter.
- Input randomness: Slightly varying the starting conditions
1. Asynchronicity: The power of chaotic patterns.
Asynchronicity is like a well-choreographed dance where not every move happens simultaneously. It’s about creating situations where elements move independently, forcing players to adapt on the fly.
This could involve:
- Enemies that patrol on different schedules.
- Platforms that rise and fall independently.
- Environmental hazards that activate and deactivate in irregular intervals.
By breaking away from predictable patterns, asynchronicity injects a sense of chaos and dynamism into skill challenges. Making it so players can’t rely on rote memorization.
They must observe, react, and improvise. Each encounter then becomes a unique test of their adaptability and decision-making skills.
Celeste, as well as most of the Masocore genre, tends to lack dynamism. Obstacles behave the same whenever you play through them. This means players will repeat the same inputs again and again until they finally succeed for most levels.
However!
A specific room in Celeste Chapter 3, B-Side, stands out because it utilizes asynchronicity to create a genuinely dynamic game challenge.
In this room, there are 3 keys and a bounce pad on a moving platform at the center.
The enemy and the bounce pad travel the same path but move at different speeds, following asynchronous cycles. They start in the same place, but their paths will overlap in various spots as time progresses.

(The red arrow represents the enemies’ paths. Blue, the platform’s path.)
As you explore, you’ll have to:
- Deal with different patterns in the center of the room.
- Watch the motion of the bounce pad.
- Pay attention to the enemies to see where they each are.
- Adapt to their movements.
Unlike many rooms in the game, there isn’t a single path forward.
You can collect the 3 keys in any order — the order in which you do so affects the bounce pad and enemy pattern. If you’re feeling bold, you can bounce in place over the enemy in the center of the room.
Moreover, mistakes you make and slowdowns will also change the pattern of the center bounce pad.
Many stealth games could benefit from a touch of asynchronicity in the guard patrol patterns.
Imagine a game where guards patrol not on a fixed loop but on overlapping, unpredictable schedules. This forces players to reassess the situation constantly. Adapting their route based on the changing positions.
2. Responsiveness: Adapting to player choices.
Responsiveness creates a living, breathing world that reacts and adapts to the player’s actions. It differs between a static obstacle course and a dynamic dance partner.
This interactivity level revolves around designing obstacles and enemies that react and strategize in response to player choices. By weaving in responsive elements, each decision feels consequential as the world responds and adapts, leading to unique and unpredictable scenarios.
Since players can’t perfectly replicate their actions every time, even minor variations in input can create a pseudo-random effect:
- If managed well, it can come across as input randomness: Each unique situation demands a solution, discoverable through observation.
- If handled poorly, it can feel like output randomness, leaving players bewildered by changes that occur without rhyme or reason.
Take Celeste’s pinball bumpers, for instance.
In a level at the end of the game (The Core), there’s a room where there is a rising avalanche of small bounce pads with bumpers sitting between them.
Here’s everything that you’ll need to do in this room:
- Pay attention to the rising platforms.
- Time your jumps based on the platforms’ movements.
- Use the bumpers as a substitute for the lack of air dashes.
You also can’t restore your airdashes except by collecting gems, of which a few are in the room.
To get past this obstacle, you need to navigate the bounce pads and bumpers to the other side, using airdashes and collecting gems as necessary to survive. The bumpers will ricochet you based on the angle you hit them at.
Because you can’t always control exactly what angle you’ll approach them at, this means they’re highly responsive to your input.
However…
You can see which way you’re about to hit them and estimate the trajectory you’ll be launched off of. Giving them a degree of control and predictability.
3. Multi-threading: Branching Paths that Join Together
Multi-threading involves weaving together multiple paths or approaches within a single level or encounter. It’s like a choose-your-own-adventure book where you can jump between different storylines at key turning points.
This design philosophy gives players more control, allowing them to explore beyond a single route.
They can explore different paths, tackle challenges in various orders, or switch between strategies mid-way through the level or game. This creates a sense of freedom, as players can choose the path that best suits their playstyle or adapt to unexpected situations.
By offering multiple paths and interconnected challenges, designers create a lot of possibilities.
For instance, players can:
- Discover unexpected synergies between different routes.
- Stumble upon hidden secrets.
- Break the intended sequence to uncover unconventional solutions.
This approach keeps players engaged and invested. Instead of following a scripted path, they explore, experiment, and create their own path through the world.
I always think of these games when talking about multi-threading.
1. Sonic Mania
Some of the best Sonic levels have a high, low, and average route:
- High: Fastest and most rewarding, but tricky to stay on.
- Low: Slowest, yet safest route.
- Average: Includes a mix of high and low routes.

In the above image, I’m referring to the high, low, and average paths based on what’s in the fork at the center of the level. Red is “High,” Orange is “Average,” and Purple is “Low.”
If you can get up to the high road and stay up there, you have a shorter path through the level with better rewards. If you mess up, you typically fall to the low road.
Then, there’s also an average path connected to both other paths.
Players can transition between these paths, choosing their preferred approach based on their skill level and risk tolerance. This freedom of choice and the interconnected routes create a dynamic and engaging experience where each playthrough can feel unique.
The Sonic Mania designers recognized the power of multi-threading and crafted levels with multiple interwoven paths. This design led to the game’s acclaim as one of the best 2D Sonic titles among fans.
2. Dark Souls
Better Dark Souls levels, such as the Undead Parish, have this same type of Multi-Threaded design. Entering the Parish, you can go straight forward, through the boar, or off to the right and up the stairs.
The branching paths present a series of choices
Should they charge headfirst through the boar-infested courtyard? Or cautiously ascend the stairs to the right?

Each path offers different encounters, risks, and rewards, forcing players to weigh their options and consider their available resources.
Players must scrutinize the environment for ambushes, hidden passages, and advantageous positions.
From there, they’ll need to do the following with each enemy they encounter:
- Identify weaknesses
- Learn attack patterns
- Anticipate movements.
Each encounter becomes a puzzle to solve with skill, strategy, and resource management. And to climb a lot of ladders.
4. Input Randomness: Force Your Players to Adapt
Input randomness (aka pre-luck) is when the starting variables for a situation, level, test, or challenge are varied such that the player must adapt to them. A small amount of input randomness can help make situations more dynamic.
Output randomness (aka post-luck) is applied after players make choices, varying the consequences randomly, so players can’t control whether they succeed or fail.
In the SKY DIVER example above, modes 3 and 4 had a moving platform that always moved at a set rate in a predefined pattern. It would start at a random position each time, so you must always adjust to where it is.
This is input randomness.
By contrast, the windsock mode, with randomly blowing wind, affects the output after you have input directions. You can’t predict which way the wind will blow, so you need to pick directions and hope it works out rather than being able to see and predict everything in advance.
1. Dark Souls and Ninja Gaiden Black
Dark Souls, and most other action games, feature some randomness in when an enemy will decide to attack and which attack they’ll use.
Let’s look at some attacks from Soulsborne games:
This is input randomness because attacks are designed to be slow enough and telegraphed so players can see them and make a plan.
By changing the enemy’s attack based on how close or far they are, enemies can have a predictable game plan that players can learn and play around with. All while having some randomness that makes situations dynamic.
Well-designed action game enemies will play off one another, threaten the player based on the level geometry, and push the player into difficult circumstances.
They accomplish this by being:
- Placed well (multi-threading).
- Responding to player actions (responsiveness).
- Attacking in tandem with one another (asynchronicity).
- Randomly varying their attack choices and timings (input randomness).
This is what makes action game battles dynamic.

Ninja Gaiden Black also does all this well since it weaves together multiple enemy attack patterns that dynamically adapt to player movement. Creating an onslaught of strikes made even more unpredictable by randomized attack variations.
2. RimWorld
In single-player games, challenges should offer a balance of familiarity and novelty.
They shouldn’t be completely random or unsolvable, but also avoid feeling repetitive or predictable. The sweet spot lies in subtle variations that encourage players to adapt and refine their strategies.
RimWorld is a great example.
The core challenge of managing a colony remains consistent, but each playthrough presents unique events, such as:
- Fires
- Raids
- Social fights
- Distraught colonists
- Solar flares
- Broken down machines
- Etc…

Such events ensure no 2 colonies face the same struggles.
Implementing some dynamics gives players more control and flexibility in playing the game. The choices they make and how they execute those choices should have a noticeable impact on what happens next.
This keeps the game feeling responsive and engaging. As players see the consequences of their actions and learn to adapt to different situations.
3. Civilization
Sid Meier’s Civilization also provides input randomness to players by varying the starting map, which prompts players to adapt their strategies and tactics to the specific terrain, resource distribution, and proximity to other civilizations.
For example, deciding whether to invest in the military, technological advancements, or cultural influence presents a shifting landscape of risks and rewards.
Each playthrough offers unique factors that influence your decisions:
1. A cluster of islands might require naval dominance.

2. Peaceful rivals might allow for a focus on internal development.

These variables ensure that no 2 games of Civilization are alike. It compels players to evaluate their options constantly.
My Closing Thoughts…
By taking these principles, we can start understanding how to build levels and skill challenges that ask players to make interesting choices where they won’t choose the same thing each time.
And that’s what makes a game fun and exciting.
If you want to do more self-study with dynamic skill challenges, I think Castlevania 3 is a great place to start. Try watching a long-play (or playing through the game yourself!).
Take notes on how each screen places you relative to enemies and how you need to move to avoid their attacks and strike back. You could also compare it to a speedrun to see how they tackle the challenges differently than a casual player.