A multiplayer 3D first-person shooter game that uses Google Maps Street View to create real-world battlefields. Fight in locations you know - from your street to famous cities around the world!
- First-Person Shooter: Classic FPS mechanics with modern controls
- Real-World Locations: Battle in actual places using Google Street View
- Multiplayer Support: Play with friends using join codes
- Weapon System: Multiple weapons with different stats and playstyles
- Power-ups: Health packs, ammo, speed boosts, and more
- Random City: Get dropped into a random city worldwide
- City Selection: Choose from popular cities like New York, London, Tokyo
- Custom Locations: Enter coordinates to play anywhere with Street View
- Street View Integration: Seamless 3D world rendering
- Game Rooms: Create or join games with up to 8 players
- Join Codes: Easy 6-digit codes to join friends' games
- Real-time Sync: Firebase-powered multiplayer synchronization
- Lobby System: Wait for players and customize before starting
- Appearance: Customize skin color, hair color, and outfit
- Accessories: Add glasses, hats, masks, and more
- Outfit Styles: Choose from casual, military, sports, formal, punk, or stealth
- Live Preview: See changes in real-time
- Frontend: TypeScript, Vite, HTML5, CSS3
- 3D Graphics: Three.js (planned)
- Maps: Google Maps Street View API
- Backend: Firebase Firestore
- Authentication: Firebase Auth
- Real-time: Firebase Realtime Database
- Node.js 18+
- npm or yarn
- Google Maps API key
- Firebase project
- Clone the repository:
git clone https://github.com/yourusername/skool-shooters.git
cd skool-shooters- Install dependencies:
npm install- Set up environment variables:
# Create .env file
GOOGLE_MAPS_API_KEY=your_google_maps_api_key
FIREBASE_API_KEY=your_firebase_api_key
FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
FIREBASE_PROJECT_ID=your_project_id- Start the development server:
npm run dev- Open your browser and navigate to
http://localhost:3000
- Create a new Firebase project at Firebase Console
- Enable Firestore Database
- Enable Authentication (optional for guest play)
- Copy your Firebase config to
lib/firebase.ts
- Get a Google Maps API key from Google Cloud Console
- Enable the following APIs:
- Maps JavaScript API
- Street View Static API
- Places API
- Add your API key to the environment variables
W- Move forwardS- Move backwardA- Move leftD- Move rightSpace- JumpMouse- Look around
Left Click- ShootRight Click- AimR- ReloadE- Interact
ESC- Pause menuTab- Scoreboard (planned)
skool-shooters/
├── lib/ # Shared libraries and utilities
│ ├── types.ts # TypeScript type definitions
│ ├── firebase.ts # Firebase configuration and services
│ ├── google-maps.ts # Google Maps integration
│ └── weapons.ts # Weapons and power-ups system
├── src/ # Main application code
│ ├── game/ # Game logic and state management
│ ├── ui/ # User interface components
│ ├── styles/ # CSS stylesheets
│ ├── main.ts # Application entry point
│ └── index.html # HTML template
├── package.json # Dependencies and scripts
└── README.md # This file
- Project structure and setup
- Home screen with navigation
- Character customization system
- Lobby system for multiplayer
- Basic game screen structure
- Firebase integration
- Google Maps Street View integration
- Weapons and power-ups system
- Three.js 3D rendering
- FPS game mechanics
- Real-time multiplayer synchronization
- Advanced weapon system
- Power-up spawning and effects
- Sound effects and music
- Particle effects
- Advanced graphics and shaders
- Mobile support
- Tournament system
- Leaderboards
- Replay system
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Google Maps for Street View API
- Firebase for backend services
- Three.js community for 3D graphics
- All contributors and testers
If you encounter any issues or have questions:
- Check the Issues page
- Create a new issue with detailed information
- Join our Discord community (link coming soon)
Happy Shooting! 🎯