foxfriends / root

Play Root online with friends. Original board game by Cole Wehrle, with art by Kyle Ferrin
6 stars 1 forks source link
board-game game logic-programming root

Root

Javscript CI
Rust CI dependency status
Database CI

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:

Development

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.