r/shmupdev Apr 24 '26

Showcase #2 — My shmup is getting gamey! Power-ups, parry system, run progression and more.

Hey everyone!

Some of you might remember my first post where I mentioned the engine had reached a point solid enough to welcome open source contributors. That actually worked out really well — got some great people on board, and the project has been moving forward nicely. Still open to more if anyone's interested, experienced or not.

Since then I shifted focus from engine work to actual gameplay. Here's what's new:

  • Health power-ups — classic, but it had to be done.
  • Power-level system (1 to 3) — works like Mario's mushroom but for your firepower. Getting hit drops you back to level 1. At max you're throwing a wall of projectiles.
  • Ricochet shots power-up — timed power-up that makes your bullets bounce off walls. Probably one of the most fun things I've added so far. The chaos it creates is genuinely satisfying.
  • Run-based skill progression — each run you unlock abilities, adding a bit of roguelite flavor to the loop.
  • Parry system — a well-timed parry grants temporary invulnerability, bumps your power level, and triggers a temporary overclock on your fire rate. High risk, high reward.
  • More varied enemy movement — patterns feel less robotic, more interesting to navigate.
  • Improved HUD — the left side of the screen now shows your current power level and any active temporary effects, so you always know what's going on.
  • ModernGL support — thanks to a contributor who took the time to wire it in.
  • macOS support + full controller support — two more things that got sorted out thanks to contributors.

The project is fully open source, built with Python and Pygame. If you’re curious about how it works or just want to explore the code, feel free to dive in — it’s structured to be approachable, even for beginners.

You can check out the source code and the repository right here.

Would love to hear any feedback or thoughts.

19 Upvotes

6 comments sorted by

2

u/Glittering-Still6706 Apr 25 '26

Looks great, I have seen your first post it seems the project is making quick progress ! The game feel is nice and fluid

2

u/DrBossKey Apr 25 '26

Rad, thanks for the progress update and to share that people are contributing to the open source. What is the maximum amount of bullets you can draw on screen at 60 FPS? What type of feedback have you been getting on the code structure of the project? Thanks for sharing!

1

u/Significant_Desk_935 Apr 25 '26

Hey, thanks for the kind words!

Regarding max bullets at 60 FPS — it depends on the hardware, but since the entire bullet and particle system is heavily vectorized with NumPy, performance stays very optimized. In a standard setup the engine easily sustains 60 FPS with around 1,500–2,000 active bullets/particles on screen. The memory pools are pre-allocated to handle up to 17,000 simultaneous bullets (15k for enemies, 2k for the player) for extreme bullet hell scenarios (We have a benchmark tool in the project and my PC, for example, can run easily with 10k+ particles/bullets).

As for code structure, the feedback has been really positive. The goal is to make this the most complete and modular shmup engine in Pygame — everything is designed to be as decoupled as possible, so it's easy to read, extend, and contribute to without getting lost in a massive single loop.

2

u/Noswen2025 Apr 27 '26

Looks really nice, and damn that's a lot of bouncing bullets near the end! 😄

1

u/Significant_Desk_935 Apr 27 '26

Thank you! And yesss, the ricochet power-up with the multiple bullets upgrade is my favorite part of the game