No description
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Antoine Letouzey 60b369b966 Implement the FRONTIER server, terminal client, and world tools.
SQLite holds player-changed state while the galaxy is generated from a seed, so expeditions, wrecks, and routes persist across asynchronous players.
2026-08-20 08:49:38 +01:00
client Implement the FRONTIER server, terminal client, and world tools. 2026-08-20 08:49:38 +01:00
common Implement the FRONTIER server, terminal client, and world tools. 2026-08-20 08:49:38 +01:00
server Implement the FRONTIER server, terminal client, and world tools. 2026-08-20 08:49:38 +01:00
tools Implement the FRONTIER server, terminal client, and world tools. 2026-08-20 08:49:38 +01:00
.gitignore Capture the FRONTIER design as the source of truth for the world. 2026-08-20 08:49:38 +01:00
Cargo.lock Implement the FRONTIER server, terminal client, and world tools. 2026-08-20 08:49:38 +01:00
Cargo.toml Implement the FRONTIER server, terminal client, and world tools. 2026-08-20 08:49:38 +01:00
FRONTIER_game_design.md Capture the FRONTIER design as the source of truth for the world. 2026-08-20 08:49:38 +01:00
README.md Implement the FRONTIER server, terminal client, and world tools. 2026-08-20 08:49:38 +01:00

FRONTIER

Persistent asynchronous multiplayer exploration, as specified in FRONTIER_game_design.md.

Players fly fragile expeditions through a generated star graph, leave routes and wrecks, and push a shared civilization forward. Individual characters die; the world keeps their traces.

Layout

common/   protocol, events, types, deterministic galaxy generation
server/   authoritative simulation + SQLite + HTTP API
client/   ratatui terminal client
tools/    worldgen, admin CLI, simulation runner

Run

# server (creates frontier.db on first launch)
cargo run -p frontier-server -- --db frontier.db --bind 127.0.0.1:8080

# terminal client (drop-in identity, no account gate)
cargo run -p frontier-client -- --server http://127.0.0.1:8080

# print a galaxy without touching the database
cargo run -p frontier-tools --bin frontier-worldgen -- --seed 42 --systems 48

# inspect a live database
cargo run -p frontier-tools --bin frontier-admin -- --db frontier.db history
cargo run -p frontier-tools --bin frontier-admin -- --db frontier.db players

# run automated explorers against the simulation
cargo run -p frontier-tools --bin frontier-sim -- --players 8 --steps 50

Tests

cargo test --workspace

Commands (client)

scan travel <system> orbit [n] survey land [n] collect build beacon|outpost|colony [name] transmit <msg> return distress rescue <id> name <place> recover contribute exotic_matter [qty] new scout|pioneer|survey|rescue|freighter refuel help quit

Travel asks for confirmation with a fuel/risk estimate before it commits.

Persistence

SQLite stores only player-changed state: discoveries, routes, outposts, wrecks, fame, history, characters. Unexplored systems exist as generated data until someone interacts with them.