From 2dc843aa86250710387d54d2063d6a602251dfdb Mon Sep 17 00:00:00 2001 From: Jeffrey Wilcke Date: Mon, 12 Oct 2026 21:04:51 +0200 Subject: [PATCH] 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 --- Cargo.lock | 32 +++++++++--------- Cargo.toml | 2 +- README.md | 33 +++++++++++-------- crates/{city => cyberpunk}/Cargo.toml | 4 +-- .../{city => cyberpunk}/src/anim/effects.rs | 0 crates/{city => cyberpunk}/src/anim/mod.rs | 0 crates/{city => cyberpunk}/src/app.rs | 0 crates/{city => cyberpunk}/src/cli.rs | 4 +-- crates/{city => cyberpunk}/src/main.rs | 2 +- .../src/render/lighting.rs | 0 .../{city => cyberpunk}/src/render/minimap.rs | 0 crates/{city => cyberpunk}/src/render/mod.rs | 0 .../{city => cyberpunk}/src/render/overlay.rs | 0 .../{city => cyberpunk}/src/render/style.rs | 0 .../{city => cyberpunk}/src/render/tileset.rs | 0 .../{city => cyberpunk}/src/render/traffic.rs | 0 .../src/render/viewport.rs | 0 .../{city => cyberpunk}/src/render/weather.rs | 0 crates/{city => cyberpunk}/src/save.rs | 0 .../src/screens/configure.rs | 0 .../src/screens/explore.rs | 0 .../{city => cyberpunk}/src/screens/files.rs | 0 .../src/screens/generating.rs | 0 .../{city => cyberpunk}/src/screens/help.rs | 0 crates/{city => cyberpunk}/src/screens/mod.rs | 0 .../{city => cyberpunk}/src/screens/title.rs | 0 crates/{city => cyberpunk}/src/term.rs | 0 crates/{city => cyberpunk}/src/ui/form.rs | 0 crates/{city => cyberpunk}/src/ui/logo.rs | 0 crates/{city => cyberpunk}/src/ui/menu.rs | 0 crates/{city => cyberpunk}/src/ui/mod.rs | 0 crates/{city => cyberpunk}/src/ui/panel.rs | 0 .../{city => cyberpunk}/src/ui/transition.rs | 0 crates/{city => cyberpunk}/src/walker/fov.rs | 0 crates/{city => cyberpunk}/src/walker/mod.rs | 0 35 files changed, 41 insertions(+), 36 deletions(-) rename crates/{city => cyberpunk}/Cargo.toml (91%) rename crates/{city => cyberpunk}/src/anim/effects.rs (100%) rename crates/{city => cyberpunk}/src/anim/mod.rs (100%) rename crates/{city => cyberpunk}/src/app.rs (100%) rename crates/{city => cyberpunk}/src/cli.rs (97%) rename crates/{city => cyberpunk}/src/main.rs (66%) rename crates/{city => cyberpunk}/src/render/lighting.rs (100%) rename crates/{city => cyberpunk}/src/render/minimap.rs (100%) rename crates/{city => cyberpunk}/src/render/mod.rs (100%) rename crates/{city => cyberpunk}/src/render/overlay.rs (100%) rename crates/{city => cyberpunk}/src/render/style.rs (100%) rename crates/{city => cyberpunk}/src/render/tileset.rs (100%) rename crates/{city => cyberpunk}/src/render/traffic.rs (100%) rename crates/{city => cyberpunk}/src/render/viewport.rs (100%) rename crates/{city => cyberpunk}/src/render/weather.rs (100%) rename crates/{city => cyberpunk}/src/save.rs (100%) rename crates/{city => cyberpunk}/src/screens/configure.rs (100%) rename crates/{city => cyberpunk}/src/screens/explore.rs (100%) rename crates/{city => cyberpunk}/src/screens/files.rs (100%) rename crates/{city => cyberpunk}/src/screens/generating.rs (100%) rename crates/{city => cyberpunk}/src/screens/help.rs (100%) rename crates/{city => cyberpunk}/src/screens/mod.rs (100%) rename crates/{city => cyberpunk}/src/screens/title.rs (100%) rename crates/{city => cyberpunk}/src/term.rs (100%) rename crates/{city => cyberpunk}/src/ui/form.rs (100%) rename crates/{city => cyberpunk}/src/ui/logo.rs (100%) rename crates/{city => cyberpunk}/src/ui/menu.rs (100%) rename crates/{city => cyberpunk}/src/ui/mod.rs (100%) rename crates/{city => cyberpunk}/src/ui/panel.rs (100%) rename crates/{city => cyberpunk}/src/ui/transition.rs (100%) rename crates/{city => cyberpunk}/src/walker/fov.rs (100%) rename crates/{city => cyberpunk}/src/walker/mod.rs (100%) diff --git a/Cargo.lock b/Cargo.lock index 8e627ed..df9ccdc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -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" diff --git a/Cargo.toml b/Cargo.toml index 737ea1e..fb4e5db 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [workspace] resolver = "3" -members = ["crates/citygen", "crates/city"] +members = ["crates/citygen", "crates/cyberpunk"] [workspace.package] edition = "2024" diff --git a/README.md b/README.md index b4882dd..be023cb 100644 --- a/README.md +++ b/README.md @@ -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 -flavor/ names.ron (names, signage glyphs) · style.ron (palettes, glyph sets) -docs/superpowers/specs design spec -docs/superpowers/plans implementation plan +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 specs +docs/superpowers/plans implementation plans ``` ## Develop diff --git a/crates/city/Cargo.toml b/crates/cyberpunk/Cargo.toml similarity index 91% rename from crates/city/Cargo.toml rename to crates/cyberpunk/Cargo.toml index 01c5d38..4a61b39 100644 --- a/crates/city/Cargo.toml +++ b/crates/cyberpunk/Cargo.toml @@ -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] diff --git a/crates/city/src/anim/effects.rs b/crates/cyberpunk/src/anim/effects.rs similarity index 100% rename from crates/city/src/anim/effects.rs rename to crates/cyberpunk/src/anim/effects.rs diff --git a/crates/city/src/anim/mod.rs b/crates/cyberpunk/src/anim/mod.rs similarity index 100% rename from crates/city/src/anim/mod.rs rename to crates/cyberpunk/src/anim/mod.rs diff --git a/crates/city/src/app.rs b/crates/cyberpunk/src/app.rs similarity index 100% rename from crates/city/src/app.rs rename to crates/cyberpunk/src/app.rs diff --git a/crates/city/src/cli.rs b/crates/cyberpunk/src/cli.rs similarity index 97% rename from crates/city/src/cli.rs rename to crates/cyberpunk/src/cli.rs index d8563c5..0e180c8 100644 --- a/crates/city/src/cli.rs +++ b/crates/cyberpunk/src/cli.rs @@ -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)] diff --git a/crates/city/src/main.rs b/crates/cyberpunk/src/main.rs similarity index 66% rename from crates/city/src/main.rs rename to crates/cyberpunk/src/main.rs index f66dc68..8c5266b 100644 --- a/crates/city/src/main.rs +++ b/crates/cyberpunk/src/main.rs @@ -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; diff --git a/crates/city/src/render/lighting.rs b/crates/cyberpunk/src/render/lighting.rs similarity index 100% rename from crates/city/src/render/lighting.rs rename to crates/cyberpunk/src/render/lighting.rs diff --git a/crates/city/src/render/minimap.rs b/crates/cyberpunk/src/render/minimap.rs similarity index 100% rename from crates/city/src/render/minimap.rs rename to crates/cyberpunk/src/render/minimap.rs diff --git a/crates/city/src/render/mod.rs b/crates/cyberpunk/src/render/mod.rs similarity index 100% rename from crates/city/src/render/mod.rs rename to crates/cyberpunk/src/render/mod.rs diff --git a/crates/city/src/render/overlay.rs b/crates/cyberpunk/src/render/overlay.rs similarity index 100% rename from crates/city/src/render/overlay.rs rename to crates/cyberpunk/src/render/overlay.rs diff --git a/crates/city/src/render/style.rs b/crates/cyberpunk/src/render/style.rs similarity index 100% rename from crates/city/src/render/style.rs rename to crates/cyberpunk/src/render/style.rs diff --git a/crates/city/src/render/tileset.rs b/crates/cyberpunk/src/render/tileset.rs similarity index 100% rename from crates/city/src/render/tileset.rs rename to crates/cyberpunk/src/render/tileset.rs diff --git a/crates/city/src/render/traffic.rs b/crates/cyberpunk/src/render/traffic.rs similarity index 100% rename from crates/city/src/render/traffic.rs rename to crates/cyberpunk/src/render/traffic.rs diff --git a/crates/city/src/render/viewport.rs b/crates/cyberpunk/src/render/viewport.rs similarity index 100% rename from crates/city/src/render/viewport.rs rename to crates/cyberpunk/src/render/viewport.rs diff --git a/crates/city/src/render/weather.rs b/crates/cyberpunk/src/render/weather.rs similarity index 100% rename from crates/city/src/render/weather.rs rename to crates/cyberpunk/src/render/weather.rs diff --git a/crates/city/src/save.rs b/crates/cyberpunk/src/save.rs similarity index 100% rename from crates/city/src/save.rs rename to crates/cyberpunk/src/save.rs diff --git a/crates/city/src/screens/configure.rs b/crates/cyberpunk/src/screens/configure.rs similarity index 100% rename from crates/city/src/screens/configure.rs rename to crates/cyberpunk/src/screens/configure.rs diff --git a/crates/city/src/screens/explore.rs b/crates/cyberpunk/src/screens/explore.rs similarity index 100% rename from crates/city/src/screens/explore.rs rename to crates/cyberpunk/src/screens/explore.rs diff --git a/crates/city/src/screens/files.rs b/crates/cyberpunk/src/screens/files.rs similarity index 100% rename from crates/city/src/screens/files.rs rename to crates/cyberpunk/src/screens/files.rs diff --git a/crates/city/src/screens/generating.rs b/crates/cyberpunk/src/screens/generating.rs similarity index 100% rename from crates/city/src/screens/generating.rs rename to crates/cyberpunk/src/screens/generating.rs diff --git a/crates/city/src/screens/help.rs b/crates/cyberpunk/src/screens/help.rs similarity index 100% rename from crates/city/src/screens/help.rs rename to crates/cyberpunk/src/screens/help.rs diff --git a/crates/city/src/screens/mod.rs b/crates/cyberpunk/src/screens/mod.rs similarity index 100% rename from crates/city/src/screens/mod.rs rename to crates/cyberpunk/src/screens/mod.rs diff --git a/crates/city/src/screens/title.rs b/crates/cyberpunk/src/screens/title.rs similarity index 100% rename from crates/city/src/screens/title.rs rename to crates/cyberpunk/src/screens/title.rs diff --git a/crates/city/src/term.rs b/crates/cyberpunk/src/term.rs similarity index 100% rename from crates/city/src/term.rs rename to crates/cyberpunk/src/term.rs diff --git a/crates/city/src/ui/form.rs b/crates/cyberpunk/src/ui/form.rs similarity index 100% rename from crates/city/src/ui/form.rs rename to crates/cyberpunk/src/ui/form.rs diff --git a/crates/city/src/ui/logo.rs b/crates/cyberpunk/src/ui/logo.rs similarity index 100% rename from crates/city/src/ui/logo.rs rename to crates/cyberpunk/src/ui/logo.rs diff --git a/crates/city/src/ui/menu.rs b/crates/cyberpunk/src/ui/menu.rs similarity index 100% rename from crates/city/src/ui/menu.rs rename to crates/cyberpunk/src/ui/menu.rs diff --git a/crates/city/src/ui/mod.rs b/crates/cyberpunk/src/ui/mod.rs similarity index 100% rename from crates/city/src/ui/mod.rs rename to crates/cyberpunk/src/ui/mod.rs diff --git a/crates/city/src/ui/panel.rs b/crates/cyberpunk/src/ui/panel.rs similarity index 100% rename from crates/city/src/ui/panel.rs rename to crates/cyberpunk/src/ui/panel.rs diff --git a/crates/city/src/ui/transition.rs b/crates/cyberpunk/src/ui/transition.rs similarity index 100% rename from crates/city/src/ui/transition.rs rename to crates/cyberpunk/src/ui/transition.rs diff --git a/crates/city/src/walker/fov.rs b/crates/cyberpunk/src/walker/fov.rs similarity index 100% rename from crates/city/src/walker/fov.rs rename to crates/cyberpunk/src/walker/fov.rs diff --git a/crates/city/src/walker/mod.rs b/crates/cyberpunk/src/walker/mod.rs similarity index 100% rename from crates/city/src/walker/mod.rs rename to crates/cyberpunk/src/walker/mod.rs