Guildhall alpha: co-op idle game
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
commit
9058039eb7
14 changed files with 2815 additions and 0 deletions
46
README.md
Normal file
46
README.md
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
# Guildhall
|
||||
|
||||
A co-op idle game for a handful of friends. Everyone is an adventurer in the
|
||||
same young frontier city: train skills Melvor-style (your character keeps
|
||||
working for up to a day while you're away), supply the city council, and get
|
||||
the city ready for bandit raids that arrive at times the game picks.
|
||||
|
||||
Alpha. One season, bandit raids plus two friendly events, six buildings.
|
||||
|
||||
## What's in it
|
||||
|
||||
- **Skills:** mining, woodcutting, farming, hunting, smithing, masonry,
|
||||
cooking, combat, plus the scout's reconnaissance.
|
||||
- **Classes:** warrior, scout, artisan, pioneer. Every class can train every
|
||||
skill; a class makes some skills 20% faster and has one signature ability.
|
||||
- **Bank:** 12 slots of up to 1,000 each to start. When something doesn't
|
||||
fit it goes to the city stockpile (or the action stops, if you prefer).
|
||||
Raids never touch your bank. Players can give items to each other.
|
||||
- **City:** donations fill the stockpile and treasury; anyone can start a
|
||||
building once they cover its cost. Population eats food and pays taxes.
|
||||
- **Events:** raids are announced a day or two ahead. Intel (spymaster's
|
||||
guild + scout reconnaissance) narrows down when, how strong, and finally
|
||||
where their camp is, so fighters can sabotage it. Defeat kills or drives
|
||||
off people, loots the stockpile and treasury, and may damage a building.
|
||||
Damaged buildings stop working until repaired but keep their level.
|
||||
|
||||
## Running
|
||||
|
||||
```sh
|
||||
nix run . -- --dev --speed 60 # http://127.0.0.1:8098, time runs 60x
|
||||
python3 -m unittest discover -s tests
|
||||
```
|
||||
|
||||
Without `--dev` the server trusts the `Remote-User` header from the
|
||||
authenticating proxy (Authelia). With `--dev` it reads a `gh_user` cookie
|
||||
instead, so the dev bar can switch between players and fast-forward time.
|
||||
|
||||
The world is one JSON document in SQLite. `--backup-to DIR` writes a dated
|
||||
snapshot and exits; the NixOS module runs it nightly when
|
||||
`services.guildhall.backup.directory` is set.
|
||||
|
||||
## Layout
|
||||
|
||||
- `game.py`: content tables and the rules. Pure functions of `(world, now)`.
|
||||
- `app.py`: stdlib HTTP server, persistence and the background ticker.
|
||||
- `static/`: the client (vanilla JS, no build step).
|
||||
Loading…
Add table
Add a link
Reference in a new issue