docs: move README to docs/; reword most sections

Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ida6ac152f3fa71ceb1d980afba9a82fc6a6a6964
This commit is contained in:
raf 2026-04-08 16:22:58 +03:00
commit 1d738c35d4
Signed by: NotAShelf
GPG key ID: 29D95B64378DB4BF

View file

@ -1,11 +1,13 @@
# Rogged # Rogged
Turn-based roguelike dungeon crawler, built in C99 and with a dash of Zig to Turn-based, infinite roguelike dungeon crawler built with C99 and with a dash of
serve as a learning opportunity. Rogged is basically a classic roguelike where Zig. Meant to serve primarily, but not exclusively, as a learning opportunity.
you descend through floors of a procedurally generated dungeon, fighting Rogged is basically a classic roguelike where you descend through floors of a
enemies, managing inventory, and trying to reach the bottom alive. procedurally generated dungeon, fighting enemies, managing inventory, and trying
to reach the bottom alive or die chasing a highscore!
A non-exhaustive list of its (current) features: The game itself, be it the code or mechanics, is _heavily_ in development. For
now, a non-exhaustive list of its (current) features are as follows:
- Turn-based combat with damage variance, critical hits, dodge, and block - Turn-based combat with damage variance, critical hits, dodge, and block
mechanics mechanics
@ -18,33 +20,27 @@ A non-exhaustive list of its (current) features:
- Procedural audio via raylib - Procedural audio via raylib
- ASCII-inspired tile rendering, with HP bars and floating damage text - ASCII-inspired tile rendering, with HP bars and floating damage text
**Controls:** There are still some features lacking polish, or lacking _any_ kind of attention
to be viable. For a semi-complete list of things that need to be done, see the
| Key | Action | [future plans section](#future-plans).
| ------------- | ----------------------------------- |
| WASD / Arrows | Move or attack |
| G | Pick up item |
| I | Open inventory |
| U | Use a potion |
| E | Equip item from inventory |
| D | Drop item |
| Y / N | Confirm / decline descending stairs |
| R | Restart (on game over) |
| Q | Quit |
## Build Instructions ## Build Instructions
Rogged is built with C99 and Zig. Besides `raylib` and `pkg-config` you will Rogged is built on a relatively simple stack. It uses C99 for the main game
need a C compiler and basic Zig tooling. For now, we use C99 and Zig 0.15.2. logic, and Zig for the combat library. Besides `raylib` and `pkg-config`, you
Those might change in the future. only need the core Zig tooling. For now the required Zig version is 0.15.2, but
this might change in the future. Additionally, you will need `clang-format` and
Additionally you will need `clang-format` and `just` for the developer workflow `just` for common development tasks in the case you plan to contribute. For
if you plan to contribute. building, Zig is enough.
### Using Nix (Recommended) ### Using Nix (Recommended)
The recommended developer tooling is [Nix](https://nixos.org). This provides a The _recommended_ way of developing this project is using
pure, reproducible devshell across all machines. [Nix](https://nixos.org) and relying on devshells for pure, reproducible
developer environment across all machines.
If you are a [Direnv](https://direnv.net) user, you may simply run
`direnv allow` or you may use `nix develop` to enter the default shell.
```sh ```sh
# Enter the development shell # Enter the development shell
@ -56,6 +52,9 @@ $ just dev
### Manual Build ### Manual Build
If you are allergic to good tooling and would rather use your system Zig, you
may simply invoke `zig build` after acquiring Zig 0.15.2.
```sh ```sh
# Full build # Full build
$ zig build $ zig build
@ -67,6 +66,8 @@ $ zig build run
$ just dev $ just dev
``` ```
The Justfile provides commands that work across both methods.
### Task Runner Commands ### Task Runner Commands
There's a `Justfile` designed to make common tasks somewhat easier. For now, There's a `Justfile` designed to make common tasks somewhat easier. For now,
@ -84,10 +85,14 @@ If the project gets more complicated, new tasks might be added.
## Future Plans ## Future Plans
The game is currently **playable end-to-end** but it lacks _serious_ polish to The game is currently **playable end-to-end**, but it lacks a fair bit of polish
claim its place as a fun roguelike. Some of the features I'd like to introduce, to claim its place as a fun, engaging roguelike you can just boot up and play.
in no particular order, are as follows: Some of the features that are planned for the future, in no particular order,
are as follows:
- [ ] **Better enemy AI** - The current AI is very simple.
- [ ] **Fog of War** - Instead of loading the entire map, let the player
discover the rooms
- [ ] **Save / Load system** - Persist and restore game state between sessions - [ ] **Save / Load system** - Persist and restore game state between sessions
- [ ] **More enemy variety** - Additional enemy types with unique abilities - [ ] **More enemy variety** - Additional enemy types with unique abilities
- [ ] **More item variety** - Rings, wands, scrolls, and cursed items - [ ] **More item variety** - Rings, wands, scrolls, and cursed items
@ -100,8 +105,9 @@ in no particular order, are as follows:
- [ ] **UI polish** - Better message log history, item descriptions, death - [ ] **UI polish** - Better message log history, item descriptions, death
screen screen
In addition, it might be interesting to allow customizing the "world state" by Later down the line it might be an interesting choice to provide a scripting
as scripting API. Though, that is for much later. API, likely with Lua, to allow customizing the game state and events. Though,
that is for much later.
## Attributions ## Attributions
@ -118,4 +124,6 @@ Additionally, _huge_ thanks to [Raylib] for how easy it made graphics and audio.
This was perhaps my best experience in developing a graphical application, and This was perhaps my best experience in developing a graphical application, and
CERTAINLY the most ergonomic when it comes to writing a game. CERTAINLY the most ergonomic when it comes to writing a game.
---
_I got rogged :/_ _I got rogged :/_