A 2-player competitive arcade game that accidentally became a full game engine. Built entirely from scratch in 2 weeks — somewhere along the way the engine became more interesting than the game itself.
Two dots (red vs green). Shoot each other. First to 10 hits wins.
- Red player: WASD to move, G to shoot, Q/E to rotate direction while stationary
- Green player: Arrow keys to move, 0 (numpad) to shoot, ./ to rotate direction
- Fullscreen, scales to any resolution
- Dots render with a glow effect — colored outer ring + bright center
- F3 toggles debug overlay (live positions, velocities, distances, projectile count)
What started as a simple game turned into a proper engine architecture:
src/
├── core/
│ └── game.py # Main loop, world-to-screen coordinate system, scaling
├── managers/
│ ├── input_manager.py # Dual-player keyboard input handling
│ ├── collision_manager.py # Hit detection + scoring logic
│ ├── render_manager.py # Grid, dots, projectiles, UI, glow effects
│ └── audio_manager.py # Sound loading + cooldown anti-spam system
├── entities/
│ ├── dot.py # Player — velocity, acceleration, friction, energy-loss bounce
│ └── projectile.py # Projectile — lifetime management, wall bouncing
└── settings.py # All balance constants centralized
~9,900 lines total across 27 Python files.
- World-to-screen coordinate system — play area scales seamlessly to any screen resolution with automatic centering
- Physics — velocity, acceleration, friction, bounce with energy loss, max speed limits
- Audio cooldown system — prevents sound spam when multiple events happen simultaneously
- 1,401-line animated start menu — starfield background, smooth button animations, hover states, hidden dev access
8 experimental features built during development that never made it into the final game. Each explores a different mechanic idea:
| File | What it explores |
|---|---|
demo-Magic.py |
Magic spell system |
demo-wall_fusion_algorithm.py |
Dynamic wall merging algorithm |
demo-wall_fusion_blocky.py |
Blocky variant of wall fusion |
demo-landmine.py |
Landmine placement mechanic |
demo-landmine_SystemV3.py |
Landmine system v3 with improved AI |
demo-training_ground.py |
Practice / training mode |
demo-perspective_toggle.py |
Perspective switching system |
demo-shake.py |
Screen shake system |
These show how the engine grew — each demo is a self-contained playable experiment.
pip install pygame
python Start.pyHidden access: click the top-left corner of the screen 7 times in the menu, then enter password 1211. Left in as-is since the source is open.