A retro-style language learning game where you defend Earth by translating alien words!
- 🎮 Retro Gaming Experience: Pixel-art UI with Press Start 2P font and neon aesthetics
- 🌍 Multiple Languages: Learn Spanish, French, German, Italian, Portuguese, and Japanese
- 🎯 Interactive Gameplay: Space invaders-style word matching with falling translations
- 📊 Progress Tracking: Score system, combos, levels, and accuracy tracking
- 🔐 User Authentication: Firebase Auth integration for saving progress
- 📱 Responsive Design: Optimized for both mobile and desktop play
- ⚡ Real-time Feedback: Particle effects and animations for engaging gameplay
-
Clone and Install:
npm install
-
Set up Firebase (Optional):
- Create a Firebase project
- Copy
.env.local.exampleto.env.local - Add your Firebase configuration
-
Run the Game:
npm run dev
-
Play:
- Select your target language
- Click falling words to destroy them
- Type translations in the input field
- Defend Earth and learn vocabulary!
- Lives: Start with 3 lives, lose one when words reach the bottom
- Score: Earn points for correct translations (10/20/30 for easy/medium/hard)
- Combo: Build combos for bonus points
- Levels: Progress through levels as your score increases
- Speed: Game speed increases with each level
- Frontend: Next.js 14, TypeScript, Tailwind CSS
- UI Components: shadcn/ui with custom retro styling
- Authentication: Firebase Auth
- Database: Firebase Firestore (for progress tracking)
- Animations: Framer Motion
- Deployment: Vercel-ready
The game is built with a modular component architecture:
GameMenu: Main menu with language selectionGameArea: Main game loop and falling word mechanicsGameHeader: Score, level, and life displayFallingWord: Individual word components with physicsTranslationInput: Input field for typing translationsAuthModal: Authentication interface
- Add Languages: Extend
vocabularyDatabaseinlib/translations.ts - Modify Difficulty: Adjust scoring and speed in game mechanics
- Styling: Customize colors and effects in
globals.css - Game Rules: Modify game logic in
useGameStatshook
- Create a Firebase project
- Enable Authentication (Email/Password)
- Set up Firestore Database
- Add configuration to
.env.local
The app is pre-configured for Vercel deployment:
npm run build- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
MIT License - feel free to use this for educational purposes!
Ready to defend Earth and learn languages? Start your mission now! 🚀