All-Seeing Wizards is a digital board game where you and your friends play cards to move around the board and fire spells at each other. It takes strategy, skill, and a little bit of luck to come out on top.
- Make sure you have Node.js (tests are run with 18.x), Yarn v1 and MongoDB installed
- Make sure MongoDB is started and listening on the default port (27017). Alternatively, create a
.env
file in theapi
directory and add the contentMONGO_URL=<your mongodb cluster URL>
- Run
yarn install
at the top level - Run
yarn dev
to start the development server
Open https://localhost:8080
to see the game. To try creating a game and connecting as multiple players, you can open multiple browser tabs or windows.
Start by hosting a game on a big screen. Note that "Max players" also determines the board size; it is possible to play with a smaller number of players on a large board, but tends to take longer and be less interesting.
Once you start hosting, you will get a code for players to join. It works best if everyone joins on their phones.
Once the game starts, turns are played until all but one player is defeated. During each turn, each player is dealt 7 cards and chooses 4 of them to play that turn. These might be attacks, movement cards, potions, shields, etc.
As you play cards, a preview of what will happen is shown on your player screen.
When everyone has picked their cards, the turn will be played out on the host screen. Each player's first picked card will activate first, and the effects of those cards will happen simultaneously (the first "action"). Then each player's second card will activate, and so on until all cards have activated.
The fact that different players' cards activate simultaneously might raise the question: What happens if players' cards clash with each other? What if one player attacks while another is moving out of the way?
To solve this problem, different card types have different precedence. Within each action, cards will always activate in this order:
Interrupt → Priority → Movement → Attacks
Interrupt cards are ones which block other cards from having an effect. These have a symbol.
Priority cards are any cards which only affect the caster. These have symbols such as , and{" "}
Movement cards allow players to move around the map. These have a{" "} symbol.
Attack cards cause damage and can knock back other players. These have a symbol.
In addition, if players attempt to move onto the same space in the same action, both moves are cancelled.
HP is indicated by heart symbols. At the start of the game, all players have 5 HP. When a player takes damage, they lose HP, and when their HP reaches zero they are defeated.
When a player is defeated, the area around them becomes "haunted". If any living player ends their turn in a haunted area, they lose 1 HP.
On the game board there are a different types of terrain which affect players in different ways.
Rocks cannot be moved through, but attacks will go through them.
Water reduces a player's movement speed by 1 - "Move 1" cards will only turn the player and they must use a "Move 2" card to get out.
Lava damages a player for 1 HP if they end their turn in it.
All Seeing Wizards can be built as a single Docker image. The included fly.toml can be used for easy deployment to Fly.io.
When running the Docker image, you will need to specify the following environment variables
MONGO_URL
should point to a MongoDB cluster. You can try out a free shared cluster on MongoDB AtlasHASHIDS_SALT
should be some random string to seed the game ID generator