139 lines
4.2 KiB
Markdown
139 lines
4.2 KiB
Markdown
|
|
# 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:
|
||
|
|
```bash
|
||
|
|
git clone https://gitea@repos.retroweb.dev:ai-zone/wings88.git
|
||
|
|
cd wings88
|
||
|
|
```
|
||
|
|
|
||
|
|
2. Install dependencies:
|
||
|
|
```bash
|
||
|
|
npm install
|
||
|
|
```
|
||
|
|
|
||
|
|
3. Start the development server:
|
||
|
|
```bash
|
||
|
|
npm run dev
|
||
|
|
```
|
||
|
|
|
||
|
|
4. Open your browser to `http://localhost:3000`
|
||
|
|
|
||
|
|
### Building for Production
|
||
|
|
|
||
|
|
```bash
|
||
|
|
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](LICENSE) file for details.
|
||
|
|
|
||
|
|
## 🤝 Contributing
|
||
|
|
|
||
|
|
Please read [CONTRIBUTING.md](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.
|