Fog of War in Push the Lane (and strategy games, generally)

Today I’d like to spend a little time talking about the game design of Push the Lane, a game that I’m working on (and currently Kickstarting.) If you aren’t up on the basics of what Push the Lane is, check out the Kickstarter page, or this page here on my site.

A really great indie game designer who I follow, Arnold Rauers (designer of Card Thief, ENYO and Card Crawl), asked me recently why there is “fog of war” in Push the Lane. It’s a reasonable question, and one that others also have asked me recently.

Fog of War

For those who don’t know the terminology, “fog of war” in videogames has come to mean “areas of the map or grid on which the player is prevented from seeing some game-state information”. So in StarCraft or League of Legends, most of the map is in fog most of the time. It’s just those areas right around your units that you can see. These units give “vision” within some radius, which reveals updated information about who is within that little circle.

Most videogames do this somewhat haphazardly. In a game like StarCraft, by late game you can have many, many units all over the map, allowing you to see almost all of the map. One of my favorite games, Outwitters, also has this issue, where at the beginning of the game the entire map is a mystery, and near the end almost nothing is. That has always struck me as strange: if the fog of war is important, it’s kind of weird that you can just get rid of it by making enough units and moving them around.

Randomness

I have a more sophisticated way of looking at stuff like fog of war in game design. Basically you can ask the question: at what point does new information reach the player? In games like Summoner Wars or Risk, you have zero time to respond to the sources of randomness – dice rolls. You take an action, then roll the dice to find out how it turned out. If you rolled badly, there’s nothing you can do about that. That “one” you rolled will be in the match, influencing all future game states. This is why many players feel iffy about dice-roll combat in games or other forms of harsh randomness (which I often call “output randomness”).

At the other end of the spectrum, you have games like Chess or Go which have no random elements at all. This means that the player can essentially look ahead as much as they want / are able to, and so they should. And indeed, high level play does involve a lot of looking ahead. Players are forced to make a weird choice like, “should I keep calculating more moves ahead?” Even if you don’t, the feeling that you could have is an oppressive one. Also oppressive is just the sheer amount of information that you’re staring down in a perfect information game. This means you have all kinds of annoying easy and medium-hard calculation that you just have to do – stuff like “just make sure I don’t put a unit in harm’s way” that will probably be familiar to Chess players.

So at both far-ends of the spectrum, you run into problems. So what you want is something in between. You want randomness, but you also want the new random information coming into the game to give players time to respond to it. Imagine in a card game, if you didn’t draw from a face down deck, but there was a face-up market that you drew from that was constantly getting new cards. This is creating a little bit of “distance” between the player’s input and the new random information. You can extend this further by making there be a “upcoming cards” zone, where the game first draws out cards face-up to this zone, where players can see what is coming to the market, but you can not choose these cards.  They’re kind of like a “next box” in Tetris, which also is this kind of randomness. I call this kind of randomness “input randomness”.

The Information Horizon

That thing we are pushing back in that example is the information horizon: the point at which new information comes into the game. (I wrote about this issue more in this article, Uncapped Look-Ahead and the Information Horizon.)

Games like chess do have an information horizon – how much the player is able (and willing) to look-ahead and calculate. The more they’re willing to do that, the more raw information they’re getting about the game. If you do twice as much of that as I do while we’re playing each other, it’s similar to if we’re playing StarCraft and all your units have twice as long of a vision radius! We can see easily in that example how the strategy game of Chess is distinct. If you’re playing StarCraft against a map-hacker, there is still a strategy game going on, but your opponent just has some extraneous resource, a huge well of bonus information that you do not have.

The bigger point about perfect information games like chess are that the information horizon was not chosen carefully by the designer. In practice, they kind of end up working because most people have a similar degree of interest and capability to calculate, but if you take 5 more seconds every turn than I do and we’re at a similar skill level, you’ll probably beat me, just based on that alone.

Choosing the Information Horizon for Push the Lane

In Push the Lane, you have these lanes of gems, each with numbers on them, crashing into each other and reducing the number. The interactions are actually totally deterministic – they simply subtract their values from each other. So a red 5 hits a yellow 3 and you’re left with a red 2, for example.

What is randomized is the rate of gem-spawn (it’s something like every 3-6 turns, using a bag system for uniform spawn rate), and the specific number on the gem (which ranges from -25% to +25% of the tower’s “power” rating, also using a bag system for uniformity).

