Whenever I play Rock Paper Scissors for fun, I like to play a more strategic variant. I can’t have been the first one to have thought of this, but I can’t seem to find it described online, so allow me to describe it.

I developed this variant almost ten years ago as a simplification of Club Penguin’s Card-Jitsu game. Card-Jitsu required a special deck of cards; each card had a number, a colour, and an element. There were three elements—water, fire and snow—and each would “beat” another: water puts out fire, fire melts snow, and snow freezes water; yes, it was inspired by rock-paper-scissors. Each round, both players would choose a card to play, and the player whose card trumped the other card either by element or by number if the suit was the same would win the round. To win the game, one would have to have won three rounds with either a single element or one of each element (e.g. three waters, or a fire, water and snow), and each of the cards that are counted towards the win must be different colours.

The rules of Card-Jitsu showing what beats what and how to win

The basic rules of Card-Jitsu.

I simplified this to work with rock-paper-scissors. Each round is a regular throw of rock-paper-scissors and uses the same winning rules. Winning the game uses the three-of-one or one-of-each rule. It’s basically Card-Jitsu with the numbers and colours taken out, and the elements replaced with rock, paper and scissors.

See an example →

I just had a great idea: why not make a game like Notpron, but use Git as the medium instead?

I haven’t given this that much thought and I don’t have any ideas for puzzles yet, but here’s what I’m thinking:

  • The master branch would be the entry point for the whole puzzle. It will contain a README file with instructions on how to play and a pointer to the first level.
  • Each level will be represented by a branch whose name is of the form xxxxxxx/master, where xxxxxxx is a random string so that it is not obvious which level the branch is when looking at the output of git branch. This random string is the “level code” for the level.
  • If a level requires multiple branches, the name of each branch should be of the form xxxxxxx/yyyyyyy, where yyyyyyy is the name assigned to the branch, which can be anything.
  • The goal of each level is to obtain the level code for the next level.
  • Each level will make some use of Git’s functionality. File contents, file diffs, commits, commit messages, and even commit authors are all fair game. This is not an exhaustive list.
    • Ideally, this game should be playable through the GitHub website, or through a local clone of the repository obtained using git clone, so that unfortunately precludes the use of multiple remotes (to keep the puzzle self-contained) or hiding things in the .git directory. I wonder how GitHub deals with multiple roots…
  • Each level will have a README file that outlines the level’s puzzle. The first thing the player should do when reaching a new level is to look at the README.
  • All levels should branch from the initial commit, which should be empty. This allows flexibility in adding, removing, or replacing levels as needed.
    • Initially, I had the idea of having a game branch, where the commit of a level is the parent for the commit of the next level. I realized that this was not flexible enough if maintenance was required.
  • Like Notpron is to HTML and other technologies, this game should be an opportunity to learn about Git and to get familiar with it.

I don’t know what to call this game, nor do I have any concrete ideas for puzzles, but there’s the idea, and I think it has potential. If you have any suggestions, please leave a comment!

EDIT: The Cthulhu has been released!