@Vansh_7
on
Mini Space Shooter
Here's how I'd write it up if it were me talking about my own project:
So I built a full vertical space shooter in pygame, and honestly I'm kind of proud of how far I took it past just "ship shoots enemy" basics.
What I actually made:
I've got a ship at the bottom of the screen dodging and shooting waves of aliens, with asteroids drifting through the background and comets occasionally streaking by. Difficulty scales as I rack up score — enemies get faster and spawn more often every 150 points, and the background theme actually swaps out as I level up (three different nebula/planet setups I built).
The stuff I'm genuinely proud of:
I drew every asset myself with pygame's draw functions — no sprite sheets, no downloaded assets. The ship has a cockpit dome, wing highlights, thruster lights, the works, all built from polygons and ellipses layered on top of each other. Same with the aliens and lasers. It was more work than just importing images but it means the whole thing has one consistent look that's actually mine.
My asteroids are procedurally generated — I seed a random generator per asteroid so I get an irregular rock shape plus random craters every time, and no two ever look the same, but they're still reproducible from the seed. I didn't expect to bother with something like that but I'm glad I did.
The backgrounds aren't just black space. I built three full themes with gradient skies, layered nebula blobs I blend additively, and a shaded planet with a ring. On top of that I've got a 3-layer parallax starfield with twinkling stars, some warm-colored and some cool, so it doesn't feel flat.
I added a powerup system — rapid fire, shield, triple-shot, extra life — each with its own icon and a pulsing glow ring so they actually stand out on screen.
This is the part I'm most happy with honestly — the juice. I added explosion particles with actual sparks and gravity, expanding shockwave rings when something dies, screen shake and a red flash when I get hit, an engine trail and flickering thruster flame behind my ship, and I even faked a glow/bloom effect on my HUD text by offsetting translucent copies of it. Little things like that are what make it feel like a real game instead of a tech demo, and I made sure not to skip them.
I kept my code organized — separated my asset-building functions, my entity classes (Player, Asteroid, Particle), and my main game engine class with clean update/draw/run methods, instead of just dumping everything into one giant loop like I easily could have.
What I'd still want to add:
My shield doesn't really show feedback when it blocks a hit, my asteroids are just background decoration right now with no actual collision, and I haven't touched sound at all yet — that's probably my next move given how much visual polish is already in there. I also don't have a pause screen or menu, it just goes play → game over → restart.
But overall, I didn't just make a toy example — I made something with an actual visual identity, and the particle/glow/shake combo is the stuff most people skip, and I didn't.
- 4 devlogs
- 11h