I also dabble in Godot, and there’s some optimizations I can give tips on, but the Debug tab is really useful for things like this, but I can give some shots in the dark. Using functions like set_process() and set_physics_process() to disable unnecessary logic. Use collision layers for big Area3D nodes so they only collide with what they need. Have physics objects “process_mode = Node.PROCESS_MODE_DISABLED” in _ready() function. These are some things that helped in my random projects. If you’re up you can hmu on discord: proti7 we can troubleshoot the issue, but if you want to go about it alone then good luck and I hope you’ll narrow down the issue because it could be a really cool experience with some extra polish.