Skip to content

thesilican/the-resistance

Repository files navigation

The Resistance

This is an open source version of the popular party board game The Resistance / Avalon, based on original game by Don Eskridge.

Play it now at https://thesilican.com/resistance

Example Gameplay

About

Similar to party games like Mafia and Werewolf, The Resistance challenges players' skills of deception, lying, and social deduction to determine who to trust. Agents try to determine who their teammates are and succeed on missions, while Spys must work together to decieve everyone, and fail as many missions as possible. Read the full rules here.

Features

  • Full online multiplayer support
  • Games for 5-10 players
  • Easy-to-learn user interface
  • Many games can run simultaneously

Attributions

The original game concept and rules belong to Don Eskridge, creator of The Resistance / Avalon.

Much of the inspiration for the user interface came from a free-to-play steam game called MINDNIGHT. You should check it out! It has better graphics, cool music, and you can even save your progress.

Technologies

The Resistance was build with the following technologies

Installation

Building docker container

The easiest way to build and run this app is to use docker-compose. First download this repository, then run using docker-compose.

$ git clone https://github.com/thesilican/the-resistance.git
$ cd the-resistance
$ docker-compose up --build

Alternatively, you may build using docker directly.

$ git clone https://github.com/thesilican/the-resistance.git
$ cd the-resistance
$ docker build . -t the-resistance
$ docker run -d -p 8080:8080 --name the-resistance the-resistance

Then you can access the game at http://localhost:8080.

Node.js/Javascript

You can run the project using node.js only. It is recommended that you use version >=16.

This project has the following directory structure:

the-resistance
├─ common
│  └─ src (Redux reducers shared among frontend & backend)
├─ frontend
│  ├─ assets (GIMP image asset files)
│  ├─ public (index.html and generated spritesheets)
│  └─ src (Frontend code)
│     ├─ components (React Components)
│     └─ store (Redux store/selectors)
└─ backend
   └─src (Backend code)

The project is split into 3 main portions - frontend, the React.js website; backend, a node.js server; and common, which contains code and types shared between frontend and backend.

Here are the steps to fully build the project:

Clone repository from GitHub
$ git clone https://github.com/thesilican/the-resistance.git
$ cd the-resistance

Build common code
$ cd ./common
$ npm install
$ npm run build

Build frontend website
$ cd ../frontend
$ npm install
$ npm run build

Build & run backend server
$ cd ../backend
$ npm install
$ npm run build
$ node dist/index.js

Then you can access the game at http://localhost:8080.