summaryrefslogtreecommitdiff
path: root/README.md
blob: 6d61910311f8253a6958d7d3db42852a12f9259f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# DungeonCrawl

A rust Dungeon Crawler!

## Keybinds

Use the following input for playing the game!

* `wasd` or `↑←↓→` for movement
* `enter` for interaction
* `e` to use an item
* `q` to drop an item
* `f` to attack
* `1-5` to change selected inventory slot
* `F11` to toggle fullscreen

The following are for debug purposes

* `F3` - toggles the debug ui
* `F4` - places a chest with a bomb
* `F5` - shows a placeholder message
* `F6` - you die 💀

## Requirements

DungeonCrawl builds raylib into the binary, and thus needs the build tools needed for raylib.

1. Rust version 1.88.0
2. CMake
3. Clang (must set LIBCLANG\_PATH)
4. GLFW or SDL2 (see features)
5. X11 or Wayland (linux only, see features)
6. Pulseaudio and alsa (linux only)

## Build (Desktop)

To build for desktop run the following. The binary will be located in `target/release/game`.

```
cargo build --release
```

## Build (Web)

Web builds require the [emscripten](https://emscripten.org/docs/getting_started/downloads.html) toolchain.

Download emscripten, and make sure `emcc` is in your path.

To build for web, invoke the makefile. The output website will be in `dist`.

```
make web
```

Web builds can also be download at [jenkins](https://jenkins.freya.cat/job/DungeonCrawl/).

## Crates

`dungeon` - all game logic

`game` - core game loop, and binds together the game logic and graphics

`graphics` - handles window and rendering though raylib

`audio` - audio orchestration system that emulates the NES

## Features

`x11` (default) - Enables X11 protocol support (linux only).

`wayland` - Enables wayland support (linux only).

`sdl` - Uses SDL2 instead of GLFW. GLFW is used if this feature is not set.

`static` - Includes the audio and images files statically in the binary. This is ignored for wasm builds.

## Contributors

- Freya Murphy <freya@freyacat.org>
- Audrey Fuller <alf9310@rit.edu>
- Yusif Elsharawy <yse2561@rit.edu>
- Ryan Symons <ras1178@rit.edu>