Shipping Godot VR and Porting to PSVR2: A Partial Post Mortem

118 pointsposted 4 days ago
by ibobev

28 Comments

Yokolos

4 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.

bj-rn

4 days ago

For a pure C# engine maybe check out https://www.stride3d.net. It's using Bepu for physics.

Yokolos

3 days ago

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.

mercanlIl

4 days ago

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.

krapp

4 days ago

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.

graynk

3 days ago

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.

Yokolos

3 days ago

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.

bsimpson

3 days ago

Brotato is also a Godot game.

You can look up engines on SteamDB.

gorfxx

4 days ago

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.

CobrastanJorji

4 days ago

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.

m0llusk

4 days ago

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.

0x1ceb00da

4 days ago

Have you tried using the profiler? Where is the bottleneck?

Yokolos

3 days ago

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.

Fraterkes

4 days ago

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.

Yokolos

3 days ago

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.

a1o

4 days ago

> We did our best job here leaning heavily on the resource system. There's stuff I want to say about the result that's platform specific so I can't. We have a thing, it works, and it could be a lot better.

Literally the only part I wanted to get more information about.

I could use a lot more information on why POSIX is bad and exactly what it means on resource management being “aware” of unified memory. I mostly didn’t get.

pjmlp

4 days ago

Game consoles aren't UNIX, and the way file system access works has to take into account the specialised hardware.

Like for example, streaming textures from CD with cache directly into the rendering pipeline.

Example for PC, however it was inspired how modern consoles work

https://developer.nvidia.com/rtx-io

a1o

3 days ago

Looking at the example graphics in the OP post I would not think something as specific as the rtx-io matter, I thought it was something more conceptually general that could be applied everywhere without tie to a specific vendor.

pjmlp

3 days ago

The specific vendor is PlayStation hardware, and the more general concept modern 3D rendering engines architecture.

Orbis OS might be a FreeBSD fork, but there is very little UNIX on PlayStation games.

Similarly to how little there is on Apple and Google platforms, regardless of the underlying infrastructure, where doing POSIX file IO is equally inconvenient.

a1o

3 days ago

It appears this stuff is highly guarded under NDA and not available for anyone, I read the homebrew version (https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain), the SDL2 port and the other stuff and honestly didn’t find anything much interesting, or that makes any difference. Unless you have something properly as documentation to show I don’t think it is reasonable to expect anyone in an open source engine to care about whatever this “special” thing you mention is.

pjmlp

2 days ago

I also have NDAs from PS2 and Wii days, back when I had a foot into trying to make games, and got access when SCEE still existed with PS2Linux, and Nintendo was still giving away access to indies.

Now, this whole discussion is kind of needless, given that she explains the issues on the article.

user

4 days ago

[deleted]

danbolt

3 days ago

Claire makes a good point about standards improving require people complaining about their faults. Those gripes affect the discourse!

KuhlMensch

3 days ago

Lots of great rabbit holes, and game engine colour from a veteran.

RE: 90s-era scenegraph As someone messing with their first Godot app - I was a little surprised to see Macromedia-era scene-graphs in the IDE.

RE: material-per-glyph warning / FastText alternative Very much appreciate the heads up

I feel its an article I'll return to occasionally.

landver

4 days ago

The Label3D thing is real, we hit the same material storm on a Quest project and ended up just swapping to TextMesh like the Penguin Festival guy. Kind of wild that a per-glyph material made it into a shipping engine. The 80k number doesn't surprise me either, people underestimate how much of the tax is compliance and backend plumbing rather than rendering.