If you could see the whole board, there would be a lot of basic arithmetic that players would have to do in order to make decisions. Picture one lane, with a yellow 11, a yellow 17, and then a red 5, a red 9, and a red 8. Technically you can sit there and just math out those interactions and how they will go, and so, you should. But that’s pretty oppressive to do to the player.

We could also show the gems, but hide the numbers, as Arnold recently suggested, but… why? For what reason? If you don’t know the numbers, how is it useful to know that there’s a gem there? That information is a lot less useful than you might think, especially because of distance (which we’ll talk about in the next section).

The individual gems are not important. What is important is knowing generally “how pushed the lane is”, which the colored tiles show the player, even through the fog.

Range

Another thing that factors in strongly here is the range of your abilities. Mostly, your abilities will affect units that are adjacent to you, or perhaps two tiles away. You won’t have abilities that affect units halfway across the map, which is another reason you don’t need to know what’s over there right now. By the time you get over there, that gem won’t be in that spot anymore.

We want there to be a mostly deterministic game state, but in terms of the player’s experience, we want information to be slowly feeding in at a rate that he has time to deal with it, but not show the player a huge wealth of information, most of which he can’t do anything about right now anyway.

It’s emotionally oppressive as well as strategically confusing to show the player a bunch of information that he can’t interact with, and that won’t even be the same by the time he can interact with it. Do you want to play a version of this game where you have to sit there and do a bunch of simple math problems to know that if you move over to a certain tile, there should be a red 6 gem next to you by then? It’s increasing the calculation for very little reason.

Using Fog Well

Don’t think about fog in terms of a physical, literal thing. Don’t build your fog around stuff like “field of view”, where objects actually occlude the fog because “if it was a person they wouldn’t be able to see behind the object”. For strategy games, that is valuing the wrong things, and will cause you major problems.

Also, don’t allow the player to pay some in-game resource to increase the amount of information they can see. The information horizon is a very delicate thing; you shouldn’t have StarCraft style “comsats” or a character vision upgrade or towers you can place that increase your vision. Certainly, if hidden information is important for your game, there shouldn’t come some point where all the fog is removed from the map!

Instead, think along the terms of random information entering the game, and what you want the player to know, and when you want them to know it. Two of the things that I am really proud of in the “fog” of Push the Lane are the colored lane tiles through the fog, and the fact that blue (non-lane) tiles aren’t fogged at all. Things don’t move, and aren’t random on those tiles, so they should be known. Otherwise, the player would have to “remember” what was there. Similarly, buildings should be visible through the fog.

Conclusion

I have a lot more to say about fog of war that’s beyond the scope of this article. For further reading, I would recommend checking out this article and this article. Also this article, where I responded to some concerns that Invisible, Inc. designer James Lantz leveled at my theory.

And if you haven’t already, please be sure to check out the Push the Lane Kickstarter, which is currently on day 4. Thanks for reading!

As always, you can support my work on Patreon.com as well. I’d like to give a special thanks to supporter Aaron Oman. Thank you!

Riot is thinking about input/output randomness in League of Legends

For the past five years or so, I’ve been talking about the input/output randomness concepts, and why they’re so important for game design. While I wasn’t the one who coined the terms—that honor goes to the great fellows at the Ludology Podcast—some Googling around shows that no one has talked about the concepts, or developed them, nearly as much as I have.

In short, talking about randomness, especially in these terms, is kind of my thing.

Here’s a quick list of some of the more notable times that I spoke in depth about this subject:

Beyond that, you can (and should) read my books, listen to my podcast and watch the complete 3 Minute Game Design on YouTube.

Between that, and the fact that I recently praised League of Legends and its developer, Riot, for some of the radical things they’ve been doing to their game, you can imagine how pleased I was to see that a Riot designer, Greg Street, made a video talking about input and output randomness in League.

I want to do three things with this article. First, I want to signal to the Riot devs that I would be more than happy to help them out with this project of making the game more input-randomnessy and less output-randomnessy. Let’s chat!

Second, I will talk about the current state of randomness in the game. And finally, I will talk about a few of my recommendations going forward.

The Gist

You should check the links above for more detail, but the very short and rough explanation of input/output randomness is that they are describing the distance between new random information and the user’s ability to react.

Input randomness is stuff like the Tetris “Next” box, or a randomized map—stuff where the user has time to see what the random information is and make decisions based on it. Fog of war is also often used as a mechanism for input randomness: you see stuff usually a turn or two before it can threaten you.

