Amazing game! It feels so polished and was a lot of fun. I didn't read there was a dash at first which made some of the later attacks simply impossible to avoid lol. But I read the instructions again when I wanted to write the review, and then went back to playing to eventually beat it on max difficulty.
The juiciness is fantastic and I especially want to praise using the background as a health indicator, showing progress while also slightly obfuscating the remaining health to add tension!
Some constructive criticism:
The mouse cursor is way too small. I kept losing track of it in the shower of particle effects.
Dash input is ignored if also attacking. This might be intentional to make dashing more skillful as you have to also stop pressing a button to dash, but to me, it felt unfair. I think it should simply take priority over attack input.
The starting countdown was a bit annoying, I just wanted to try again and had to sit there for way too long. It adds tension the first time, but should be a lot shorter when retrying.
The boss's bullet attack should have some cooldown, when it is picked two or even three times in a row, the entire screen is covered in death and there is nothing you can do about that. This also adds an unwanted luck element to the fight.
The stutters others have reported as well are shader compilation, and happen when a new ShaderMaterial or ParticleProcessMaterial are drawn, which is then cached, so it runs smoothly afterwards. The fix for this is to simply make sure everything is drawn once in a loading screen, invisible to the player. This forces compilation while the player expects a delay, so it runs without interruption in game.
Running on web, the Leaderboard fails to load. Console logs:
"Calling SilentWolf backend to get scores...
GET headers: ["x-api-key: redacted", "x-sw-game-id: milkncookies", "x-sw-plugin-version: 0.9.9", "x-sw-godot-version: 4.5-beta5 (official)"]
ERROR: Condition "!is_inside_tree()" is true. Returning: ERR_UNCONFIGURED
at: request_raw (scene/main/http_request.cpp:118)"
The api key is also visible, probably not an issue for a jam game but I removed it just to be sure. The post request didn't throw an error, I hope it worked I had over 12000 points. The leaderboard also didn't show on Windows, although I have no logs here to know that it truly failed and not just takes longer than 10 seconds.
Great work, congrats!