No description
  • Rust 96.6%
  • Python 3.4%
Find a file
2026-08-08 01:44:19 +00:00
assets Put units on the map 2026-08-07 19:43:27 -06:00
docs Add scripts/forgejo.py for milestones 2026-08-06 16:27:39 -06:00
scripts Add scripts/forgejo.py for milestones 2026-08-06 16:27:39 -06:00
src Put units on the map 2026-08-07 19:43:27 -06:00
.gitignore Add scripts/forgejo.py for milestones 2026-08-06 16:27:39 -06:00
Cargo.lock Add README and initial project setup 2026-08-06 15:34:08 -06:00
Cargo.toml Add README and initial project setup 2026-08-06 15:34:08 -06:00
CHARACTERS.md Add README and initial project setup 2026-08-06 15:34:08 -06:00
CLAUDE.md Put units on the map 2026-08-07 19:43:27 -06:00
README.md docs: roadmap, development process, and ADR scaffolding 2026-08-06 15:49:03 -06:00
WORLD.md Add README and initial project setup 2026-08-06 15:34:08 -06:00

Terra Redux

A 3D tactical turn-based squad game built in Rust with Bevy. Think chess, except you build your own pieces: every unit is a character you assemble, equip, and develop.

Elevator Pitch

You command a small crew (a "cell") of characters on a 22nd-century Earth that has become one continuous city of a hundred billion people, run by three corporations. Combat is turn-based on a 3D map. Each character has an independent turn cadence — some act more often, some hit harder, some manipulate the battlefield through hacking or drones. PvE contracts earn gear and character development; PvP arenas test builds against other players' cells.

Missions range across the world's vertical tiers, from the flooded Sump beneath the city to private stations in orbit. Environment variety follows that axis.

See WORLD.md for setting, factions, and narrative canon, and CHARACTERS.md for the playable roster and the prologue missions that unlock them.

Core Design Pillars

  1. You make your own pieces. No fixed roster. A character is the sum of chassis, gear, augments, and learned abilities.
  2. Turn order is a resource. Speed determines how often you act, not just who acts first.
  3. Positioning is meaning. 3D space — elevation, cover, line of sight, verticality — matters as much as stats.
  4. Readable, not simulationist. Every number a player needs to make a decision is visible before they commit.
  5. The world has an opinion. Objectives, gear, and abilities carry the setting's politics.

See CLAUDE.md for the full design and architecture reference.

Tech Stack

Concern Choice
Language Rust (2024 edition)
Engine Bevy 0.19
Rendering Bevy PBR, 3D
UI bevy_ui
Assets glTF for models, Bevy asset server
Data RON for game data definitions

Running It

cargo run

For asset hot-reload during development (edit a RON file in assets/data/ and see the change live without restarting):

cargo run --features dev

Testing

cargo test
cargo clippy --all-targets -- -D warnings
cargo fmt

Repository Layout

terra-redux/
├── CLAUDE.md          # Conventions and architecture
├── WORLD.md            # Setting bible: factions, lore, tone
├── CHARACTERS.md       # Playable roster: roles, backstories, unlock prologues
├── Cargo.toml
├── assets/             # glTF models, RON data, fonts, audio
└── src/
    ├── main.rs          # App assembly, plugin registration only
    ├── theme/           # Catppuccin Mocha palette + UI tokens
    ├── core/            # Shared types, GameState
    ├── data/            # RON asset loader
    ├── character/       # Chassis, stats, abilities, progression
    └── ui/               # HUD, menus, character sheet

See CLAUDE.md for the full layout, including planned-but-not-yet-built directories.

Status

Bootstrapped: Cargo project on Bevy 0.19 with a working main menu, Catppuccin Mocha theming, RON-backed data loading with hot reload, and an initial character registry. Not yet built: combat, missions, 3D, prologues, audio, netcode.

Next up is M1, the playable vertical slice — a grid, a 3D view, two units, move and attack, turn order, and a win condition. See docs/ROADMAP.md for the milestone sequence and the reasoning behind it.

Contributing

Work is tracked as issues on git.marsh.gg, one branch and one pull request per issue. docs/development.md has the workflow, the definition of done, and the label scheme. Architecture decisions are recorded in docs/adr/.