A classic arcade-style space invaders game for Garmin smartwatches, built with Connect IQ and Monkey C.
- 🎮 Classic arcade gameplay adapted for smartwatches
- 👾 Green alien invaders that shoot back
- 🚀 Player cannon with limited fire rate
- 💥 Visual flash effects when aliens or player are hit
- 📈 Progressive difficulty with each level
- 💯 Score tracking and lives system
- 📱 Optimized for circular watch displays
- Garmin Fenix 7 / 7S / 7X
- Garmin Fenix 6S Pro
- Garmin Venu 2 / 2S
- Garmin Vivoactive 4 / 4S
- Move Left: Swipe left, tap left side of screen, or use left button
- Move Right: Swipe right, tap right side of screen, or use right button
- Fire: Press SELECT button or center tap
- Restart: Press SELECT when game over
- Maximum of 4 player bullets on screen
- Fire rate limited to prevent bullet spam
- Aliens shoot green bullets randomly
- Player starts with 3 lives
- Aliens speed up with each level
- Game ends when aliens reach the bottom or player loses all lives
-
Install Garmin Connect IQ SDK:
- Visit Garmin Developer Portal
- Download SDK for your platform (macOS/Windows/Linux)
- Follow the installation guide
-
Generate a developer key:
openssl genrsa -out developer_key 4096
- Clone the repository:
git clone https://github.com/farmisen/watch-invaders.git
cd watch-invaders- Configure environment:
cp .envrc.example .envrc
# Edit .envrc to set your SDK path
source .envrc- Build the app:
make build # Debug build
make release # Release build- Run in simulator:
make run # Build and run
make restart # Run without rebuildingmacOS requires OpenMTP for MTP device access:
# Install OpenMTP via Homebrew
brew install --cask openmtp
# Build and transfer
make release
# Open OpenMTP, connect watch, navigate to GARMIN/APPS
# Drag and drop WatchInvaders.prgmake release
# Connect watch via USB (appears as drive)
# Copy WatchInvaders.prg to GARMIN/APPS/
# Safely ejectSee DEPLOY.md for detailed installation instructions.
watch-invaders/
├── source/ # Monkey C source files
│ ├── WatchInvadersApp.mc # Application entry
│ ├── WatchInvadersView.mc # Game logic & rendering
│ └── WatchInvadersDelegate.mc # Input handling
├── resources/ # Assets and resources
├── manifest.xml # App configuration
├── monkey.jungle # Build configuration
└── Makefile # Build automation
make build- Compile debug versionmake release- Compile release versionmake run- Build and launch simulatormake restart- Launch simulator without rebuildingmake clean- Remove build artifactsmake help- Show all commands
- Language: Monkey C
- Platform: Garmin Connect IQ
- Frame Rate: 5 FPS (200ms timer)
- Min SDK: 3.2.0
Feel free to open issues or submit pull requests for improvements!
MIT License - feel free to use this code for your own projects.
- Classic Space Invaders arcade game for inspiration
- Garmin Connect IQ developer community
- Built with assistance from Claude Code
⌚ Made for Garmin smartwatches with ❤️