Files
wings88/README.md
T

4.2 KiB

3D Flight Simulator (Retro 80s Style)

A browser-based 3D flight simulator with retro 80s aesthetic, procedural landscape generation, and persistent world saving.

🎮 Project Overview

This project recreates the feel of late-80s flight simulators in a web browser using JavaScript and Three.js. The intent is to make it look like something you'd find on a PC or Amiga of the time - low-resolution, polygonal, low frame-rate with a retro aesthetic.

Key Features

  • Retro 80s Aesthetic: Low-resolution, polygonal graphics with 80s color palettes
  • Procedural Landscape: Realistic villages, forests, bodies of water generated procedurally
  • Persistent World: Once generated, landscapes remain consistent across sessions
  • Multiple Screens: Loading, intro, play, and pause screens
  • Flight Controls: Cockpit HUD with dials and metrics
  • Save/Load System: Save game progress including procedural landscapes
  • FPS Cap: Configurable frame rate cap (20, 30, 50, 60 FPS) for authentic retro feel
  • Retro Audio: Synthesized music similar to Soundblaster MIDI

🚀 Getting Started

Prerequisites

  • Node.js (v16 or higher)
  • npm or yarn
  • Modern web browser (Chrome, Firefox, Edge)

Installation

  1. Clone the repository:

    git clone https://gitea@repos.retroweb.dev:ai-zone/wings88.git
    cd wings88
    
  2. Install dependencies:

    npm install
    
  3. Start the development server:

    npm run dev
    
  4. Open your browser to http://localhost:3000

Building for Production

npm run build

This will create optimized production files in the dist/ directory.

📂 Project Structure

/a0/usr/projects/3d_flyer/
├── .a0proj/                  # Project configuration
├── src/                      # Source code
│   ├── assets/               # Static assets
│   │   ├── images/            # Image files
│   │   ├── sounds/            # Audio files
│   │   └── models/            # 3D models
│   ├── js/                   # JavaScript code
│   │   ├── screens/           # Screen components
│   │   ├── core/              # Core game logic
│   │   └── utils/             # Utility functions
│   ├── css/                  # CSS styles
│   └── index.html            # Main HTML file
├── public/                  # Public assets
├── docs/                     # Documentation
├── tests/                    # Test files
├── .gitignore                # Git ignore rules
├── package.json              # Project configuration
├── README.md                 # This file
├── LICENSE                   # License information
└── CONTRIBUTING.md           # Contribution guidelines

🛠️ Development

Available Scripts

  • npm run dev - Start development server with hot reload
  • npm run build - Create production build
  • npm run test - Run tests
  • npm run lint - Run linter

Branching Strategy

  • main - Production-ready code
  • dev - Development branch for new features
  • Feature branches - Named after the feature being developed

Commit Messages

Follow conventional commits format:

  • feat: for new features
  • fix: for bug fixes
  • docs: for documentation changes
  • style: for code style changes
  • refactor: for code refactoring
  • test: for test-related changes

🎨 Design Guidelines

Color Palette

Inspired by 80s gaming (Amiga 500, 386 DOS):

  • Use limited color palettes (16-32 colors)
  • Prefer vibrant, distinctive colors
  • Avoid anti-aliasing for pixelated look

Sound Design

  • Synthesized music similar to Soundblaster MIDI
  • Retro sound effects
  • Procedural audio generation for dynamic environments

Performance Targets

  • Default FPS cap: 20 FPS (configurable)
  • Low memory footprint
  • Fast load times

📜 License

This project is licensed under the MIT License - see the LICENSE file for details.

🤝 Contributing

Please read CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.

📞 Contact

For questions or support, please open an issue in the repository.