This is a digital port of the board game "Root" by Cole Wehrle, with art by Kyle Ferrin.
Work in progress.
The rules are implemented according to the Law of Root, Fifth Printing (July 13th, 2020).
The intention is to eventually support all expansions, though some parts may come later. The planned order of implementation is as follows:
- All 8 factions, 9 vagabonds, autumn map, standard deck.
- Exiles and Partisans deck.
- Alternate maps (winter, mountain, lake).
- Rootbotics.
This is a NodeJS (14) and Rust (nightly) project, so both must be installed. PostgreSQL (13) is also a dependency for the database.
Though the server is written in Rust, the goal is to build the game logic using Lumber. Lumber is very work in progress, so things are likely to change often.
Before starting development, you must first configure the environment and database.
Copy the sample.env
file to .env
, and configure the variables there as necessary.
Ensure PostgreSQL is installed, and that you can connect to it. The initial database
setup can be performed using the npm run db:setup
script. From there, use the SQLx CLI
(install as cargo install sqlx-cli
) to manage the database:
sqlx database create
sqlx migrate run
To compile the client code, use npm
. We are using Rollup for bundling,
and Svelte as the framework.
npm install # install dependencies
npm run dev # run builder
To compile and start the server, use Cargo. Dependencies are installed automatically with Cargo.
cargo run
# To run and print the logs:
RUST_LOG=root=debug cargo run
# If you have installed cargo-watch, watch just the Rust project:
cargo watch -x run -w src -w game -w Cargo.toml -w Cargo.lock
With both of those running, the app should be available on localhost:3000
.