Another thing for performance. Use the built-in nodes along with their respective callbacks for as much logic as possible (for instance, using the [i]body_enter[/i] callback for collision checking is much faster than the use of [i]get_overlapping_bodies[/i] in the fixed_process loop).A second example is using the timer node instead of adding to a value for simple time-dependent logic (which I think may speed up logic processing if there's a large number of objects that use such a thing).[hr]A second tip from me would be something I found at the Godot Q&A site, and that is how using the normal process loop is generally faster as executing logic than the fixed_process loop (for a physics object for instance, you can use both loop types in the same script and have the process loop do things that do not require a perfect synchronization with the physics).[hr]Thirdly, if you don't need the object to do any logic for a while, you can simply turn off the process and/or the fixed process loop by doing [i]set_process(false)[/i] (turning it back on with a callback or from the script of another object if needed).[hr]Finally, for 3D games at least, some types of geometry like terrains may allow you to get away with not having them cast any shadows (which could bump up the FPS a bit). You can also divide very large pieces of level geometry into chunks so not all are being rendered at once (due to Godot's frustum culling).