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
Turn-based roguelike dungeon crawler, built in C99 and with a dash of Zig to
serve as a learning opportunity. Rogged is basically a classic roguelike where
you descend through floors of a procedurally generated dungeon, fighting
enemies, managing inventory, and trying to reach the bottom alive.
Turn-based, infinite roguelike dungeon crawler built with C99 and with a dash of
Zig. Meant to serve primarily, but not exclusively, as a learning opportunity.
Rogged is basically a classic roguelike where you descend through floors of a
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
mechanics
@ -18,33 +20,27 @@ A non-exhaustive list of its (current) features:
- Procedural audio via raylib
- ASCII-inspired tile rendering, with HP bars and floating damage text
**Controls:**
| Key | Action |
| ------------- | ----------------------------------- |
| 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 |
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
[future plans section](#future-plans).
## Build Instructions
Rogged is built with C99 and Zig. Besides `raylib` and `pkg-config` you will
need a C compiler and basic Zig tooling. For now, we use C99 and Zig 0.15.2.
Those might change in the future.
Additionally you will need `clang-format` and `just` for the developer workflow
if you plan to contribute.
Rogged is built on a relatively simple stack. It uses C99 for the main game
logic, and Zig for the combat library. Besides `raylib` and `pkg-config`, you
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
`just` for common development tasks in the case you plan to contribute. For
building, Zig is enough.
### Using Nix (Recommended)
The recommended developer tooling is [Nix](https://nixos.org). This provides a
pure, reproducible devshell across all machines.
The _recommended_ way of developing this project is using
[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
# Enter the development shell
@ -56,6 +52,9 @@ $ just dev
### 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
# Full build
$ zig build
@ -67,6 +66,8 @@ $ zig build run
$ just dev
```
The Justfile provides commands that work across both methods.
### Task Runner Commands
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
The game is currently **playable end-to-end** but it lacks _serious_ polish to
claim its place as a fun roguelike. Some of the features I'd like to introduce,
in no particular order, are as follows:
The game is currently **playable end-to-end**, but it lacks a fair bit of polish
to claim its place as a fun, engaging roguelike you can just boot up and play.
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
- [ ] **More enemy variety** - Additional enemy types with unique abilities
- [ ] **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
screen
In addition, it might be interesting to allow customizing the "world state" by
as scripting API. Though, that is for much later.
Later down the line it might be an interesting choice to provide a scripting
API, likely with Lua, to allow customizing the game state and events. Though,
that is for much later.
## 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
CERTAINLY the most ergonomic when it comes to writing a game.
---
_I got rogged :/_