Output randomness is stuff like “roll to hit” in RPGs or games like X-Com. You decide to attack a thing, and then there is random information which comes into the game and determines whether that hit connects or not. In this case, you have zero time to “respond” to the new random information. The course of the game has now been altered by pure randomness, unfiltered by your decision-making.

A quick note is that actually, input and output randomness exist on a spectrum. Randomness which is really close to the user but still technically is input randomness(imagine 1-tile-radius fog of war) may actually be so close as to function similar to output randomness. For more on this, read my article on the Information Horizon.

One more note: as Mr. Street said in the video, output randomness is bad for strategy games. (Actually, he wasn’t that strong with the language, but that is definitely my view.) You also don’t want zero randomness in games. What you want is a carefully placed information horizon.

Randomness in League

There are a number of sources of randomness in League already, but what’s exciting is what they’ve been adding, so let’s talk about that first.

One of the big ones, that they’re talking about in the video, is the new Dragons (or I guess they’re calling them Drakes? I’m going to call them dragons) system. Every game, there is a random elemental dragon. Killing each dragon gives your team a different kind of buff—something like, Air dragons make you move faster, fire dragons make you deal more damage, Earth make you destroy towers faster, and so on. After one of these dragons is killed, a new random one will spawn.

But here’s the cool thing, and when I saw it, I was impressed, because it’s exactly what you should do. The dragon takes awhile to respawn. But on the dragon’s death, the next dragon is selected and a big bright symbol is painted on the dragon’s lair wall for everyone to see. This is a great example of input randomness. Both teams know exactly what random dragon is going to spawn there, and decisions can be made around that.

This system is a really great start. There should be a lot more of this on the League of Legends map (which I guess they call “Summoner’s Rift”? I’m going to call it “the League of Legends map”).

My Suggestions

Category #1: Increasing input randomness. I believe that by making the League of Legends map more dynamic and more different each game, Riot can worry less about perpetually adding content to the system and the sort of “patching just for the sake of keeping things fresh” idea that they arguably do sometimes.

  1. Randomized geometry. Why is the map geometry—the pattern of the walls and everything—the same exact every match? Is this geometry sacred? Remove this brush, put a pillar here, change the shape of this wall. You can definitely design the parameters in such a way that it’s always fair for every character, yet slightly different every game. If you’re really worried about it causing balance problems, maybe have it change randomly at 10 minutes and at 20 minutes, or something.
  2. Randomize all jungle monsters. Having a fixed jungle means having a fixed jungle route. Instead why not have there be a few more jungle monsters, but what they are and where they are is randomized somewhat. That way you can have a more dynamic and less “memorized Starcraft build-order” automatic pathing to the jungling. Make it mirrored, so it’s fair.
  3. Random plants. I love the new “plants” system, and maybe it’s just the beginning. But why not randomize the positions and the types for these plants? Make it mirrored, so it’s fair.
  4. Push the dragons further. Right now the buffs are cool, but maybe instead of just the four elements, it’s four different kinds of monsters as well. So you could have an Earth Wizard who does lots of magic damage, or a Fire Ogre who has shitloads of health. Maybe Ogres, when killed, change the terrain somewhere else or spawn plants somewhere.
  5. Random (mirrored) cannon minions, and more? I like the idea of there being some more variance in the minion-stream itself. What if randomly, every 5-7 waves or so, a super minion spawned on one of each team’s lanes (probably, it can’t be the same lane). There could be a little map alert telling both teams about this. I spent like two minutes thinking of this idea, I don’t know—but the point is, I do think there’s a lot more that could be done with minions than is being done here.

Category #2: Removals of existing output randomness. These aren’t quite as important in my view, and they’re also less likely to be taken up by Riot for a number of reasons. But ideally, I’d love these to be changed.

  1. Remove Random Critical Hits. This is totally unnecessary for this game. It’s totally a vestigial D&D thing and all it does is unnecessarily loosen up a system which already is very loose. I’m actually surprised that high level players don’t complain about this, because a lucky crit at the wrong time can completely change the course of a match.
  2. Reduce execution across the board. This one is hard, and I don’t expect Riot to act on it for that reason. But, in an ideal world, we should be making the game be less about crazy reaction speed in team fights, and more about strategy. Removing skillshots and having them be target-based is one suggestion here. Getting rid of “burst” (massive amounts of damage in a tiny window of time) as a concept would be a much wider scope change that would really benefit the game. That would mean questioning the roles of burst-mages and assassins, which is a huge job, but personally I think it would be worth it. Because, as I’ve written about before, execution is a form of randomness, and this becomes more and more the case the faster players are asked to execute.

