Giter Club home page Giter Club logo

all-seeing-wizards's Introduction

All-Seeing Wizards

CI

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.

Local development

  1. Make sure you have Node.js (tests are run with 18.x), Yarn v1 and MongoDB installed
  2. Make sure MongoDB is started and listening on the default port (27017). Alternatively, create a .env file in the api directory and add the content MONGO_URL=<your mongodb cluster URL>
  3. Run yarn install at the top level
  4. Run yarn dev to start the development server

Open http://localhost:8080 to see the game. To try creating a game and connecting as multiple players, you can open multiple browser tabs or windows.

How to play

Setting up

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.

Playing cards

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.

Action order

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

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.

Terrain

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.

Deployment

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 Atlas
  • HASHIDS_SALT should be some random string to seed the game ID generator

all-seeing-wizards's People

Contributors

binary-koan avatar dependabot[bot] avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.