A DOOM-inspired cybersecurity combat game for the Disobey 2026 Badge.
Rip and tear through a corporate network — from Guest WiFi to Core Router. Built in MicroPython on an ESP32-S3 with 512KB RAM.
"Work in progress. It runs on my badge and that's what counts." - Piia
You breach a corporate network across 10 zones. Each zone has a different cyber threat with unique abilities. Pick the right weapon, exploit weaknesses, manage your ammo, and survive.
| Weapon | Damage | Ammo | Description |
|---|---|---|---|
| Ping | 8 | Unlimited | Basic attack — trace the network |
| Nmap | 15 | Limited | Port scanner — resupplied between levels |
| Metasploit | 30 | Rare | Exploit framework — powerful but scarce |
Hit an enemy's weakness for 2x critical damage.
| Zone | Enemy | HP | Special Ability |
|---|---|---|---|
| Guest WiFi | Script Kiddie | 12 | — |
| DMZ | Trojan | 20 | — |
| Web Server | Worm | 25 | Replicates every 3 turns |
| Email Gateway | Phisher | 22 | — |
| File Server | Ransomware | 35 | Encrypts your weapons (halves damage) |
| Active Directory | Rootkit | 38 | — |
| Database | SQLi Worm | 32 | Replicates every 3 turns |
| SCADA | Zero-Day | 35 | — |
| C-Suite | Social Engineer | 28 | Encrypts your weapons |
| Core Router | APT | 55 | Adapts to repeated attacks |
Earn ranks based on your best level reached:
| Level | Rank |
|---|---|
| 0 | Script Kiddie |
| 2 | Packet Pusher |
| 4 | Shell Jockey |
| 6 | Root Rider |
| 8 | Zero-Day Hunter |
| 10 | Digital Oracle |
- HP heals (scales with level)
- Nmap ammo resupplied (+2)
- Metasploit ammo at select levels
- Shield granted at select levels
The badge's NeoPixel LEDs track your progress:
- Each cleared zone lights up a green LED
- Combat flashes red on hit
- Victory: rainbow cascade
- Defeat: red flash then fade to dark
- Badge: Disobey 2025 Badge
- MCU: ESP32-S3 WROOM-2 (240 MHz, 512KB RAM)
- Display: 1.9" TFT 320x170 (ST7789)
- LEDs: 8x SK6812MINI NeoPixel
- Input: 3-button navigation (left/right/select)
- Framework: micropython-micro-gui
Flash the Disobey 2025 Badge firmware to your badge first.
Connect the badge via USB, then from this repo:
# Create directories
mpremote mkdir :badge
mpremote mkdir :badge/games
# Copy files
mpremote cp boot.py :boot.py
mpremote cp main.py :main.py
mpremote cp badge/__init__.py :badge/__init__.py
mpremote cp badge/games/__init__.py :badge/games/__init__.py
mpremote cp badge/games/cyberslayer.py :badge/games/cyberslayer.py
# Reset badge
mpremote resetCyberSlayer launches automatically on boot.
If using the badge firmware repo with make repl_with_firmware_dir:
>>> from bdg.repl_helpers import load_app
>>> load_app("badge.games.cyberslayer", "SlayerIntro")boot.py # Standalone launcher
main.py # Dev mode launcher
badge/
__init__.py
games/
__init__.py
cyberslayer.py # The game
- Paula Alavesa and Eija Alavesa
- Disobey badge team
- micropython-micro-gui by Peter Hinch
