How to properly organize a project with a high node count?

Hi. I’m struggling with performance in my low-poly open world game and I need advice on how to properly organize a project with a high node count.

As you can see in the monitor, I have over 8,000 nodes, and this is causing significant “Process” spikes and high draw calls, i think.

I cannot use MultiMeshes because i need millimetric precision and individual collisions for objects like walls. I don’t know how to structure such a large amount of nodes efficiently to avoid this lag while keeping the level’s detail. I removed almost all the vegetation from the game, but it’s still the same.

Any tips on the best workflow to manage thousands of nodes in Godot 4 would be appreciated.

I recently switched to Godot, and I’m enjoying it, despite having this problem.

Monitor:

Some game screenshots(Low Poly):

500 draw calls is not that much. You can use multi mesh instances for objects that look the same. This is only rendering and has nothing to do with collisions.

However the whole thing doesn’t look like a rendering bottleneck although it’s hard to say for sure without seeing the visual profiler chart. Looks more like you’re running too much script code per frame.

Post your visual profiler and cpu profiler charts. Enable script functions display for the latter.

The best workflow is not to have them. Nodes become a really annoying hindrance and a potential bottleneck (depending on type and whether they run scripts) after a certain count threshold. If you determine that node count is really your bottleneck, the alternative is to ditch the majority of them altogether and create things directly on Godot’s servers.

2 Likes

Hello!

I’ll use MultiMesh for the grass. In the case of houses and static buildings, it’s possible to use it without “hardcoding”?

The only script I use is a simple one for character control.

Combine map zones together? Like Rockstar did with titles such as GTA? Maybe I’ll use that option.

Visual Profiler:

Unfortunately, I can’t upload any more images due to forum limitations.
Profiler:
Processing time: ~10ms
Physics processing time: ~16ms
Everything else is below 1ms

What’s the widest area in the visual profiler chart?

What do you mean by “hardcoding”? You should use them for everything that repeats excessively.

What’s in this 8000 nodes? Your screenshots don’t look like there should be that much. Can you post a breakdown of your nodes?

Also, if you can divide the map into multiple sections that can be loaded separately - do so.