Hacker News new | ask | show | jobs
by Yokolos 3 days ago
Man, Godot sounds like a bit of a mess. I've been building a Freelancer-like game on it for a while now and performance has been a nightmare to the point where I've offloaded most of my code into pure C# and out of Godot. I even had to give up on Godot's Jolt physics. I'm constantly hitting the limits of what Godot can do. The renderer is pretty much the only thing stopping me from putting tons of ships in the same battle, but I'm also not experienced enough at game dev to know if what I want to do is actually doable with a better renderer or on something like Unreal.

I do agree with her take though. Getting up and running in Godot was surprisingly, blindingly fast, so I don't regret picking it at all. I'm just not sure I'll be able to stick with it for an eventual release.

6 comments

For a pure C# engine maybe check out https://www.stride3d.net. It's using Bepu for physics.
I considered it, but there's no path towards a console port afaict since NativeAOT isn't supported yet, and I want to avoid being locked out of any platforms in the future. I've been playing my game on my phone and my Deck against the same server and being able to switch between devices whenever I want really appeals to me.
It sounds like a mess, though comments about Godot are often vaguely positive. I appreciate you posting your experience about a limitation you’re running up against.

I can think of only one popular game of note that was made Godot, Slay the Spire 2. I’d love for more titles to be released to prove the engine can be competitive.

The popularity of a game has far more to do with advertising and streaming exposure than the framework used - obviously Godot is capable, thousands of games have been published with it at this point.
Depends on what your threshold for "popular" is.

Other games that come to mind: Golden Idol series, Buckshot Roulette, Dome Keeper, Arctic Eggs, Cruelty Squad. Sonic Colors, kind of.

After some renewed profiling last night I determined that currently the renderer isn't a blocker anymore after a lot of optimizing I've been doing these past months. A lot of that has been pulling stuff out into decoupled and Godot-independent C# threads, so Godot is pretty much just being used for rendering, UI and input handling now.
Brotato is also a Godot game.

You can look up engines on SteamDB.

Is there actually a huge performance gap between Godot and Unity/Unreal? I've never personally made a game but I have only seen small-medium games in Godot. I would have thought the rendering would be where the slack is tightened first as its the most visible part.
For small projects, especially small 2D projects? No. For big projects being done by pro teams that are willing to do a lot of work to customize their render pipelines and whatnot to really push resources to the limit? Yes.

I am absolutely NOT a game dev experts, so I'm sure I'm missing subtleties, but from what I understand, Unity's scriptable render pipelines give advanced teams more opportunities to tweak custom/complex rendering logic. I get the impression that they are likely pretty comparable out of the box if you just start adding objects to a scene and measuring performance, but Unity has fancier tools for potentially improving on that.

Godot has the Compositor. https://docs.godotengine.org/en/stable/tutorials/rendering/c...

Unity has little advantage over Godot these days, unless you're familiar with one and want to spend absolutely zero time familiarizing yourself with the other.

Sometimes it is possible to pinpoint problems if not fix them. In my limited experience the Godot source is quite accessible and straightforward despite the complications of multiplatform builds.
Have you tried using the profiler? Where is the bottleneck?
So I'm a bit embarrassed. I was going off my profiling work done 3 months ago when I was still having issues. I've been working a lot on optimization and hadn't done any proper non-headless profiling with high ship numbers since then. After seeing this your comment, I spent last night running some performance trials and the GPU rendering is down to 3ms even at a high number of ships. Any further slowdown is still coming from the physics step.

I unfortunately can't edit my comment anymore to correct what I wrote.

Jolt is essentially the same physics engine that was used in the Horizon games, the performance there should be able to get quite good.

If you're making any kind of even slightly ambitious 3d game you probably need to be using gdextensions (ie writing custom engine-extensions in C++). I'll add that the engine source is very accessible. It's deliberately pretty bare C++, so if you have a decent amount of C# / C experience you should be able to find your way around it pretty easily.

Unity is a bit better when it comes to performance foot-guns and messiness (and in some ways much worse). Unreal seems to be pretty frictionless for getting something working that looks impressive, but if you're not very experienced performance is going to be a big issue there too (there seem to be very few games made in Unreal that run well on mediocre / older hardware).

Godot's a mess in the sense that it is trying to expand in every direction at once right now. I think it'll be in a pretty different state in 2-3 years.

I know that Jolt is used in Horizon, so I don't know why I had such problems with it. I've settled on Bepu for now, which fits better with my plans for multiplayer anyway.