Skip to content

CameronCarroll/manifest

Repository files navigation

Manifest: Techno-Arcane Wasteland

A single-player real-time strategy game built with Three.js featuring a techno-magical post-apocalyptic setting where you lead a specialized expedition team through the dangerous wasteland to discover ancient artifacts.

Note on sound at http://ieve.me/manifest ... it actually works in the game, although I should compress these WAV files into something not so huge. But I lost the battle against nginx, who just... will not serve the dang wav files.

About the Game

In Manifest, you command a small squad of specialized units including a precision Neon Assassin sniper and a resilient Scrap Golem as they navigate through a desolate techno-arcane wasteland. Your mission is to reach and secure ancient beacons while avoiding or confronting hostile forces that guard this forgotten realm.

The game code was 99+% generated by LLM AI's in Mar 2025, mostly Claude 3.7 Sonnet, Claude Code, Gemini Thinking 2.0, and Manus (which I think is just using Claude underneath?) I, the human, integrated the generated code in, complained about bugs, and felt very helpless while I let Claude Code chooch on a 'vibe-specification' (that is, a specification that was also 'vibe coded').

Game was written for the 2025 Vibe Game Jam

See VIBE_CODING_LOG.md

Key Gameplay Features

  • Tactical Combat: Command specialized units with unique abilities like the Neon Assassin's precision sniping
  • Dynamic Fog of War: Explore and reveal the mysterious wasteland as you progress
  • One single semi-janky but technically working mission: Alright I gotta go to work now...

Project Architecture

The game is built with a modern, component-based architecture:

Entity Component System (ECS)

  • Entities are just IDs in the game world
  • Components are pure data structures attached to entities (position, health, faction, etc.)
  • Systems contain game logic that operates on entities with specific components

Core Systems

/src
  /core                   # Core game infrastructure
    GameController.js     # Central game orchestration
    GameLoop.js           # Main game loop
    GameState.js          # State management
    SaveSystem.js         # Persistence with IndexedDB
    SceneManager.js       # Three.js scene management
    EntityManager.js      # Entity management for ECS
    ObjectiveSystem.js    # Mission objectives tracking
    ProductionSystem.js   # Unit production
    ResourceSystem.js     # Resource gathering
    AudioSystem.js        # Sound and music
    
  /entities               # Game entities and ECS implementation
    /components           # Data components (Position, Health, Faction, etc.)
    /systems              # Logic systems (Movement, Combat, AI, Animation, etc.)
    /definitions          # Entity blueprints
    
  /ui                     # User interface elements
    HUD.js                # In-game heads-up display
    MenuSystem.js         # Game menus and UI
    
  /scenarios              # Mission scenarios
    BaseScenario.js       # Base scenario class
    TutorialScenario.js   # Tutorial mission
    ExplorationScenario.js # Main exploration scenario
    
  /utils                  # Utility functions and helpers
    InputManager.js       # Player input handling with Command Pattern
    pathfinding.js        # A* pathfinding implementation
    TerrainFactory.js     # Procedural terrain generation
    MapGenerator.js       # Procedural map generation
    
  /loaders                # Asset loading utilities
    ModelLoader.js        # 3D model and texture loading

Getting Started

Prerequisites

  • Modern web browser with WebGL support
  • Node.js (v14+) for development
  • npm or yarn for package management

Installation

# Clone the repository
git clone <repository-url>
cd manifest-game

# Install dependencies
npm install

# Start development server
npm run dev

Controls

  • Left-click: Select units
  • Right-click: Move selected units
  • Right-click on enemy: Attack target
  • Shift + Left-click: Add to selection
  • 1-4 keys: Use unit abilities
  • S key: Stop selected units
  • Arrow keys: Move camera
  • Mouse wheel: Zoom camera
  • Middle mouse & drag: Pan camera
  • ESC: Clear selection

About

Tiny RTS gemo demo written for 2025 vibe coding game jam

Resources

Stars

Watchers

Forks