Very smooth gameplay! Regarding the optimization, make sure to use offscreen omponent with destroy for bullets:
offscreen({ destroy: true }),And coins could use hide option, to not be rendered outside of view (although might need to play with distance option as well cause of magnet ability, default is 200):
offscreen({ hide: true }),Also, you should add tags to your objects and use collisionIgnore option for their area components and ignore all the objects that don't need collision to be checked with. E.g. for bullet obj:
add([
...,
offscreen({ destroy: true }),
area({ collisionIgnore: ["bullet", "flower", "player"] }), // including itself
"bullet", // tag
]);(Lastly, consider pausing the spider spawn when in ability picker :))
Great job! <3 :)