Well it was "change yourself, change the world", not the game. Even though it's kinda the same thing. And there is nothing else in the world besides the player and enemies so it is kinda changing the world. And some power-ups don't directly affect the enemies but their spawn timings etc. So you pick the bonus, and the enemy side then gets applied with what ever is on the left and right sides of your pick. And the effect is always as close as possible for what it would be on the player.
Yeah the heart being the hitbox might be an oversight. I've played a lot of bullet hells and in them it's pretty much a standard to have player hitbox be just a tiny dot in the middle of the sprite, sometimes even not visible at all.
The collision issues boil down to me not using the physics engine at all. Godot couldn't handle drawing and updating such a huge amount of individual nodes as they are just an array of vectors, updated manually and drawn on bulk. I even tried (and wasted a day) to do the bulk drawing on NativeScript C++ but it did't really improve the performance by too much (should have gone the shader route). And would have needed to build the library for different platforms too on different computers so gave up on it. So probably just should need to check the whole distance between previous bullet position and current one instead of just checking the current position. The high speeds and smallish hitboxes sometimes allow the bullets to go through.
Did you notice that shooting cuts down your speed by half? So if you need more speed, stop shooting. Always have to come up with a downside to action such as shooting, otherwise might as well have it automatically shoot all the time instead of having the player hold one button down 100% of the time. And here it serves as a double for speed control, whether you need raw speed or precision for dodging. And I tried to balance it so that all different power-ups would be kinda "needed". So pretty much just toning everything down so much that it borders on not being fun anymore on the start.
There is like a sweet spot for the normal enemies. Like directly in front of them but few degrees on the side. That covers pretty much all their patterns but obviously further on isn't 100% safe since the enemy chains start more shooting on tandem and you can't kill them fast enough. And this is exactly why I made the starting range as low as it is, to try to make the range upgrade needed and wanted.
Thanks for playing and leaving detailed feedback! ❤️