Games at the Seam
Recently I created a script to help me play a wargame called Bandit. The rules of Bandit are simple — log into a level with SSH and find the password for logging into the next level. This can mean everything from searching for a hidden file to cracking a 4-digit code with a script.
This script doesn't help me solve any of Bandit's levels. Rather, I made the script to help me play Bandit — it automates the process of logging into levels and storing level passwords. These were things that tripped me up when initially playing the game. Typos and password mismanagement stalled my progress more times than I'd like to remember. Frustration brought up an interesting question...
Is it the game's fault for this?
Bandit doesn't keep track of your passwords. That's the player's job by design. Think about when you play a card game. You have to follow the rules and enforce them yourself. Some might call this laborious. Most wouldn't call it broken. That's the player's job by design.
But this is where it gets fun. As a player, you have the freedom automate some of those rules and progressions so you can focus on other aspects of the game. Not completely automate a game like digital solitaire, but take parts that are redundant and make them easier to deal with. This is where the Bandit script comes in. It doesn't solve the game for you, just makes logging on and storing passwords easier so you can focus on how to solve the levels.
The script is in no way a complicated project, but I think it echoes a point I keep running into time and time again — contribution happens at the seam of things (which reminds me of this awesome newsletter). The question is how to keep (generously) adding threads where seams are needed. How do you find the seams? How do you add your threads to the seam? How do you maintain seams? These questions are what makes contributing to projects so exciting.
It doesn't take much. Just start with a thread.