A retro-styled language learning game that combines the excitement of space invaders with educational vocabulary training. Defend Earth by translating falling alien words in this engaging 8-bit inspired experience.
- Space Invaders-Style Gameplay - Translate falling alien words before they reach Earth
- Multiple Difficulty Modes:
- 🌱 Beginner: Slower speed, 5 lives, extended learning time
- ⚡ Normal: Balanced gameplay with 3 lives
- 🔥 Expert: Fast-paced challenge with only 2 lives
- Progressive Difficulty - Speed increases gradually with each level
- Combo System - Chain correct translations for bonus points
- Lives System - Strategic gameplay with limited chances
- Dynamic Translation System - Powered by Google Translate API
- Multiple Languages - Support for various language pairs
- Contextual Learning - Words appear with difficulty-appropriate vocabulary
- Progress Tracking - Monitor your learning advancement across languages
- Pixel-Perfect 8-bit Design - Authentic retro gaming visuals
- Press Start 2P Font - Classic arcade typography
- Neon Color Palette - Electric blue, hot pink, and neon green accents
- Smooth Animations - Particle effects and transitions
- Responsive Design - Optimized for both mobile and desktop
- Firebase Authentication - Save progress across devices
- Real-time Score System - Instant feedback and leaderboards
- Progressive Web App - Install and play offline
- TypeScript - Type-safe development
- Next.js 14 - Modern React framework
- Frontend: Next.js 14, React, TypeScript, Tailwind CSS
- Authentication: Firebase Auth
- Database: Firebase Firestore
- Translation: Google Translate API
- Deployment: Vercel
- Styling: Tailwind CSS with custom retro components
- Node.js 18+
- Firebase account
- Google Cloud account (for Translate API)
- Clone the repository:
git clone https://github.com/yourusername/linguafender.git
cd linguafender- Install dependencies:
npm install- Set up environment variables:
cp .env.local.example .env.localEdit .env.local with your Firebase and Google Cloud credentials:
NEXT_PUBLIC_FIREBASE_API_KEY=your_firebase_api_key
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_project.firebaseapp.com
NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
GOOGLE_TRANSLATE_API_KEY=your_translate_api_key- Run the development server:
npm run dev- Open http://localhost:3000 in your browser.
- Type translations using your keyboard
- Enter to submit answers
- Escape to pause/resume
- Touch the translation input field
- On-screen keyboard for typing
- Tap submit button to confirm answers
| Mode | Speed | Lives | Spawn Rate | Score Multiplier |
|---|---|---|---|---|
| Beginner | 0.8x | 5 | 4 seconds | 0.8x |
| Normal | 1.2x | 3 | 3 seconds | 1.0x |
| Expert | 2.0x | 2 | 2 seconds | 1.5x |
- Create a new Firebase project at Firebase Console
- Enable Authentication with Email/Password
- Create a Firestore database
- Add your domain to authorized domains
- Copy configuration to
.env.local
- Create a project in Google Cloud Console
- Enable the Cloud Translation API
- Create credentials (API Key)
- Add the API key to your
.env.localfile
- Connect your GitHub repository to Vercel
- Add environment variables in Vercel dashboard
- Deploy automatically on push to main branch
npm run build
npm run startlinguafender/
├── app/
│ ├── globals.css
│ ├── layout.tsx
│ └── page.tsx
├── lib/
│ ├── firebase.ts
│ └── translations.ts
├── hooks/
│ ├── useAuth.ts
│ └── useGameStats.ts
├── components/
│ ├── GameHeader.tsx
│ ├── GameArea.tsx
│ ├── FallingWord.tsx
│ └── ...
└── public/
└── fonts/
- Update the language list in
lib/translations.ts - Add language-specific vocabulary sets
- Test translation accuracy
- Update UI language selector
The game uses Tailwind CSS with custom retro-themed components. Key design tokens:
- Colors: Neon green (#00FF41), Electric blue (#0099FF), Hot pink (#FF0080)
- Font: Press Start 2P for headings, system fonts for body text
- Spacing: 8px grid system
- Animations: CSS transitions with easing functions
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Commit changes:
git commit -am 'Add feature' - Push to branch:
git push origin feature-name - Submit a Pull Request
- Follow TypeScript best practices
- Use Tailwind CSS utilities over custom CSS
- Test on multiple devices and screen sizes
- Maintain the retro aesthetic consistency
- Add proper error handling for API calls
This project is licensed under the MIT License - see the LICENSE file for details.
- Inspired by classic arcade games
- Built with modern web technologies
- Community feedback and contributions
- Retro gaming aesthetic principles
- 📧 Email: support@linguafender.com
- 🐛 Issues: GitHub Issues
- 💬 Discussions: GitHub Discussions
Made with ❤️ for language learners and retro gaming enthusiasts