Putting the AI in Impair
First off, sorry for the lame title, but I've already used Putting the AI in Pain and Putting the AI in Maim - there aren't that many words describing injuring someone that have AI in them!
Anyway, now for the post. Now that I have a firmer grasp on the rest of the game, I am going to revisit how Enemies work in Spaceship 47. The current system was designed to be very quick as I did not want the focus to be taken off of the players. However, this has meant that the enemies are too simple, boring and predictable. I think I was also wrong to try and minimise the time taken for the enemies actions to be resolved down to almost nothing, so as to make sure the focus was always on the Heroes. Every good story needs to give time to its villains to ensure they feel threatening and for people to have time to get invested in them.
I need a system that tells the players what each of the enemies will do when the enemies act. As far as I can see there are three types of things that an enemy can do in Spaceship 47:
Each of these can be further split.
Moving towards another NPC
Moving towards a Hero
Moving towards a certain space (fixed)
Moving towards a certain space (depends on the state of the game)
Moving away from a Hero
Moving away from another NPC
Moving away from a certain space
Determining the target that is being attacked
Determining the type of attack that is being used (ranged/melee/Area of Effect)
The defence that is being targeted
The strength of the attack
Interacting with the environment (for instance opening a door, throwing a piece of equipment the Heroes need off of a ledge)
Interacting with another NPC
How Other Games Deal With Enemy Actions
There are a lot of purely co-op games out there (so many in fact, that it was one of the reasons I stopped developing Spaceship 47 for a time), so let's see what I can learn from some of the ones that have come across my radar. In the following sections, click on the title of the game and it will take you to the Board Game Geek page of the game.
The number 1 ranked board game on Board Game Geek seems like a good place to start. Each creature type (e.g. Living Bones or Guard) has its own deck of cards. A card is randomly drawn from the deck and it instructs the player what the enemy will do.
Image from boardgemgeek.com, user Cephalofair
The card deck for each creature means that if you have never encountered this type of creature before, you have no idea what they can do, but slowly you uncover what they are capable of when you start fighting it. The next time you fight a creature of that type, if you can remember what they did previously, you will have more of an idea about what they can do.
Why this might work for Spaceship 47: If part of Spaceship 47 is about exploring new worlds, seeking out new life forms, then the fact that you have no idea what you are up against the first time you encounter a type of creature fits very well thematically. This method is entirely card based, which fits in with the heavy use of cards in Spaceship 47. It is also able to give each creature type a distinct feel from other creatures.
Why this might not work in Spaceship 47: Gloomhaven has creatures that are repeated throughout the campaign (I believe, I am not very far into it). As Spaceship 47 will be like Stargate or Star Trek, where a different world is visited each episode, then only the Draydun will be re-used throughout the campaign. The amount of cards needed for everything that the players encounter may well be impractical.
The reason that I included this one is that it was the basis for how I currently implement the enemy actions in Spaceship 47. While the fundamental ideas are the same, the actual implementations are slightly different from what I can tell.
This game is still in development, so the enemy AI has the potential to change before release. However, the way it stands at the moment is that the creature card itself contains the following information:
Target Number - this is used as the creature's defence when it is being attacked, but also acts as the target number for the player's roll when the creature attacks a player character. (10 in the image on the left)
Die if they take a wound
Reward (1 piece of treasure)
Effect of a Hit (1 wound)
Range (melee 0)
Effect of a Miss (nothing)
As well as the stats, the creature has a keyword, which is used in conjunction with the AI card bearing the same keyword, in this case FEROCIOUS (see image on the right).
The Ferocious card contains a list of actions. Players go from the top to the bottom and as soon as an action is possible, then the creature does that action.
In the image on the right, if there was a player character in the same zone as the enemy, then the creature would attack the player character using the stats on the creature card. If there wasn't a player character in the same zone as the enemy and there were no unengaged zones, but an engaged zone, then the enemy would skip over the first two blocks and do the third action which is to charge an engaged zone.
Both Images taken from YouTube video of play through of BardSung with King of Average
The creators of BardSung have said that this system is designed to be super simple and as quick as possible to resolve, to keep the limelight on the players.
Why this might work for Spaceship 47: Each creature would have their very own actions, meaning you can really tailor the actions of the creature to what they are and what you want them to do in a particular mission.
Why this might not work for Spaceship 47: This was the inspiration for how the enemy AI in Spaceship 47 works currently. Only instead of having the AI spread over two cards, Spaceship 47 has all of the AI on one card. This was felt that the enemies were too predictable.
Kingdom: Death Monster
When fighting a creature in Kingdom Death Monster, you create an AI deck which uses generic cards as well as ones noted by the mission to include because of the creature that you are facing. When it is the enemy's turn to act, you draw a card from the deck you built, which will look like the one below. For each section (of which there are three in the example below), you go down each condition, until you get to the first one that applies to the current situation and then do what it says.
With the example below, the first section is to choose the target. The first condition is to choose the closest threat that the creature is facing who is in range. If the creature is not facing any player characters, or if it is but they are all out of range, then you ignore this and go onto the second condition, which is the closest player character in the creature's field of view.
The second section is to move and attack the target chosen in the first section (assuming a target was chosen).
Image taken from YouTube video How to Play Kingdom Death: Monster Part 4 - Showdown Phase by Bored Online? Board Offline
Why this might work for Spaceship 47: Again, as it is card based it fits nicely with the rest of the game. Needing only a few specialist cards for each creature would mean that it could be manageable despite the number of different NPCs the players will encounter throughout the game.
Why this might not work for Spaceship 47: Watching the video of this process, it seemed to take ages to set up. One of the main goals of Spaceship 47 is to minimise the amount of time needed to set up the game.
The rules for the zombie's actions are incredibly simple in Zombicide.
Each zombie that is in the same section as one or more survivors attacks, automatically succeeding and giving the survivor a wounded card. If multiple survivors are in the zone that a zombie is attacking, they decide who gets what wounded cards.
Then, any zombie that hasn't attacked moves. The movement is based on a list of things:
If the zombie can see a survivor, the zombie moves towards the survivor
If the zombie can see Survivors in different Zones, the zombie moves toward the noisiest group
If the zombie cannot see anybody, the zombie moves toward the Zone that contains the most Noise tokens
If the zombie cannot see anybody and there are no open paths to the Survivors, they move toward the noisiest Zone as if all doors were open, though locked doors still stop them.
And that's it. Incredibly simple.
Why this might work for Spaceship 47: It is very simple, and despite only playing it once, I think it would be comprehensive enough not to hold the game up due to corner cases.
Why this might not work for Spaceship 47: This system is explicitly designed to model the behaviour of a certain type of creature - zombies. I do not believe this would be complex enough to show how different creature's act.
In Stuffed Fables you pull dice from a bag to determine what you can do in the round. Any black dice aren't used by players and are instead put on the enemy track. If at the end of the round there are dice equal to or greater than the number of enemies, then they get to act. Each enemy has its own dice which is rolled to determine the actions it will take from its enemy card (see image below).
Image taken from YouTube video Stuffed Fables - How To Play by Watch It Played
Why this might work for Spaceship 47: I like this as the players can see the total capabilities of an enemy but cannot be sure exactly what it will do on its turn.
Why this might not work for Spaceship 47: This system uses dice to determine the exact action the enemy takes. There are dice in Spaceship 47 but they are custom d8s and I'm not sure if I could balance the actions of the enemy using the dice. It is something to explore in the future.
Tainted Grail: Fall of Avalon
Tainted Grail is a game more about exploration than straight up combat. However, if you draw a combat encounter card, then the player(s) that drew the combat encounter have to fight it. During the player(s) turn they will be playing cards that give them cubes. If at the end of their turn there are cubes equal to or greater than the enemy's health, the enemy is defeated. In the image below the health of the creature is 8 as denoted by the number to the right of the enemy name.
Image taken from the Tainted Grail: Fall of Avalon rulebook PDF.
If the enemy is not defeated then the number of cubes is used to determine the enemy action. In the image above, there are three different actions listed inside the red border. They are:
0-4 cubes: player takes 3 damage
5-6 cubes: player takes 1 damage plus some other effect
7 cubes: 3 cubes are removed
Tainted Grail does not use a map to determine the positions of the player(s) and the enemy, therefore the enemy actions aren't "move and attack" but more "deal damage", " lose a cube", "run away" etc.
Why this might work for Spaceship 47: Spaceship 47 would have to change quite dramatically to fit this in. At the moment I want dynamic movement of a minis-on-a-map game. However, I am not averse to changing to something more like this if it fits more into the stories that will be told in the game.
Why this might not work for Spaceship 47: As above, Spaceship 47 uses point-to-point movement for both players and the enemies, with line of sight, and all that sort of thing. This system is completely different.
All of these systems have their advantages: from the simplicity of Zombicide to the distinctiveness of the opponents in Gloomhaven and Kingdom: Death Monster.
One thing that these games all have in common is that the mechanisms that I have outlined have interesting and varied ways of killing the player's characters. As Spaceship 47 has no character death, I need to come up with something slightly different for the enemies to be threatening. Instead of the enemies threatening the lives of the Heroes, they should be threatening the success of the mission.
How This Affects Spaceship 47
I need to make a few decisions about my game. Which of the following do I want?
the enemy actions to be unknown to the players when they first encounter them to keep within the theme of exploration (like Gloomhaven)
the enemy actions to be clearly stated so the players have knowledge of what they are up against and can plan accordingly (like Zombicide and Tainted Grail).
And which of the following do I want?
the enemies acting predictably, so it is like a puzzle for the payers to solve (BardSung)
the enemies to be completely random so the players never know what is going to happen (Gloomhaven)
somewhere in the middle, where what the enemy will do next is within a range of actions, but the players do not know exactly what the enemy will do until the enemy acts (Stuffed Fables)
Do I need to change anything in the game? For instance, in Spaceship 47 at the moment, the enemies take one action per turn (just like the players) and have a number of turns per round depending on the number of Heroes in play (to scale difficulty). Would it be easier to have the enemies all act once at the end of the round, but for them to be able to do multiple actions during their turn?
The way enemy movement works in Spaceship47 at the moment is that the point to point maps have coloured lines with all of the enemies following the white lines. Maybe having multiple routes denoted by colours and switching the colour the enemy follows due to certain criteria would be a simple way to make things less predictable.
I have the basic idea of a new mechanism for the enemy actions, but I need to think about it a bit more. Any feedback from this post will help with fleshing out my idea before I reveal it to you. That will probably be my next blog post.