(On a slightly related topic, here are some more League patch notes that I’d love to see.)

Anyway, those ideas are mostly off-the-cuff (but not getting rid of random crits. That seriously needs to go), but the point is just to demonstrate some ways that Riot’s designers—and designers in general—can use the input/output randomness theory in practice to create a better experience. Using input randomness in this way, you can get the “variety” that is so sought after using extremely costly (both in terms of production costs and accessibility costs) asymmetry content, while also providing players with a fair, balanced competitive experience.

I’m really glad to see someone as high profile using these terms. If you know of anyone else talking about randomness in this way, please let me know in the comments!

 

If you enjoyed this article, please consider becoming my patron on Patreon.com.

CGD Podcast Ep. 31 – permadeath, structure, the death of game design writing, and more

Hello everyone. Today I’m talking about a new article I read about permadeath/grinding, as well as what I perceive as the death, or at least curving off of, the world of game design writing.

I also read and responded to a Frank Lantz quote (now on the Dinofarm Forums!) on the topic of structure in games and win rates.

You should also check out the game design subreddit if you haven’t already: http://www.reddit.com/r/gamedesign

(By the way… beware the term “beautiful”.)

As always, you can support the show by visiting my Patreon page.

Minimize calculation (in games worth playing)

This is a short follow-up to my article, “Uncapped Look-Ahead and the Information Horizon“, in which I proposed the concept of an information horizon: the distance between the current turn, and the point at which information becomes known to a player (usually, but not always, this means that it has become “public information”).

A simpler way to word it is, “how much time do players have to react to new information?” In the case of rolling a die to hit, you have zero time to respond, so in this case the “information horizon” would be right up in the player’s face. Alternatively, drawing cards to a public market or revealing new terrain via fog of war tends to lend the player a few turns / some time to respond to that new information before it affects the gamestate.

I also discussed the issue in Episode 6 of the 3 Minute Game Design YouTube series.

This concept is important because one of my guidelines for strategy game design is that, as I talk about in the video, if the information horizon is too close, the line of causality and the final outcome quickly starts being disassociated with that of the player’s performance—which is what we’re trying to measure in a strategy game, after all. If the information horizon is too far away, we get a “look-ahead contest” situation where it largely comes down to who calculated (solved) more of the available game state. This is mostly a brief review of things I’ve talked about the above linked articles/videos.

The new thing I want to suggest today is: Assuming a reasonable degree of goal feedback efficiency, we should strive for as little calculation as possible. To phrase it another way, in any game that’s good enough to be worth playing, you should try to minimize the amount of calculation that’s possible.

A reasonable degree of goal feedback efficiency

When we look at a game, “goal feedback efficiency” is a rough approximation that we can make that describes how accurate the end state of the game is with regards to player performance. A game with perfect goal feedback efficiency would give a win to the player who made stronger inputs 100% of the time. A game with good goal feedback efficiency would give a win to the player who made stronger inputs somewhere about 90% of the time.

Every game needs to have a pretty high degree of this, without exception. I’m not sure what the number exactly is, but I would say if it gets much lower than, say, 85-ish%, it starts becoming hard to “trust” a game. If you have less efficiency than that, it becomes hard to defend playing the game.

I would not play a 75% efficiency game. Why? Because a quarter of my matches are sending me false signals about my performance. That might not sound like too big a deal, but it becomes a very big deal when the player has no way of really knowing which matches are the false signals and which aren’t.

The classic answer to this problem is that figuring out which matches to believe and which to chalk up to randomness is part of the skill of the game. First, this strikes me as an attempt to make excuses for what exists, rather than an actual suggestion about what makes for good game design.

But beyond that, I don’t think that this is possible in an unsolved game. It’s hard for me to believe that a person could play a complex game, barely cling to enough understanding to pull off a win, and then also, on top of that, have enough additional systemic understanding to determine that this win was because of random effects and not their own agency. In other words: if you have a balanced game, players will be understanding the system just well enough to win or lose – they will be playing at their maximum capacity. So it’s unreasonable to expect players to be able to also interpret their win/loss as to whether it’s just based on randomness or not.

