Seeking Community Insight on Using Godot for a High Entity Count Game

I’m contemplating the development of a game that would require the amount of entities seen in Days Gone combined with a vast Open Voxel world. I’m trying to decide between the 3 popular Engines, and while I’m aware of Unity’s DOTS & ECS features, which would be beneficial for handling such scenarios, I find Unity somewhat restrictive due to its limited multithreading capabilities in numerous instances despite its Jobs implementation.

I’m currently leaning towards Unreal Engine because it offers a broader range of tools and lower-level access to the engine. Additionally, when examining the types of open-world games developed with Unity versus those with Unreal Engine, it appears that Unity struggles to efficiently distribute workloads to the GPU, heavily relying on the main thread. Games like Rust and Escape from Tarkov serve as prime examples of this limitation.

Conversely, Unreal Engine seems to excel in producing high-performance games that manage vast numbers of objects, titles such as Satisfactory and Days Gone immediately come to mind.

I understand that Unity tends to appeal more to indie developers, which might explain the prevalence of less optimized games. However, even well-established developers like Facepunch encounter significant challenges in optimizing their game for heavy object loads. It’s not rare to find their game Rust barely using half the GPU, even if they have the latest consumer CPU—a notable issue in both Tarkov and 7 Days to Die as well.

Having said that, I also understand that much of how a game turns out depends on the Developer more than the Engine, and the Games I mention were created before DOTS & ECS, and their codebases being well developed would make transition difficult.

My knowledge of Godot, particularly in terms of handling multithreading workloads and how it compares to Unity and Unreal Engine, is limited. I would greatly appreciate any insights or experiences you could share, especially regarding how Godot might suit a project aiming to feature a high density of entities.

Thank you for any insight.

I’ve been using Godot for four years now but I’m no expert. I would not suggest Godot for a high entity count game unless you have a way to have the entities exist only in shader code somehow. That would be an advanced use-case and hard to pull off for anybody. (Think compute shaders, ect)

I’m a bit late to this thread, but, first off, you don’t need to limit yourself to shaders for handling high-entity counts.

If you’ll excuse me mentioning Unity first, about 2 years back I did a Unity experiment to see how many boids I could have in a single 60FPS scene, and got these rough results on a high spec PC. (I think it was an AWS g4dn.8xlarge instance)

  • GameObjects - 50K
  • DOTS - 250K
  • Shader - 1M+

Clearly shaders can help you reach the highest orders of magnitude, but getting those high numbers restricts the entities’ interactions with your game logic, so it’s only really applicable if your entities are a visual effect. Also, remember these are boids, so they’re running some very simple behavioural logic.

Translating to Godot, I’d imagine using the different techniques (e.g. Nodes, vs ECS, vs Shaders) would scale relatively similarly, so you could likely get a high entity count using an ECS system like Godex, or maybe even a C# ECS like DefaultEcs.

That said, I haven’t used an ECS with Godot, so if you’re seriously considering Godot, it’d be good to do a little pilot with Godex.