# Hurry Curry!

A cooperative 3D multiplayer game about cooking.

## Installation

The installation methods for end-users are listed on the
[game's website](https://hurrycurry.org). For information about building from
source, see the instructions below.

## Translation

If you want to help translate the project, you can use the
[weblate](https://translate.codeberg.org/engage/hurrycurry/). All help is
appreciated.

## Development / Documentation

The game is composed of individual components each has its own readme file:

- [Client](./client/README.md)
- [Server](./server/README.md)
- [Data](./data/README.md)
- [Test Client](./test-client/README.md)

The game protocol is outlined in [protocol.md](./protocol.md).

## Building

The high-level build system is Make. But Rust's Cargo is also used. There are is
a `all` target for everything and `all_`_component_ for each component.

```sh
make all # Build everything
make all_client # Build only client
make all_server # Build only server
make clean # Remove build files
```

### Dependencies

- General:
  - [Make](https://www.gnu.org/software/make/)
- Client:
  - [Godot](https://godotengine.org) (>=4.5)
  - [ffmpeg](https://ffmpeg.org)
- Server:
  - [Rustup](https://rustup.rs) (alternatively a Rust toolchain matching
    [rust-toolchain](./rust-toolchain))
- Data:
  - [Deno](https://deno.com) or [Node.js](https://nodejs.org) (if using node,
    pass `JSR=node` to Make)
  - [sed](https://www.gnu.org/software/sed)
- Test client:
  - [Rustup](https://rustup.rs)
  - esbuild
- Book export:
  - [Godot](https://godotengine.org) (>=4.5)
  - [Rustup](https://rustup.rs)

## Contributing

Contributions are appreciated, just open issues or PRs for the things you think
could be improved.

For discussion regarding development, feel free to join our matrix room:
[#hurrycurry:metamuffin.org](https://matrix.to/#/#hurrycurry:metamuffin.org).

## License

AGPL-3.0-only; See [COPYING](./COPYING).
