How can we make a game more challenging? I’m not talking about designing a new game to be hard to win at, I’m talking about taking an existing game or prototype and changing things to make it more challenging for the player. For now I’m just considering single player games to avoid the related question of “how do I make a game more difficult for all players”, I just care about making the experience of one player more challenging. There are two main approaches for adding difficulty to a game: HP sliders and smarter AI.
I’m using the term “HP sliders” as a catchall term to represent all possible variables in a game, not just the health variable. A slider is just a term to represent a range of values for the variable, like a sound volume bar. A more difficult game gives the bad guys more health and the player less health. Additionally, giving the bad guys more attack, speed, or range will translate into them doing more damage to the player. So variable sliders for other statistics can still be thought of taking health away from the player, which we defined as the difficulty of a game.
Internal stats aren’t the only variables that can be changed. The number of enemies can also be changed to affect difficulty. More bad guys means more difficulty. Variable changes can also be applied to neutral elements of the game to increase difficulty. For instance, less ammo or health spawns, smaller reward drops, or even a more dangerous layout variants of a room will all increase difficulty.
Often times however, these variable sliders are seen as cheap tricks to make the game more difficult. Players may think that the opponent is no longer playing a fair game. And that’s a correct observation, they literally have better stats or more troops. Consider Sid Meier's Civilization games, at a certain difficulty point the rival nations start to “cheat” and get free bonuses to combat, their economies or technological growth while the player starts off behind and handicapped. The game is no longer balanced, it’s easier for one side (or one player if you’re considering multiplayer games) than another. But there’s nothing inherently wrong with that design perspective. It’s an easy way to add difficulty to a game that might need it, and single player games are often ok with making the computer unevenly powerful.
The alternative to these kinds of “cheap tricks” is making the enemies more intelligent. Building a smarter AI for the player to play against may be more fair, but the costs of development and the actual extra fun a player would have may not be worth it. On one hand, the HP sliders simply provide the computer with more raw resources to work with. Smarter AI allows the computer to perform better with the few resources it already has. An artificial intelligence doesn’t have to be a neural network or a complex codebase simulating general intelligence. Simply designing a better rule or set of rules for the AI to follow is enough: “Before jumping out of cover, make sure your gun is loaded”, or “Don’t just run straight toward the player when trying to touch them, but zig-zag a little randomly to make it harder to predict”. Developing different patterns of AI, or introducing a little random chance into movement or decision making is an ok replacement for more intelligent AI, up to a certain point. Additionally, the computer AI can cheat. Give the AI access to restricted information, or knowledge of upcoming rng values. Letting the AI cheat and stack the deck a little will make the game more difficult, but again, it might not be seen as “fair”.
TL;DR Difficulty in a game comes from two main areas: variable sliders and smarter AI. Conceptually think of these two options as giving the enemy more resources to work with vs having the enemy use those resources more efficiently. Difficulty can also come from non enemy parts of the game like loot drops and map layouts. Also, when developing an enemy AI for a single player game there’s nothing that says the computer can’t cheat.
Continue reading about difficulty, complexity and challenge of a game here.