Hey, great start! I think you have a good sense of fitment between player speed, weapon speed, enemy speed, enemy count, etc... All those things need to fit together for a fun experience, and you're pretty close already.
- I would personally try tuning the player speed down a bit. Think in terms of how much time the player has to process the new information coming in from the edge of the screen they are moving towards. Slower = more time to think and process what's happening.
- The player movement needs to work with a Vector, not raw addition of velocity to X/Y axis. Vector math is fairly easy once you practice with it a bit, and is one of the most useful tools for gamedev. Right now, the player moves quicker in diagonals than in up/down/left/right directions. Also, with a joystick, you will need vector based movement for that. My keyboard logic for vector movement is really simple. Keyboard left down? Vector.x - 1. Keyboard right down? Vector.x + 1. Same for Y and up/down. Then I set the length of the vector to the desired speed/acceleration, and apply it to the player.
- I'd try tuning the enemy speed down a bit too. It's too easy to get ambushed right now and now really have a chance to survive. Some knockback from the gun would help too. You can always tweak the enemy health up as a counter-measure if it makes things too easy. Again, it's about mental processing time for the player.
Overall, it has a good feel going even at this early stags. The lighting transitions between areas is cool. And like I said, there are a lot of good decisions already made. Keep it up.