I was invited to be a guest on The Jim Rutt Show last week and we had a blast talking about his small but deep game Network Wars. We touched on a lot of interesting topics, including the power of minimalism, the relationship of heuristics to game depth, the function of randomness in game design, and more. But there was one topic in particular I wanted to highlight here, because it’s the aspect of the game that has had the biggest impact on me, which is the (ahem) ontological status of the game’s AI.
Network Wars is a turn-based strategy game played on a procedurally generated graph of connected nodes. You play the game against 4 AI opponents. On a player’s turn, they can select any node they control and use it to attack any connected enemy node. Attacks are resolved like this: Picture the numeric strength of a node as a stack of units of that size. One at a time, the game compares the “top” unit of each stack, “flips a coin” (with a slight advantage for the attacker), and deletes one unit from the losing node. If the defending node is reduced to zero, the attacking node takes over, moving all but one of its remaining units in to occupy the newly acquired node.
Here’s the Red (Human) player attacking the Green bot on the left side of the board.
At the end of your turn, the game adds “reinforcements” to your largest connected group by counting up all the nodes in that group and dividing the result evenly among all of that group’s “border nodes” (those connected to enemy nodes.)
The game is fun on the level of tactics, offering a lot of interesting situations where understanding the ramifications of the attacking and reinforcement rules informs your decisions about how and when to attack, and with a healthy dose of randomness to keep things uncertain.
But what’s really fun about that game is taking advantage of the opportunities created when the bots attack each other. Because a battle weakens both sides, you can get a decisive advantage over two far more powerful opponents by waiting for them to attack each other and then sweeping through the aftermath. Winning often means carefully manipulating the bots to make them fight each other in a way that is advantageous to you. I think of this as a kind of “bot diplomacy” and mastering this aspect of the game allows you to cleverly dig your way out of impossible looking situations, which is a blast.
The reason you are able to manipulate the bots is that Jim programmed their behavior to be very simple. Bots always attack whenever one of their nodes has a strength greater than a neighboring enemy node, and they always attack the weakest node they can. Knowing the algorithm which determines their behavior allows you predict bots’ movements with a high degree of accuracy.
This ability to know the bot’s behavior in advance and plan around it is what led to the mysterious thoughts that gave me a new perspective, not only on Network Wars, but on games in general. What occurred to me as I was playing late one night was this - the bots are not really opponents at all. Because their behavior is completely deterministic, and transparent to you, it’s more accurate to think of them as just rules, like the attacking rule or the reinforcement rule. They are mechanics that determine how the game transitions from one state to the next, like gravity in Tetris. Gravity isn’t an opponent in Tetris any more than it is in Baseball, it’s just one of the ways you get things done in the game. Likewise, the four bots in Network Wars.
The game looks like a multiplayer strategy game where some of the players are AI. But, from this new perspective, there’s just you and the game, and the opponents are part of the game, they are inside the game, and you aren’t. You’re like a sphere in flatland, you have access to a dimension they don’t, you can see them from “above” because you are outside the game, looking in.
Once you see the game from this perspective it seems natural and obvious. But there’s a lot of psychological scaffolding preventing you from seeing this way. After all, the conventional way of looking at things is also natural and obvious. Over here is the game - it’s a set of rules defining what you can do and what you are trying to accomplish. And over here are the players, they are each competing to achieve their desired outcome. Whether the game is played by humans, monkeys, AIs, aliens, or angels is irrelevant. So what if some of them have simplistic strategies? Is that really grounds to say that they aren’t players at all?
But another way of looking at it is to consider this game as it actually exists, with the bots in it. And to acknowledge that in this game the bots are less like opposing players and more like game features that have been “themed” to be opposing players. Like in StarCraft, where, when you play though a level in the single-player campaign, you aren’t “playing a game of StarCraft against an opponent.” The single-player game and the eSport are simply two different games.
(There is even a question, as we discuss on the show, of whether Network Wars, in its current form, would work with five human players. In my view, it would be an entirely different game, a game of politics, collusion, and negotiation. Jim has some interesting ideas for meta-game structures that could make it work and I hope he tries them.)
Another reason it’s hard to shake the conventional perspective, the one that sees the bots as opponents, is that it draws on deeply embedded ways of thinking that come easy to us, that are instinctual and emotional. We are the hero, they are the villains. They want what we want. They thwart us. Look at them thrashing and squirming, fighting to survive, to take what belongs to us.
Is this all just a question of semantics? I don’t think so. Because the perspective flip, when it happens, feels like a powerful insight that doesn’t just change but actually improves your model of the situation. It feels like an essential step in the process of getting good at the game.
When the AI opponents disappear, becoming just another rule of the game, we feel the weight of this thwarting, thrashing, squirming fight evaporate, letting us see the situation clearly - there’s just the game, a complex mechanism that we are tinkering with, trying to figure out how it works.
From this new perspective, thinking of the bots as players would be like talking to a door or yelling at a toaster, things we do sometimes, but usually not when we’re winning.
What would happen if the Network Wars bots weren’t trivial algorithms? What if they were complex algorithms that modeled the game tree and used evaluation functions to find moves that most improved their chances of winning? At that point, they would start to feel like opponents again. But why? Is there some threshold of complexity beyond which an AI flips from being just another part of the game to being a player outside the game, like us? Is it when we can no longer “run their code” in our head to predict them? I think the answer to both of these is no.
First of all, picture an AI that plays a game perfectly. Perfect play is simply an arbitrary fact about a game, a single, fixed solution that is an inevitable, always-present (but hard to find) consequence of the rules. Perfect play is the most “trapped inside the game” that it is possible to be. Playing against a perfect strategy would be even less like playing against another player that just happens to be automated, and even more like tinkering with the whole game as a puzzle.
As for needing the AI to be completely predictable, that also isn’t the case. Even with the Network Wars bots, there are some aspects of their behavior I haven’t quite figured out, like which node they attack when there are multiple equal strength targets. That doesn’t prevent them from being the paradigmatic case of things that are better thought of as mechanics within the game, not simulated opponents outside of it.
Maybe we should just bite the bullet and say that all AI opponents in all games are like this, best thought of as internal features of the game, not simulated players. This is, to a degree, how we treat them in games like StarCraft, when players collaborate against the AI in “comp stomps”, and even in Chess, where engines have been integrated as tools into the culture of game analysis and study, tools that allows us to peer more deeply into the reality of the game’s internal structure.
While we’re biting bullets, how about this one? Now that the AI opponents have evaporated like ghosts in a Scooby Doo cartoon, revealing mechanical contraptions where once we imagined otherworldly beings, where does that leave us, the main characters, the human players? In a certain sense, the thing that is true of them is true of us as well. We have a strategy that determines our moves. We can’t see it clearly from our perspective, but theoretically someone else could. Not only are there no villains in the game, maybe there is no hero either. Maybe there is just the game.
No, of course not! That’s ridiculous! The self, nothing but an illusion? Who would ever claim such a thing? But how about this version - imagine you’re playing Network Wars, but you’re using a little cheat sheet that tells you exactly what to do in every circumstance, like people sometimes do with Blackjack. Now it no longer feels absurd to say of yourself that you aren’t so much a player as simply a functionary, an operator, another node in the game’s network as it plays itself. You might be playing a different game, the game of how quickly you can follow the instructions, how few mistakes you can make, but you aren’t playing Network Wars.
So here is the conclusion I will draw - you are not a player when you are executing a strategy, you are only a player when you are developing a strategy, when you are creating, modifying, and evolving a strategy. The learning player, the tinkering player, is the only one that exists outside the game, and is able to play it.
From Infinite Jest: "The true opponent, the enfolding boundary, is the player himself. Always and only the self out there, on court, to be met, fought, brought to the table to hammer out terms. The competing boy on the net's other side: he is not the foe: he is more the partner in the dance. He is the what is the word *excuse* or *occasion* for meeting the self. As you are his occasion. Tennis's beauty's infinite roots are self-competitive. You compete with your own limits to transcend the self in imagination and execution. Disappear inside the game: break through limits: transcend: improve: win. Which is why tennis is an essentially tragic enterprise, to improve and grow as a serious junior, with ambitions. You seek to vanquish and transcend the limited self whose limits make the game possible in the first place. It is tragic and sad and chaotic and lovely. All life is the same: the animating limits are within, to be killed and mourned, over and over again."
This is a great observation! I've been enjoying thinking about this, it brings into focus a subtle but very interesting property of certain games. The first other example I thought of is Crusader Kings, where the other (game-controlled) characters all operate on the exact same rules as the player, to the point where you can save your game and switch over control to any other character and the game seamlessly takes over who you were just playing. The same thing would be possible in Network Wars for the same reasons.
I agree there's more going on here than semantics. But it makes me suspicious, if the definition of game, player, AI and so on is dependent on local knowledge and perception. What if I *think* the opponents are humans, but secretly they're not? Or, what if I only *think* I'm developing a strategy? It seems existentially precarious.
My thought is maybe a hierarchy can clarify things. At the base level (game₀) is the system of rules that define and mediate all the game's internal actions, state-tracking, all the nouns and a lot of the verbs. Then up a level is game₁ the ruleset that defines one or more actors interfacing with the rules one level down in game₀. That is, how players/opponents interact with the core system are fundamentally meta-rules, if you think about it. Then happily, definitionally it doesn't matter whether the actors are sentient and intelligent players, or bots that happen to be running on the same machine running game₀.
What's fun about this is that game₁ could be more complicated than merely managing players- like in many traditional roguelikes, where all creatures, the player character included, are constrained by the same base level rules, which is similar to the case here. And of course we can nest games beyond two layers, like if you and I compete to see who can win a game of Network Wars in fewer turns, we're playing a game₂ together, that interfaces with game₁, which governs the opponents who use all the capture rules and graph nodes defined in game₀.
See, much more clear! Oh wait though.. but each of our game₁s is a different game₁.. so maybe we need another subscript in there..? Or, they aren't different? Okay you know what, maybe nevermind.
But I do think there is something to the idea of thinking about some games, even internally, as sorts of nested games-of-games in this way!