Skip to content

Repository files navigation

Voyage

100% Procedural Travel Simulator — inspired by Oregon Trail, FTL, and Organ Trail

CI

Overview

Voyage is a rogue-like travel simulator where every map, event, crew, vessel, audio, and narrative is procedurally generated from a single seed. The game supports five genre themes:

  • Fantasy — Enchanted realm / Silk Road setting
  • Sci-fi — Deep space / star lanes setting
  • Horror — Zombie apocalypse wasteland
  • Cyberpunk — Megacity sprawl
  • Post-apocalyptic — Irradiated dust-bowl wastes

All gameplay assets are generated at runtime — no bundled images, audio, or pre-written content.

Status

Feature Complete (v5.0) — All five versions implemented with full gameplay loop.

Implemented

  • ✅ Go module and project structure
  • ✅ ECS framework with GenreSwitcher interface
  • ✅ Seed-based deterministic RNG
  • ✅ Ebitengine rendering foundation
  • ✅ Procedural world map generation
  • ✅ Resource management system (six-axis model)
  • ✅ Crew/party system with procedural generation
  • ✅ Vessel/transport system with upgrades
  • ✅ Procedural event system with grammar templates
  • ✅ Audio synthesis (waveforms, ADSR, SFX, adaptive music)
  • ✅ UI/HUD/Menus with genre theming
  • ✅ Win/lose conditions
  • ✅ Save/load system with multiple slots
  • ✅ Configuration and input rebinding
  • ✅ CI/CD pipeline
  • ✅ Validation scripts
  • ✅ All 5 genres fully integrated
  • ✅ Faction system with reputation
  • ✅ Quest/objective system
  • ✅ Meta-progression between runs
  • ✅ Leaderboards and async convoy mode
  • ✅ WebAssembly and mobile builds
  • ✅ Modding system

Prerequisites

  • Go 1.22 or later
  • OpenGL support (for Ebitengine rendering)

On Linux, you may need:

sudo apt-get install libgl1-mesa-dev xorg-dev

Installation

go install github.com/opd-ai/voyage/cmd/voyage@latest

Or build from source:

git clone https://github.com/opd-ai/voyage.git
cd voyage
go build ./cmd/voyage

Usage

# Start with random seed
./voyage

# Start with specific seed (for reproducible runs)
./voyage --seed 12345

# Start with specific genre
./voyage --genre scifi

# Start with specific difficulty
./voyage --difficulty hard

# Combine options
./voyage --seed 42 --genre cyberpunk --difficulty nightmare

# Show version
./voyage --version

# Show help
./voyage --help

Available Options

Flag Values Default Description
--seed integer random Master seed for procedural generation
--genre fantasy, scifi, horror, cyberpunk, postapoc fantasy Genre theme
--difficulty easy, normal, hard, nightmare normal Difficulty level
--version - - Show version information

Controls

Key Action
Arrow keys Move vessel
Enter/Space Select/Confirm
Escape Pause/Menu
1-4 Select event choices
F3 Toggle debug info

Development

# Run tests (headless mode for CI/servers without display)
go test -tags headless -race ./...

# Run tests with display (requires X11/Wayland)
go test -race ./...

# Run benchmarks
go test -tags headless -bench=. ./pkg/benchmark/...

# Check for issues
go vet -tags headless ./...

# Validate no bundled assets
./scripts/validate-no-assets.sh

Project Structure

cmd/voyage/         # Main entry point
pkg/
  engine/           # ECS framework with GenreSwitcher
  procgen/seed/     # Deterministic RNG
  procgen/world/    # World map generation
  rendering/        # Ebitengine rendering
  resources/        # Resource management
  crew/             # Party/crew system
  vessel/           # Transport system
  events/           # Event system
  audio/            # Audio synthesis
  ux/               # UI/HUD/Menus
  game/             # Game loop and state
  config/           # Configuration
  saveload/         # Save/load system
scripts/            # Validation and utility scripts

Core Design Pillars

  1. Resource Attrition — Food, water, fuel, medicine, morale, and currency deplete over time
  2. Party/Crew Mortality — Procedurally generated crew members who can sicken, die, or desert
  3. Vessel Integrity — Transport accumulates damage and requires repair
  4. Procedural Event Stream — Grammar-based text generation with branching choices
  5. Route Choice with Consequence — Multiple paths with varying risk/reward
  6. Fully Procedural World — Every element generated from the master seed

Online Features

Leaderboards

Voyage supports both offline and online leaderboards:

  • Offline mode (default): Scores are stored locally and persist between sessions. No internet connection required.
  • Online mode: Requires a self-hosted leaderboard server. The default server URL is a placeholder; online features will not work without configuration.

To use online leaderboards, you would need to:

  1. Deploy a compatible leaderboard server (reference implementation not yet available)
  2. Configure the server URL via environment variable or config file

Convoy Mode

Async convoy mode allows players to share seeds and compare runs. This feature works entirely offline using seed-based determinism.

License

MIT License — see LICENSE for details.

See Also

Donate Monero(The only good cryptocurrency) to support development

  • monero:43H3Uqnc9rfEsJjUXZYmam45MbtWmREFSANAWY5hijY4aht8cqYaT2BCNhfBhua5XwNdx9Tb6BEdt4tjUHJDwNW5H7mTiwe

About

100% Procedural travel game inspired by Oregon Trail, FTL, and Organ Trail

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages