chore: rename app crate and binary to cyberpunk

The game is called cyberpunk; the city generator is its first subsystem,
not the project. The citygen library keeps its name. README reframed
around the game.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Jeffrey Wilcke
2026-10-12 21:04:51 +02:00
parent 59ba72f0e0
commit 2dc843aa86
35 changed files with 41 additions and 36 deletions

32
Cargo.lock generated
View File

@@ -121,22 +121,6 @@ version = "1.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4e7648175b45a9a48536d676f68d918270699102aa8dab5496df06904c914600"
[[package]]
name = "city"
version = "0.1.0"
dependencies = [
"anyhow",
"citygen",
"clap",
"crossterm",
"postcard",
"ratatui",
"ron",
"serde",
"serde_json",
"unicode-width 0.2.0",
]
[[package]]
name = "citygen"
version = "0.1.0"
@@ -250,6 +234,22 @@ dependencies = [
"winapi",
]
[[package]]
name = "cyberpunk"
version = "0.1.0"
dependencies = [
"anyhow",
"citygen",
"clap",
"crossterm",
"postcard",
"ratatui",
"ron",
"serde",
"serde_json",
"unicode-width 0.2.0",
]
[[package]]
name = "darling"
version = "0.24.1"

View File

@@ -1,6 +1,6 @@
[workspace]
resolver = "3"
members = ["crates/citygen", "crates/city"]
members = ["crates/citygen", "crates/cyberpunk"]
[workspace.package]
edition = "2024"

View File

@@ -1,9 +1,12 @@
# cyberpunk
A terminal game in a full cyberpunk setting. This is the first piece: a seeded,
deterministic **city generator** and the full-screen terminal app around it.
A terminal roguelike in a full cyberpunk setting. You will play it on foot
through a multi-level city, and later from inside the Net as well.
The generator builds a multi-level city as walkable tile maps on four strata:
The first subsystem is in place: a seeded, deterministic city generator and the
full-screen terminal app that lets you generate, explore and walk its cities.
The generator builds a city as walkable tile maps on four strata:
| Stratum | What lives there |
|---|---|
@@ -16,25 +19,27 @@ Every building you see at street level is the same building you stand on at
Heights. Districts have themes (corp core, night market, megablocks, combat
zone, docks, industrial, neon strip, old town) that drive street layout,
building mix, palette and signage. A Net graph of subnets, nodes and links is
anchored to the physical tiles and can be shown as a digital overlay.
anchored to the physical tiles and can be shown as a digital overlay. That
graph is the seed of the cyberspace side of the game.
Same seed and parameters always produce a byte-identical city.
## Run
```sh
cargo run --release -p city
cargo run --release -p cyberpunk
```
Headless generation, for scripts and the game later:
Headless generation, for scripts and tooling:
```sh
cargo run --release -p city -- gen --seed 42 --size medium --out cities/demo.city
cargo run --release -p city -- gen --seed 42 --size large --json --out /tmp/demo.json
cargo run --release -p cyberpunk -- gen --seed 42 --size medium --out cities/demo.city
cargo run --release -p cyberpunk -- gen --seed 42 --size large --json --out /tmp/demo.json
```
Sizes: `small` (160x80), `medium` (240x120), `large` (320x160) or `WxH`.
Other flags: `--districts 4..12`, `--water none|bay|river`, `--density 0..1`.
Other flags: `--districts 4..12` (an upper bound; slivers merge into their
neighbours), `--water none|bay|river`, `--density 0..1`.
Needs a truecolor terminal of at least 100x30 cells (iTerm2, Ghostty, kitty,
WezTerm). Saved cities go to `./cities/*.city`.
@@ -59,11 +64,11 @@ manhole · `.` wait · `tab` back to the free camera · panels as above
## Layout
```
crates/citygen world model + generator (no terminal dependencies)
crates/city the ratatui app and the `gen` CLI
crates/citygen world model + city generator (no terminal dependencies)
crates/cyberpunk the game: ratatui app, screens, renderer, and the `gen` CLI
flavor/ names.ron (names, signage glyphs) · style.ron (palettes, glyph sets)
docs/superpowers/specs design spec
docs/superpowers/plans implementation plan
docs/superpowers/specs design specs
docs/superpowers/plans implementation plans
```
## Develop

View File

@@ -1,11 +1,11 @@
[package]
name = "city"
name = "cyberpunk"
edition.workspace = true
version.workspace = true
license.workspace = true
[[bin]]
name = "city"
name = "cyberpunk"
path = "src/main.rs"
[dependencies]

View File

@@ -9,8 +9,8 @@ use std::path::PathBuf;
#[derive(Parser)]
#[command(
name = "city",
about = "Generate, explore and walk a cyberpunk city in the terminal"
name = "cyberpunk",
about = "A terminal roguelike in a multi-level cyberpunk city"
)]
pub struct Cli {
#[command(subcommand)]

View File

@@ -1,4 +1,4 @@
//! `city`: generate, explore and walk a cyberpunk city in the terminal.
//! `cyberpunk`: a terminal roguelike in a multi-level cyberpunk city.
mod anim;
mod app;