francy51 828ebf089a
Some checks failed
CI / TypeScript Check (docs) (push) Has been cancelled
CI / TypeScript Check (site) (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Audit (push) Has been cancelled
feat(game): Stellaris-style single-ship control with real flight physics
The player ship was never wired to its own movement systems — it lacked
MaxSpeed/TurnRate (so steer_to_target skipped it) and the Player marker
(so click-to-move skipped it). Only integrate_velocity matched, leaving
the ship drifting on a hardcoded undock vector and ignoring all input.
Left-click was also bound to camera drag, selection, and move at once,
and "Approach" started a cosmetic timer that moved nothing.

New control scheme (single ship, like Stellaris minus fleet selection):
- Right-click issues a move order (was left-click, which conflicted
  with selection + camera drag).
- Left-click cursor-selects the target under the cursor (was
  nearest-to-camera) and deselects on empty space.
- "Approach" now actually flies to the selected target, homing onto it
  via ApproachTarget even as it orbits.
- Smooth acceleration + stopping-distance arrival deceleration +
  turn-rate-limited banking replace instant velocity snapping.
- A pulsing destination waypoint ring gives on-world move-order feedback.
- Undock holds position (zero velocity + at-ship MoveTarget) instead of
  drifting off on a stale vector.
- Follow-cam now allows free-look rotate/zoom so the player can find
  and click targets while the camera tracks the ship.

Steering is shared: the player ship and AI ships use one physics model.
AI spawn bundle gets the new required components (Acceleration,
ArrivalRadius).

Also fixes a B0001 panic in the destination-marker system: the marker
query now carries Without<PlayerShip> so it is provably disjoint from
the player Transform read.

Includes the in-system action-panel rebuild-on-change optimization
(buttons and their Interaction state persist between frames so clicks
register), which the Approach/Dock flow depends on.

Flight tuning lives in in_system/scene.rs (PLAYER_MAX_SPEED,
PLAYER_ACCELERATION, PLAYER_TURN_RATE, PLAYER_ARRIVAL_RADIUS).
2026-06-18 17:57:03 -04:00

VOID::NAV

A single-player narrative-driven space exploration experience where you author your own mini-series. Inspired by Windward's open-world freedom, Stellaris's strategic depth, and AI-generated storytelling in the style of The Templin Institute. Every campaign generates a unique tale of exploration, commerce, diplomacy, and conquest.

You are a young captain with an entire galaxy to explore—and a story to write. Every campaign features a unique, procedurally generated galaxy. Trade between stations, broker alliances between factions, wage war or maintain peace, and watch as the AI Story Director weaves your choices into an evolving narrative. Prefer a quieter life? Simply sail the stars and let your story unfold.

Conflict occurs through FTL-style tactical resource management—not dogfighting. When combat happens, it's a dramatic beat in your story. Click a hostile, your ship auto-engages, and you manage reactor power between Weapons / Shields / Engines / Auxiliary. The skill is in what you power and when, not how fast you click. But combat is a feature, not the focus.

VOID::NAV is a pnpm workspace monorepo for the game website, living design docs, and game client. V1 focuses on single-player emergent storytelling with local persistence and AI-driven narrative generation.

Core Pillars

Pillar Description
AI Story Director Emergent narrative generation tracks your choices, alliances, conflicts, and discoveries. The AI weaves your actions into an ongoing saga. V1: real-time emergent storytelling. Future: episodic mini-series generation.
Exploration & Discovery Procedurally generated galaxy with fog of war. Discover anomalies, derelicts, new factions. Every discovery becomes part of your story.
Trade & Diplomacy Stellaris-inspired economic and political systems. Supply factions, broker alliances, negotiate borders. Commerce and conversation are equally viable paths.
Ship Customization Your ship is your narrative vessel. Customize for trade, exploration, or conflict. Multiple classes from nimble scouts to powerful cruisers.
Dynamic Galaxy Your actions shape both the world AND the story. Faction relations, territory control, and world events evolve through your choices.
Solo Adventure A personal galaxy to explore at your own pace. Your story, your pace. The architecture supports optional co-op servers later.

Secondary Features

  • FTL-Style Tactical Combat — Power management combat exists as a dramatic beat in your story, not the gameplay loop
  • Mining and resource gathering
  • Mission and quest systems

Layout

apps/docs          Living design docs and interactive demos
apps/site          Public landing page / game website
apps/game          Playable game client (Rust + Bevy)
packages/ui        Shared UI primitives and CSS tokens
archive/legacy-static Legacy static prototype files kept for reference

Prerequisites

  • Node.js 24+
  • pnpm 9+
  • Rust toolchain (for the game client)

Quick Start

pnpm install
pnpm dev

This launches the docs and site servers.

Open http://localhost:5175 to play the game.

Press Ctrl+C to stop everything.

Development

pnpm dev            # Docs + site servers
pnpm dev:docs       # Docs only (port 5173)
pnpm dev:site       # Site only (port 5174)
cd apps/game && cargo run  # Game client

Default ports:

  • docs: http://localhost:5173/docs
  • site: http://localhost:5174
  • game: http://localhost:5175

Builds

pnpm build          # Build all apps
pnpm check          # Typecheck all packages
cd apps/game && cargo build  # Build game client

Game Client

The game client (apps/game) is built with Rust and Bevy. It runs locally and persists game state locally with full single-player campaign support.

Description
No description provided
Readme 2.4 MiB
Languages
TypeScript 74.9%
Rust 22.8%
HTML 1.7%
CSS 0.5%