Unsocial Deduction Games: Crops and Robbers

Tristrum Tuttle
5 min readOct 13, 2020

--

In a previous post, I wrote about four important goals of the perfect social deduction game: any number of players can play and have fun, everyone is always actively participating, and the game balances “social” and “deduction” without being too complicated.

When I’m not busy ruining my friendships with lies and deceit, I enjoy making websites. Social deduction websites are not a new invention — one of my favorite Social Deduction games is Spyfall, which I play with friends through the site netgames.io. My initial plan was to make a game similar to the classic camp game Mafia (which also has a very popular online version called Town of Salem), but with a few big changes.

  • The goal in Crops and Robbers is to collect the most crops, rather than to eliminate the other team.
  • Actions can be made at any time, rather than by rounds or by turn, and each action takes 10 seconds to complete.
  • The games are timed, and at the end of the time limit the team with the most crops is the winner.

Version 1: Chaos Reigns Supreme

I decided to build my website in Ruby on Rails, a popular website development framework. I chose Rails purely because I have experience building Rails apps and wanted to be able to pivot easily, without learning a new framework or worrying about performance. I started by defining two tables in my database, one for players and one for game lobbies or “rooms.” One player makes a room, and then new players join that room using the room’s code. When the game starts, each player is assigned one of two roles:

  • A farmer, who can either farm to get crops or guard another player.
  • A robber, who can choose a player to steal crops from. If the robber tries to rob from a guarded farm, they received no crops. The robbers know who the other robbers are, but the farmers do not know anyone else’s role.

This initial version of Crops and Robbers was pretty great, at first. I tested it extensively over Thanksgiving weekend with my cousins. We played with one robber and two or three farmers, and it was a blast. Everyone would start the round by exclaiming “I’m a farmer!” and then chat about how many crops they had and how much fun they were having farming, until someone would shout “I’ve been robbed” at which point many baseless accusations would get thrown around. In the first few games, getting robbed was a key indicator you were NOT the robber, until someone won as the robber by claiming they had been robbed at the very start.

Unfortunately, when we tried to play with 5 people, the game stopped being fun or even playable. Since everyone was taking actions asynchronously, the game became too chaotic. To give an example: imagine player blue farms, then is robbed by player red, then player green guards player blue. Player blue would still get robbed even though they were guarded by green for most of their farming time. I tried several solutions to this, including making actions occur at the end of the 10 second action time instead of the beginning, but nothing worked. I was failing a few of my key requirements: the gameplay was too random, making deduction impossible for large groups.

Version 2: Fast-Paced Fun

Over the next few months, I made a few major changes:

  • Instead of actions with times attached, I moved back to a traditional, synchronized “rounds” format, with each round lasting a customizable amount of time. I found that 5–8 rounds of 20 seconds each makes for a fun, fast game.
  • I added an “inspector” role which is able to visit a player for the round and keep track of who else had visited that player for the round (either to rob or guard), and a “donator” role which can give a crop to another player.
  • I fixed bugs!

At this point, the game plays similar to Mafia, with the main difference being that rounds are extremely fast and players are trying to collect crops rather than kill each other. These two differences have several benefits: players are forced to be more engaged, no one gets eliminated, and having your role “revealed” isn’t the end of the world. On the other hand, since the stakes are lower if you are revealed to be a robber, some crafty robbers can be hard to beat even if they are discovered early on. Due to the games simplicity, its easy to develop new strategies and play several games in a row with the same group of friends. It still has flaws, but I’m pretty happy with the direction of this current early stage project.

Try it out!

Disclaimer: I was trying to build this as quickly as possible so I could focus on the game design instead of learning a new technical skill, so this code is pretty gross. Pure Ruby on Rails is not a good tool for building gaming platforms, and I have a bunch of silly workarounds to get everything to work (like returning a bad response until all players have finished a round to keep players in sync).

Here is the Github link:

Or try it out with your friends online here! (Note: this website is a bit buggy)

Photo Credits: Clipart and basic pixlr editing. Shout out to my beta testers: Monica, Aurora, Henry, Freddy, Siegrid, Belden, Ben, Sam, Anton, Juliette and Raúl.

Thank you for proof reading, Mon :)

--

--