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
This commit is contained in:
@@ -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.
|
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
|
## 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 |
|
| Crate | 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-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-reforged` | GDExtension bridge (cdylib). Rust GodotClass nodes for the entire client — entities, UI, networking, world. |
|
||||||
| [`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-zoned` | Zone server. Runs the authoritative sim, relays messages between clients. |
|
||||||
| [`sc-ui`](https://git.oat.im/sc/ui) | All UI — HUD, menus, radar, chat, docking screens. Godot nodes backed by `sc-client` state. |
|
| `sc-authd` | Auth server. Accounts, squads, leaderboards, zone tokens. |
|
||||||
| [`sc-zoned`](https://git.oat.im/sc/zoned) | Zone server. Runs the authoritative sim, relays messages between clients. |
|
| `sc-overlord` | AI team commander. Spawns and directs NPC fleets, manages base capture strategy. |
|
||||||
| [`sc-authd`](https://git.oat.im/sc/authd) | Auth server. Accounts, squads, leaderboards, zone tokens. |
|
| `sc-dashboard` | Admin dashboard. |
|
||||||
| [`sc-overlord`](https://git.oat.im/sc/overlord) | AI team commander. Spawns and directs NPC fleets, manages base capture strategy. |
|
| `sc-decode` | Packet decoder tool for debugging the wire protocol. |
|
||||||
| [`sc-replicate`](https://git.oat.im/sc/replicate) | Trait-based state replication runtime. Diff/apply over postcard batches; replaces hand-written Tracker*/Position messages. |
|
| `xtask` | Dev task runner (`cargo xtask serve`, `cargo xtask build`, etc). |
|
||||||
| [`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
|
|
||||||
|
|
||||||
```
|
```
|
||||||
┌──────────┐
|
┌──────────┐
|
||||||
@@ -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-reforged│ │sc-zoned│ │sc-authd │ │sc-overlord│
|
||||||
└────┬─────┘ └────────┘ └──────────┘ └───────────┘
|
└───────────┘ └────────┘ └──────────┘ └───────────┘
|
||||||
┌────┴─────┐
|
│
|
||||||
▼ ▼
|
▼
|
||||||
┌──────────┐┌─────┐
|
┌────────┐
|
||||||
│sc-godot ││sc-ui│ ← Godot lives here
|
│ 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
|
|
||||||
```
|
|
||||||
Reference in New Issue
Block a user