feat: initial commit of Railtrack Pro prototype with complete test suite
This commit is contained in:
@@ -0,0 +1,125 @@
|
||||
# 🚂 Railtrack Pro
|
||||
|
||||
**A web-based railway construction game featuring track building, junctions, signals, and 3D driver's eye view.**
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
## ✨ Features
|
||||
|
||||
- 🚂 **Track Pieces**: Straight, curved, junction, and signal tracks
|
||||
- 🌍 **World Grid**: Interactive grid system for precise placement
|
||||
- 🎮 **Construction Interface**: Click-to-place track building
|
||||
- 👁️ **3D View**: Full 3D driver's eye view with camera controls
|
||||
- 🔌 **Junction Logic**: Connect multiple tracks at junctions
|
||||
- 🚦 **Signal System**: Railway signals for traffic control
|
||||
- 💾 **Save/Load**: Game state persistence (coming soon)
|
||||
- 🎨 **Visual Effects**: Dynamic lighting and shadows
|
||||
|
||||
## 🏗️ Project Structure
|
||||
|
||||
```
|
||||
railtrack_pro/
|
||||
├── index.html # Main HTML entry point
|
||||
├── css/
|
||||
│ └── styles.css # Application styles
|
||||
├── js/
|
||||
│ ├── app.js # Main application logic
|
||||
│ ├── renderer.js # Three.js renderer
|
||||
│ ├── tracks.js # Track piece definitions
|
||||
│ ├── world.js # Grid and world management
|
||||
│ └── game.js # Game state and controls
|
||||
├── assets/
|
||||
│ ├── textures/ # Track textures (TBD)
|
||||
│ └── models/ # 3D models (TBD)
|
||||
├── test/
|
||||
│ └── unit/ # Unit tests (TDD)
|
||||
├── PLAN.md # Development plan
|
||||
└── README.md # This file
|
||||
```
|
||||
|
||||
## 🚀 Getting Started
|
||||
|
||||
### Requirements
|
||||
- Modern web browser (Chrome, Firefox, Safari, Edge)
|
||||
- WebGL 2.0 support
|
||||
- No server required - works as local file
|
||||
|
||||
### Installation
|
||||
1. Clone or download this repository
|
||||
2. Open `index.html` in your browser
|
||||
3. Start building your railway empire!
|
||||
|
||||
### Development Setup
|
||||
|
||||
```bash
|
||||
# Navigate to project directory
|
||||
cd /a0/usr/projects/railtrack_pro
|
||||
|
||||
# View development plan
|
||||
cat PLAN.md
|
||||
|
||||
# Open in browser
|
||||
open index.html # Mac
|
||||
x-www-browser index.html # Linux
|
||||
```
|
||||
|
||||
## 🎮 Controls
|
||||
|
||||
| Control | Action |
|
||||
|---------|--------|
|
||||
| **Mouse Wheel** | Zoom in/out |
|
||||
| **Left Drag** | Rotate camera |
|
||||
| **Right Drag** | Pan camera |
|
||||
| **Click Track** | Remove track |
|
||||
| **Click Viewport** | Place selected track |
|
||||
| **Track Buttons** | Select track type |
|
||||
|
||||
## 🛠️ Development
|
||||
|
||||
### Technology Stack
|
||||
|
||||
- **Frontend**: HTML5, CSS3, JavaScript ES6+
|
||||
- **3D Rendering**: Three.js
|
||||
- **No Build System**: Vanilla JavaScript
|
||||
- **Testing**: TDD approach (Jest planned)
|
||||
|
||||
### Code Style
|
||||
- **TDD First**: Test before implementation
|
||||
- **Well Documented**: JSDoc comments throughout
|
||||
- **Clean Code**: Follows SOLID principles
|
||||
- **Modular**: Class-based architecture
|
||||
|
||||
### Adding Features
|
||||
|
||||
1. Create test file in `test/unit/`
|
||||
2. Implement feature in `js/`
|
||||
3. Update documentation
|
||||
4. Run tests to verify
|
||||
|
||||
## 📜 License
|
||||
|
||||
MIT License - See LICENSE file for details
|
||||
|
||||
## 🤝 Contributing
|
||||
|
||||
1. Fork the repository
|
||||
2. Create feature branch (`git checkout -b feature/amazing-feature`)
|
||||
3. Commit changes (`git commit -m 'Add amazing feature'`)
|
||||
4. Push to branch (`git push origin feature/amazing-feature`)
|
||||
5. Open Pull Request
|
||||
|
||||
## 📝 Version History
|
||||
|
||||
- **0.1.0** - Initial prototype with basic track system
|
||||
- *Coming Soon*: Driver's eye view, signal logic, save/load
|
||||
|
||||
## 🙏 Acknowledgments
|
||||
|
||||
- Three.js for amazing 3D rendering
|
||||
- Railway enthusiasts for inspiration
|
||||
|
||||
---
|
||||
|
||||
*Built with ❤️ for railway simulation* | 2026 Railtrack Pro Development Team
|
||||
Reference in New Issue
Block a user