Ideally, games would have a 95+% efficiency rating, and I actually don’t think that that’s too hard to pull off. It doesn’t mean you can’t have some random variance; it just means that the random variance should be sufficiently input variance so that players can account for it, and to the extent that there is some output variance, they’re small enough in impact and there are enough of them so that they mostly average out. Hundreds of small (+-10%) random damage variance over the course of a match is probably OK, but a couple of critical card-draw failures throughout a match probably isn’t.

This is actually a pretty practical concern. Having a low efficiency rating means it will simply take the player too long to explore your system. In the finite number of hours they’re going to give your game, the amount of “effective depth” (depth the player can access) drops quickly after 95% and then plummets when you go much lower.

Of course, today’s game players who are used to playing stuff like Hearthstone will probably do it anyway, but for game designers who want to potentially someday make something better than Hearthstone, it is critical that we understand and internalize this idea.

 

…As little calculation as possible

So, if you’ve got this roughly 95% efficiency rating (which you should!), then we can ask the question: how much calculation should your game allow for? Or put another way: where should your information horizon be? Quick definitions:

Quickly, a couple of terms: Calculation, for the purposes of this article, means solving. It means literally following logical courses of action to their deterministically guaranteed outcomes. When one does “look-ahead” in games, they are typically doing calculation. Sifting through public, deterministic game states in Connect Four is a great example of calculation.

Analysis, on the other hand, is a word I use for the kind of “thinking” in games that doesn’t fall in that category. When you can’t calculate, you use a looser, heuristic estimation process, and I call that analysis.

So back to my claim:

Assuming a reasonable degree of goal feedback efficiency, we should strive for as little calculation as possible.

Obviously we can create a game with zero calculation – perhaps something like the card game War, or maybe (a single match of) Rock, Paper, Scissors. In these, we’ve brought the information horizon to “right up in your face” – once the other player has played Rock, you can’t do anything about that. But we’ve also destroyed our goal feedback efficiency. Wins have nothing to do with player performance.

The point is, you do need some degree of determinism in games; some “causal line” that goes from the player’s input and stretches out into the system to some extent. But by using input randomness smartly and carefully selecting the position of the information horizon, you can (and should) reduce the calculate-able (solvable) parts of your game down to a reasonable level.

This isn’t just a matter of “balancing” goal feedback efficiency and calculation. It’s much more like, goal feedback efficiency has a floor that it really just can’t go below (95, mayyyybe 90%) no matter what, whereas calculation is much more flexible.

This is because the downside to too much calculation is that the game is a little too solvable, but still totally skill based. In short, it’s a little bit too much like Chess. It’s kind of OK for games to lean into being a little bit Chess-like.

chess-game-strategy-intelligence-52993

The downside to too little goal-feedback-efficient is that the game becomes indistinguishable from noise, and totally unplayable to anyone who’s alert to this kind of problem. Granted, there are a lot of people who will happily play this kind of game anyway, as so many popular games fall into this category these days, but my writing has never been about “game design guidelines that help you make games people won’t know better than to play”. My game design guidelines are about helping you make good games.

If you build a strong system, with a well-placed information horizon, this new guideline is going to be met somewhat naturally. But it’s another way to test a system you’re already working with and to understand the information horizon concept.

Enjoyed this article? Consider supporting my work on Patreon.com!

CGD Podcast Episode 23 – “On Games At the Games”, A Conversation with Frank Lantz

Frank_Lantz_at_work_in_area_code_offices

This week I had a great conversation with NYU Game Center director Frank Lantz about randomness and general game design philosophy. We meant to get to three other topics – execution, reading and improvisation, but not all-that-surprisingly, we never got there in the 70+ minutes of this episode.

Mentioned in this episode:

Frank’s “Against Design” article

David Deutsch’s The Beginning of Infinity

Nassim Taleb’s The Black Swan

Nick Bostrom’s Superintelligence

 

Let me know what you thought of the conversation in the comments below (if you’re lucky, Frank may even be hovering nearby to respond!)

If you enjoyed the show, please consider supporting the show by becoming a patron at Patreon.com!

CGD Podcast Episode 22: Mind Games and Reading the Opponent

Theodoor_Rombouts_-_Joueurs_de_cartes

What does it mean for a game to involve a lot of “mind games”? Can you really make “reads” off of an opponent and predict what he’s going to do? What’s the difference between “reading the opponent” and “a lucky guess”? This episode explores these questions, discussing games like Poker, Street Fighter, Rock Paper Scissors, Yomi and more.

Support the show on Patreon by clicking HERE!