-
Retro Shooter revives classic brick game nostalgia with smooth arcade action, falling enemies, and intense boss battles.
-
Every run is a chance to beat your high score and survive longer in the retro battlefield.
-
Survive intense boss encounters with scaling difficulty, projectiles, and strategic movement.
-
Destroy falling enemies with smooth controls and fast-paced retro shooting action.
-
Enter the world of Retro Shooter — a nostalgic arcade experience inspired by classic brick handheld games.
🎮 About Retro Shooter
💡 Inspiration
Retro Shooter was inspired by the classic brick handheld games and early arcade shooters that defined an era of simple, addictive gameplay. Growing up with those devices left a lasting impression — so the goal became recreating that nostalgic experience, but with smoother controls, better balance, and a modern gameplay feel that still respects the original spirit.
🚀 What It Does
Retro Shooter is a minimalist 2D fixed shooter where the player controls a ship at the bottom of the screen, moving left and right to shoot enemies descending from above.
After destroying a set number of enemies, a boss appears with increasing difficulty per level. The game is built around four core pillars:
| Pillar | Description |
|---|---|
| 🎨 Clean visuals | Block-style pixel aesthetic |
| 🕹️ Responsive controls | Smooth, frame-independent input |
| 📈 Difficulty progression | Balanced scaling that challenges without frustrating |
| 🔁 Gameplay loop | Simple, engaging, and replayable |
🛠️ How It Was Built
The game was built using a lightweight approach focused on performance and simplicity. Below are the key systems:
⏱ Time-Based Movement (Delta Time)
All movement is decoupled from frame rate using delta time, ensuring consistent speed across every device:
$$ \text{movement} = \text{speed} \times \Delta t $$
👾 Enemy Spawn System
Enemies spawn dynamically with increasing frequency as the level increases, creating escalating pressure without manual tuning per level.
💀 Boss System
A boss appears after a fixed enemy kill threshold. Boss HP scales with the current level \(L\) using:
$$ \text{HP} = 8 + (2 \times L) + \frac{L}{2} $$
This means a level \(L = 4\) boss has \(\text{HP} = 8 + 8 + 2 = 18\), while a level \(L = 10\) boss has \(\text{HP} = 8 + 20 + 5 = 33\) — a significant but fair challenge increase.
🔄 State Management
Clear separation between all gameplay states:
PLAYING→ normal enemy wavesBOSS_BATTLE→ boss active, special behaviorPAUSED→ frozen game stateGAME_OVER→ end screen and reset
🔈 Minimal Sound System
Only two sound events are used — shooting and boss defeat — keeping the audio clean and retro without sensory overload.
🧠 What I Learned
- Game feel over complexity — a polished simple game beats a messy complex one every time
- Delta time is essential for cross-device consistency; frame-dependent movement is a hidden bug
- State transitions require careful design, especially around boss spawning and kill counter resets
- Difficulty scaling via formulas (like the HP equation above) is more reliable and tunable than hardcoded values
- Less sound = better experience — removing audio clutter significantly improved the feel of the game
⚠️ Challenges Faced
Enemy Speed Bug
Enemies became erratically fast due to frame-dependent movement. Fixed by applying delta time \(\Delta t\) consistently across all movement calculations.
Boss Spawning Issue
The boss appeared only once because the kill counter and state flags weren't properly reset between rounds. Resolved with explicit state resets and continuous condition checks every frame.
Sound Overload
Too many sound triggers created a noisy, unpleasant experience. Solved by reducing events to only the two most meaningful sounds.
UI Overlap
The boss health bar initially overlapped the gameplay area, obscuring enemies. Repositioned it outside the game canvas entirely.
Difficulty Balance
Finding the right HP and attack values for bosses required multiple iterations. The formula \(\text{HP} = 8 + (2 \times L) + \frac{L}{2}\) emerged from testing to provide fair but escalating challenge.
🎯 Final Thoughts
Retro Shooter focuses on delivering a clean, nostalgic arcade experience while solving the real problems that plague simple games — inconsistent speed, poor balance, and cluttered feedback.
The result is a game that is easy to pick up, satisfying to play, and optimized for both performance and user experience — a small project, built with care.

Log in or sign up for Devpost to join the conversation.