Hacker News new | ask | show | jobs
by debacle 1442 days ago
Unity is suffering because it can't find a way to make DOTS/ECS first class without completely redoing basically everything.

That's my biggest complaint with Unity at this point. So much is built around the GameObject implementation that when you start using ECS you can feel the friction - you're writing a lot more code, you're doing things in a way that feel like swimming upstream, and there's less support + documentation.

How does Godot compare? Are highly threaded features out of the box? I would use Unreal but the C# Unreal interfaces I've seen are very immature.

5 comments

If you're doing high-end 3D stuff, Godot 3.x will probably disappoint you anyway.

If you're doing graphically simple games with a complex simulation under the hood (everyone loves RimWorld as an example), then you don't really benefit from an ECS that's tightly integrated with the engine. You just do all that stuff however you want, and use the engine as an I/O layer.

> If you're doing high-end 3D stuff, Godot 3.x will probably disappoint you anyway

Maybe 3.x, but I've seen/read some exciting stuff about 4.0's graphics engine

If I want a system that supports plugins, etc, and there's no uniform way of doing that, then I'm doing things from scratch, though.
Godot also seems to be built in a way that creates friction for ECS style game logic. It's built around scenes that are trees of nodes that each have associated behavior and signaling/message passing between nodes.
There is an ECS port for Godot named Godex, but it isn't hugely mature:

https://github.com/GodotECS/godex

I haven't used it, though I've been curious about it. As far as better options for ECS game engines go, I'd go with Bevy (personally), but you'll have to learn Rust (which I'm a proponent of anyway).

https://bevyengine.org/learn/book/introduction/

But both of these are still in "Beta", if that's even the proper term for their development cycle, at this point. They work, technically, but they could use some help, to my understanding.

Godot uses a similar object oriented approach as Unity. For ECS, you might keep an eye on Bevy[1]. It’s still not mature but its team has been making progress. Even Unity and Unreal had to start somewhere.

[1] https://bevyengine.org/

> How does Godot compare? Are highly threaded features out of the box?

Ish. But Godot very much embraces OO. Everything is a node extending another node with messages passed between. But IMO it's OO done right.

OO doesn't matter if you want to simulate 100k objects at once without slowdowns.
ECS on its own doesn't always help - it's not a magic bullet for every situation: sometimes you need to use spatially-aware data structures / acceleration structures for those type of "queries", and vanilla ECS (i.e. similar to a DB in terms of queries) doesn't always help you in these type of situations.
And how many games actually do that?

Also, if you really want, with Godot you can bypass the scene node system and also just use C++.