Hi,
I just started switching my game to Godot yesterday, after running into some serious garbage collection issues that I couldn't figure out. It's a bit of an odd engine comparatively, but I'm liking it so far. (Especially the lack of GC to worry about.)
I have run into an issue optimizing the game, however. Right now I'm creating a triple ring of fifty bullets every ten frames, which drops the game down to ~40-35 fps. They're all Area2D nodes with a Sprite, a circle CollisionShape2D and a Tween (used on alpha and size on creation, and collision with the player). They all queue.free() when colliding with the player, or leaving the gameplay area.
A lot of the stuff that I read about on this topic spoke about pooling. I tried to implement a pooling system (I moved a bullet to 0,0 whenever it got destroyed, added it to an array, and then pulled from that array instead of instancing a new bullet scene) but it lagged more, and didn't seem to function correctly.
In my previous engine, I had to implement a lower level class which wasn't included in the base engine (an OpenFL Tilemap, for reference) for rendering, as well as do radius checks with math. I tried to use radius checks in Godot, but it didn't perform as well as Area2D collision.
Currently all my programming is in GDScript, which I've heard isn't the best...
Any help or ideas would be appreciated, thanks!