Programmer: Battle for Bandwidth (working title)
By Michael Keller (rellekmr@rellekmr.net)
Overview
Programmer is a game where you and your opponents play hackers who battle each other over a computer network for points. You score points by writing code (via Code cards) to a shared program which is then run. How the program plays out is dependent on the plays that you and your opponents make.
Each round, each player will have a chance to play more Code cards to the program and to play Event cards to boost his or her efforts or to hinder his or her opponents’ efforts. The program is then run in its entirety, with each Code cards scoring a point for someone. The player who can best plan out the program while keeping his or her opponents’ options limited will have a strategic advantage. The first player to reach a set number of points wins!
Starting the Game
The player who most recently used a computer gets to go first. Remove the “Token” and the “Terminal 1” cards from the deck and give them to that player. Then shuffle the deck and deal each player four cards.
Diagram of table layout with four players sitting around it.
Reveal cards from the top of the deck until you reveal a Code Card that does not say “Function” or “GOTO” on it. (See example cards below) Place that card in the FUNCTION area, discarding the rest.
example Code card (left) and Event card (right)
Your Turn
Each round, the player with the Terminal 1 card goes first.
On your turn, you may take two actions. You have four different choices for your actions:
1) Draw a card (if you have less than six cards in hand).
2) Play a Code card to the Program.
3) Play a Code card to the Function.
4) Play an Event card.
You may choose any combination of the four, in any order. You may also choose to do one of the four twice as both of your actions.
Event Cards
Event cards are played only on your turn and use up an action when you play them (unless the card itself says that it plays in response to something). Event cards have a title, lore, and gametext. Do whatever the gametext says, then discard the card.
If you played “Cut and Paste” on an opponent, you would look at his or her hand and take a card from there into your hand, then you would discard “Cut and Paste”. This would use up one of your actions. However, in response, your opponent could play “Firewall”. This would cancel “Cut and Paste”, so you wouldn’t get a card from his or her hand. “Cut and Paste” would still get discarded, and one of your actions this round would still have been used up. Your opponent would not have used up any actions, because “Firewall” says that it is played in response to something else.
Code Cards
Code cards are played to the program or the function, and it is these that will determine who scores points. They are only played during your turn, and you use up one of your actions when you play them. When you play a Code card to the program, it is always placed directly after the very last card in the current program. You place it to the right of that card, unless there are already three Code cards in that row, in which case you place it in the first space in the next row down. You may also play it to the function instead of to the program. When you play it to the function, discard the current function and place the new Code card in its location. Code cards are NOT executed when you play them. They are only executed at the end of the round when the program is run. Code cards come in several different types.
Above are the simplest Code cards: pass cards. When the program is run and this card is executed, pass the Token card either clockwise or counterclockwise, as indicated by the arrows. You pass it the number of players indicated by the number inside of the arrows (ignore the green number in the bottom-right of the card, its use will be explained later, in “Running the Program”). Whichever player has the Token after it has been passed that number of places scores a point. Each Code card can only score one player a point. The first card shown would pass the token from its current spot to the player one place counterclockwise, who would then score a point. The second card would pass the token three places clockwise, and only that player, and not the two players in between, would score a point. It is possible for pass cards to pass it all the way around the table or even further. If the second card was executed in a three-player game, the Token would return to the player who had it before the card was executed. In this case, only that player would score a point.
These are pass X cards. They function like normal pass cards, but the value of X changes each round. How it is set each round is explained later in “Running the Program”.
These are “send to terminal” cards. Instead of passing the Token a certain number of spaces when they are executed, they give the token directly to whichever player is at the terminal indicated on the screen, no matter where he or she is sitting, and that player scores a point. The player to the left of Terminal 1 is known as Terminal 2, to his or her left is Terminal 3, and so on. If X was equal to three, the first card would send the Token to Terminal 3, and the second card would send it to Terminal 2. If the Terminal does not exist, such as Terminal 6 in a five-player game, this card has no effect and no one scores a point from it.
These are GOTO cards. These cards may not be played to the function area, only to the program. The trash can means that they are also only ever executed once, and then discarded from the program. When “GOTO 10” is executed, return to the beginning of the first line of the program and continue executing from that point as normal. When “GOTO 20” is executed, return to the beginning of the second line of the program and continue executing from that point as normal. Don’t forget to immediately discard either of these cards after it is executed for the first time.
This is a Function card. Like the GOTO cards, these may not be played to the function area, only to the program. When this card is executed, you instead execute whatever Code card is currently in the function, but leave this card where it is. You then continue the program as normal. Multiple Function cards may be in the program at the same time. Each one of them would copy whatever card is in the function area when they are executed.
After Your Turn
After the player with Terminal 1 takes his or her turn, play proceeds clockwise until everyone has had a turn. Once every player has had a turn, it’s time to run the program!
Running the Program
The first thing you do when you run the program is determine the value of X for that round. X is always equal to the first Code card in the program (remember that the function is not part of the program).
After you’ve determined X, execute the first card in the program. Score a point for whoever receives the Token from that Code card. Repeat this process for every card in the program, going from left to right in a row, then moving on to the next row.
Once you have executed the last Code card in the program, it is time to end the round.
Ending the Round
When the round ends, the first thing you must do is clean up the program. Check to see if there are more than two rows of Code cards in the program (remember that when you play Code cards, you go left to right in the bottom row until that row has three cards, then you make a new row underneath that). If there are three or more rows of Code cards, delete the very top row, discarding those cards, and move all other rows up one. If there are still more than two rows, repeat this process. Once you have at most two rows of code, no more rows will be deleted.
The final part of every round is reassigning terminals. The player with the Terminal 1 card passes it to the player to his or her left. That player is now Terminal 1 for the next round and begins his or her turn.
Winning the Game
The first player to reach a set number of points wins the game. You win the game immediately after receiving the necessary number of points, and do not need to wait for the program to finish executing. The number of points needed to win can be found in the table below:
|
2 Players |
15 Points |
|
3 Players |
12 Points |
|
4 Players |
9 Points |
|
5 Players |
7 Points |
|
6 Players |
6 Points |
Example program:
In our example, Adam has the Terminal 1 card and Carl starts with the Token. The first thing we do is set a value for X. The first card in the program is pass 3 clockwise, and the green circle shows that it sets X to 1. Remember, do not use the number from the function card for X, and use the number from the first card in the program itself.
1) Now that we have X, we execute the first Code card. Carl has the token, and the first card passes it 3 places clockwise, so this card gives it to Betty, and she scores a point.
2) The second card passes the Token one place counterclockwise, so Adam gets it and he scores a point.
3) The third card passes it two places counterclockwise from Adam to Carl. Carl scores a point.
4) X=1 this round, so the fourth card passes it from Carl to Dana. Dana scores and everyone is tied at one point apiece.
5) The fifth card sends the token to Terminal X+1 = 2. Adam is Terminal 1, so Betty is Terminal 2. She gets the Token and takes the lead with two points.
6) The sixth card sends it back to the start of line two. The GOTO card is deleted, leaving an empty space.
7) We’re back to card four, which now passes it from Betty to Carl, who ties Betty with two points.
8) We now again execute card five, giving it to Betty because she is still Terminal 2. Betty retakes the lead with three points.
9) The GOTO card is gone, so we do not execute it again.
10) Now we execute the last card, Function. Function copies the card in the function area, as shown by the green arrow. This passes it two spaces clockwise from Betty to Dana. Dana now has two points.
The scores after running the program are: Betty 3, Carl 2, Dana 2, and Adam 1.
Now we end the round. There are three rows of Code cards, even though the bottom two are not completely full at this point (row 2 had one of its cards deleted, and row 3 only had 1 card to begin with). So, we delete the top row. Our program now looks like this:
And the last thing to be done is to pass Terminal 1 one place left. So Betty is now Terminal 1 and she will get the first turn next round.
Notice that the next time the program is run, X will be set to 6. That is, of course, assuming something doesn’t happen to that first card before then!
The next Code card to be played to the program will be played to the right of the Function card. Even though there is an empty space at the end of the first row, you always place a Code card directly after the current last card in the program. All four players will get another turn to play Code and Event cards, then the program will be run again, accumulating more points for the players until one of them reaches 9 points, which is the winning number for a four-player game!