Thanks for this file ! Super nice for testing. You actually did it yourself ? Well I notice a little stuttering from time to time by my side, and I think we're still far from the Vampire Survivor's amount of ennemies, but I believe there's still have room for optimization ? However I'm afraid this is already showing that something coded with Phaser could be more efficient from that point of view ...
You are overestimating how many enemies are actually on screen. In fact I was exactly correct with my estimate. The game stops spawning enemies if more than 300 are alive at any given time. vampire-survivors.fandom.com/wiki/Enemies
The posted example has 500 enemies. Enemies in vampire survivor also do not really exist offscreen as they do in the example project. Offscreen enemies simply get despawned, just bosses get teleported near you instead of despawning.
The game does a good job of making it feel like there's 10x more enemies than there actually are.
Also check this out. reddit.com/r/gamemaker/comments/sust5d/vampire_survivors_enemy_count_how
If there is a bottleneck with games like this, it's rarely the GPU but rather the CPU. Specifically for web-based stuff you are limited to a single thread. Except you should theoretically be able to put the enemy logic into javascript and shove it into a webworker, which should help performance.