From 50b48e0c62543259223782bbf69c5b5c6dd80051 Mon Sep 17 00:00:00 2001 From: Eric Christian Date: Mon, 13 Apr 2026 17:49:43 -0500 Subject: [PATCH] Update org profile for monorepo consolidation All crates now live in sc/reforged. Removed references to the deleted per-crate repos and updated architecture diagram. Co-authored by AI --- README.md | 64 ++++++++++++++++++++++++------------------------------- 1 file changed, 28 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index a6e0ac7..639181a 100644 --- a/README.md +++ b/README.md @@ -2,30 +2,31 @@ A 2D multiplayer space combat game — think bullet hell meets persistent universe. Originally a Flash game, now rebuilt from scratch in Rust. -## Where to Start +## Repository -**[`reforged`](https://git.oat.im/sc/reforged)** is the main repo. It contains the Godot project, workspace configuration, and pulls in all the crates below. Clone this one. +**[`reforged`](https://git.oat.im/sc/reforged)** is the monorepo. Clone this one — it contains everything. + +```bash +git clone https://git.oat.im/sc/reforged.git +cd reforged +cargo xtask serve # starts authd + zoned + overlord + # then open godot/ in Godot 4.5 +``` ## Architecture -The game is split into independent crates, each in its own repo. Everything is Rust — there is no GDScript. +Everything is Rust — there is no GDScript. The repo is a Cargo workspace with all crates under `crates/`: -| Repo | What it does | -|------|-------------| -| [`sc-core`](https://git.oat.im/sc/core) | Stateless game simulation — types, defs, tick functions, wire protocol. The heart of the game. No engine dependency. | -| [`sc-client`](https://git.oat.im/sc/client) | Client session state — message handling, auth flow, account/hangar data. Pure Rust, no engine dependency. | -| [`sc-godot`](https://git.oat.im/sc/godot) | Godot rendering shell. Thin bridge between `sc-client` and the engine — spawns nodes, updates transforms, reads input. | -| [`sc-ui`](https://git.oat.im/sc/ui) | All UI — HUD, menus, radar, chat, docking screens. Godot nodes backed by `sc-client` state. | -| [`sc-zoned`](https://git.oat.im/sc/zoned) | Zone server. Runs the authoritative sim, relays messages between clients. | -| [`sc-authd`](https://git.oat.im/sc/authd) | Auth server. Accounts, squads, leaderboards, zone tokens. | -| [`sc-overlord`](https://git.oat.im/sc/overlord) | AI team commander. Spawns and directs NPC fleets, manages base capture strategy. | -| [`sc-replicate`](https://git.oat.im/sc/replicate) | Trait-based state replication runtime. Diff/apply over postcard batches; replaces hand-written Tracker*/Position messages. | -| [`sc-replicate-derive`](https://git.oat.im/sc/replicate-derive) | Proc-macro crate for `sc-replicate` — provides `#[derive(Replicate)]` and `#[replicate(epsilon = ...)]` field attributes. | -| [`sc-dashboard`](https://git.oat.im/sc/dashboard) | Admin dashboard. | -| [`sc-decode`](https://git.oat.im/sc/decode) | Packet decoder tool for debugging the wire protocol. | -| [`sc-xtask`](https://git.oat.im/sc/xtask) | Dev task runner (`cargo xtask serve`, `cargo xtask build`, etc). | - -## How it Fits Together +| Crate | What it does | +|-------|-------------| +| `sc-core` | Stateless game simulation — types, defs, tick functions, wire protocol. The heart of the game. No engine dependency. | +| `sc-reforged` | GDExtension bridge (cdylib). Rust GodotClass nodes for the entire client — entities, UI, networking, world. | +| `sc-zoned` | Zone server. Runs the authoritative sim, relays messages between clients. | +| `sc-authd` | Auth server. Accounts, squads, leaderboards, zone tokens. | +| `sc-overlord` | AI team commander. Spawns and directs NPC fleets, manages base capture strategy. | +| `sc-dashboard` | Admin dashboard. | +| `sc-decode` | Packet decoder tool for debugging the wire protocol. | +| `xtask` | Dev task runner (`cargo xtask serve`, `cargo xtask build`, etc). | ``` ┌──────────┐ @@ -33,21 +34,12 @@ The game is split into independent crates, each in its own repo. Everything is R └────┬─────┘ ┌─────────┼──────────┬──────────────┐ ▼ ▼ ▼ ▼ - ┌──────────┐ ┌────────┐ ┌──────────┐ ┌───────────┐ - │sc-client │ │sc-zoned│ │sc-authd │ │sc-overlord│ - └────┬─────┘ └────────┘ └──────────┘ └───────────┘ - ┌────┴─────┐ - ▼ ▼ -┌──────────┐┌─────┐ -│sc-godot ││sc-ui│ ← Godot lives here -└──────────┘└─────┘ + ┌───────────┐ ┌────────┐ ┌──────────┐ ┌───────────┐ + │sc-reforged│ │sc-zoned│ │sc-authd │ │sc-overlord│ + └───────────┘ └────────┘ └──────────┘ └───────────┘ + │ + ▼ + ┌────────┐ + │ godot/ │ scenes & assets (no scripts) + └────────┘ ``` - -## Running Locally - -```bash -git clone https://git.oat.im/sc/reforged.git -cd reforged -cargo xtask serve # starts authd + zoned + overlord - # then open godot/ in Godot 4.5 -``` \ No newline at end of file