Live data from Hacker News

Godot 3.3

godotengine.org

111–120 of 138 posts

Re: Godot 3.3

#111
post #13

I've shipped a commercial game in Godot 3.2. I'm also well versed and shipped games in UE4. All I can say is working with Godot is an absolute bliss. Seriously, it's fun, it's "easy" and it gets out of the way. Within a couple of weeks, you can be focusing on making your game, rather than a constantly evolving tech-demo. There are only two caveats: understand what Godot is not good at, 3D open world / large landscape…

I can’t tell if the Godot team is serious about commercial viability. My company cannot afford to wait until Godot 4 to build product. And since we’ve got a big investment in prior work, there is little chance we will switch that work over to a platform that will be brand new in a short period of time.

> I can’t tell if the Godot team is serious about commercial viability.

I mean, it's MIT licensed. So no, not really. It's designed to make games, and the commercials are left to you.

My advice: don't bother waiting for Godot 4 just because it sounds nice. You'd be surprised at how many of the "limitations" of the 3.x branches are not actually problems at all for most use cases (granted, your company may have a very niche use case...)

Re: Godot 3.3

#112
post #35

Earlier quoted context omitted.

I've had a similar experience. Godot is a fantastic 2D engine, and a capable 3D engine. If your goal is shipping a fully featured 3D game I'd still recommend Unity or Unreal over Godot, unless you're comfortable with it not being an industry leader. For 2D however, I'd recommend Godot above anything. Godot 4.0 still has a long way to go before it's ready for everyday use fortunately, not even in alpha state yet so I…

To be fair, it's perfectly fine for 3D, such as traditional "isometric" style 3D. It suffers more with the lack of clever culling in first person style cameras, especially near large objects (it renders the whole object, even if 5% of it is seen).

Godot 4.0 will include occlusion culling actually, so there's hope.

Re: Godot 3.3

#113
post #27

Earlier quoted context omitted.

I'd like to know more about what you mean by "Godot is not good at 3D open world". Is it just a matter of performance or something more architectural?

Godot wasn't intended to be used for 3D at all, it started as purely 2D engine. The 3D it can do is kinda... "shoved" into it. It works but it wasn't designed from the ground up like other native 3D engines are. Last I checked the editor has no advanced 3D scene editing features, and the engine itself has no basic capabilities that are needed for large open world 3D games, like being able to load tons of stuff on the…

> The 3D it can do is kinda... "shoved" into it. It works but it wasn't designed from the ground up like other native 3D engines are.

I mean, yes and no? In that the 3D renderer is a completely separate system to the 2D renderer. But, that means that the 3D renderer... was designed from the ground up to do 3D. Unlike the other direction with Unity, where 2D support is a hack of the 3D engine.

I've been using Godot 3's 3D features for quite a while now, and obviously as a single indie developer I'm not using it for AAA features, but it's still as competent as any other renderer I've used for my use cases.

> Last I checked the editor has no advanced 3D scene editing features, and the engine itself has no basic capabilities that are needed for large open world 3D games, like being able to load tons of stuff on the fly as the player moves in a way the player doesn't notice.

You're going to have to be more specific about "advanced 3D scene editing features", as the editor is actually very good, besides which, I compose most of my 3D scenes in code. Meanwhile, Godot supports everything needed to stream assets at runtime, from multi-threading support, to async resource loaders, LOD, and so on. Granted, you have to kind of roll your own.

The main issue people bring up for large, open world 3D games (which may be a dream of most developers who've not really made a game yet, but in any engine quickly becomes a "one day" project and not something feasible for most people) is the 3D renderer itself, which doesn't have occlusion culling, but again in most realistic cases you wouldn't ever notice this (and it has been added as a feature to Godot 4 already).

For example, recently I was messing around with voxels, and recompiled the engine with a C++ module called "Voxel Tools"[^1]. This supports level streaming and movement throughout large levels without floating point errors (ie, you have a VoxelViewer node that gives the illusion of moving through a large space, while actually not moving further from the origin than you can see).

https://github.com/Zylann/godot_voxel

Re: Godot 3.3

#114
post #28

Earlier quoted context omitted.

It was a little of both, but it's not really a valid complaint any more. When Godot first open sourced, it didn't have features like culling meshes that the player couldn't see, and the lighting implementation was pretty basic. The default language in the engine is basically python, so it could cause a performance bottleneck. Now it has a lot of the 3D performance features it was missing, and it has first-class C# su…

I tried Godot again like ~8 months ago and the C# support was still awful to the point that I'd consider 'first-class C# support' an outright lie. It might be 'officially supported', but it's in 'late alpha' since 2018 and is very obviously a second-class citizen, which should be clear just from the bad state of the C# docs. Community resources for C# are also much more sparse (subpar support probably contributes to…

I've been using C# in Godot for all of my latest projects of the last ~year and have had absolutely no issues at all. Most of the docs these days have a "GDScript/C#" tab selection, and the intellisense support is so good that I rarely even have to check.

Now, I did already know the Godot API quite well when I started using C# so that contributes. But I haven't found it to be a second-class citizen at all, and in fact allows me to use features that I wouldn't have been able to in GDScript (native event handling, offloading to native data structures for computation rather than using the Godot API for them, nuget packages, and so on). I can also use eg Jetbrains DotTrace to profile code in much more detail than GDScript, and edit and launch my game code from an IDE without ever opening the editor.

You can also opt to use the dotnet-core compiler instead of the bundled Mono one these days which allows you to use some more modern features.

The only clunky thing I've found is that trying to use a native C# data type in a Godot Node object causes marshalling errors, but I'm pretty sure that would apply to nearly any Mono game engine and that Unity has similar issues (having to wrap things in MonoBehaviours etc- it's been a while so this may be inaccurate). The simple workaround is just to use the Godot API for things that are in the scene tree, and native types when you need to compute stuff with better performance.

I'm curious as to what actually felt rough to you in C#?

Re: Godot 3.3

#115

Earlier quoted context omitted.

I tried Godot again like ~8 months ago and the C# support was still awful to the point that I'd consider 'first-class C# support' an outright lie. It might be 'officially supported', but it's in 'late alpha' since 2018 and is very obviously a second-class citizen, which should be clear just from the bad state of the C# docs. Community resources for C# are also much more sparse (subpar support probably contributes to…

Yeah, no idea why C# was introduced other than to appeal to people with zero game dev experience who might be lured in by thinking their knowledge of C# is going to matter. Also, the async/threading model breaks it's chains and requires developers to know about the internal implementation. That to me is a serious WTF.

> Also, the async/threading model breaks it's chains and requires developers to know about the internal implementation. That to me is a serious WTF.

You're going to have to know that stuff for any game engine that isn't just a pure C# framework. Unity is no exception afaik, you have to use the Unity API Job system to be able to run threads safely. I use async/await in Godot C# all the time. Threading requires using the Godot API, sure, that's natural, since threading can be a mess in video games.

Re: Godot 3.3

#116
post #46

Earlier quoted context omitted.

> 3D open world / large landscape, and console development. Will it be a good choice for FPS shooters taking place primarily in closed spaces like buildings, etc?

Yes if all your walls are individual meshes and you use large slabs for the ground (not the entire map being a floor). If you're keen on this, I recommend using Trenchbroom for level design and the plugin that goes with it in Godot, it's pretty cool! (Qodot)

Though you can use the MultiMeshInstance node or SurfaceTool API to create and combine meshes at runtime.

Re: Godot 3.3

#117
post #77

Earlier quoted context omitted.

The more comments I read in this thread, the more this sounds like Perl 5 and Perl 6.

Why Pearl instead of the dozens of other successful projects that maintain a stable version while working on a new version?

Because I worked with Perl and got burned a bit so it came to mind. I understand game engines are different and people build against stable versions for years sometimes.

Re: Godot 3.3

#118
Godot looks awesome but what keeps me from using it is the lack of console support. Does anyone know why that is? I’m guessing licensing and stuff like that.

Might be third party companies out there that could be hired to do the porting, but I don’t know.

Re: Godot 3.3

#119
post #103

Earlier quoted context omitted.

> Any idea why Godot does not do consoles? Console SDK seems to be not compatible with open source https://docs.godotengine.org/en/3.0/tutorials/platform/conso...

For those interested in Godot, but wanting console support - heaps might be of interest: https://heaps.io/ It is another, smaller engine. I would say less featureful than Godot, but I imagine there are some overlapping use-cases? Ed: and for something quite different - dragon ruby seems a lot of fun (not free, not open source, though): https://dragonruby.org/

I was curious how Heaps.io could be an Open Source project while also supporting consoles (PlayStation, XBox, Switch) so researched it a bit.

The key aspect seems to be that there's a commercial entity behind the project who presumably has console development licenses.

AFAICT none of the console specific source is Open Source but the implication seems to be that the source is (freely?) made available to registered console developers due to the fact the developer of both is a licensed console developer and has decided to make it available to others.

Console development/distribution is mentioned in a couple of places in the documentation[0]:

"The hello.hl file contains bytecode that can be run with the HashLink virtual machine using hl hello.hl. It does give quite good performances and have been proven by successful commercial games such as Northgard or Dead Cells.

However, it is also possible to compile the HashLink code using a native compiler. This allows to compile for consoles and mobile.

This will create a directory out containing a lot of generated C code that needs to be built using a native compiler and linked to the same HashLink runtime[...]"

With regard to console support it says:

"... for Consoles (Nintendo Switch, Sony PS4, Microsoft XBoxOne), please contact us at nicolas @ haxe.org if you are a registered developer for one or several of these"

And here[1]:

"The final resulting shader will then be compiled to the target platform native shader language (HXSL currently supports GLSL for OpenGL, HLSL for DirectX 11+, AGAL for AdobeAir, and PSSL for Sony PS4)."

Also, this post[2] describes how the lower level parts (using Haxe/hashlink) integrate with native (i.e. console) platforms:

"The game gets compiled to a cross-platform .hl file that can be run with HashLinkVM JIT. It can also be compiled to C directly and compiled using any native compiler, which we are using for our console ports on PlayStation, Xbox and Nintendo Switch."

"We also have additional platform API libraries for Steam, as well as console integration libraries that are only accessible if you have a registered developer."

In the same post the Heaps.io console implementation is described:

"This architecture allows us to integrate new renderers or platforms by just porting a few classes given that the native libraries are been made available in HashLink. Heaps.io supports the following plaforms/renderer:

[...]

HashLink/C with NVN (Nintendo Switch SDK native graphics API)

HashLink/C with GNM (PS4 SDK native graphics API)

HashLink/C for Xbox One SDK"

[0] https://heaps.io/documentation/hello-hashlink.html

[1] https://heaps.io/documentation/hxsl.html

[2] https://haxe.org/blog/shirogames-stack/

Re: Godot 3.3

#120
post #103

Earlier quoted context omitted.

> Any idea why Godot does not do consoles? Console SDK seems to be not compatible with open source https://docs.godotengine.org/en/3.0/tutorials/platform/conso...

For those interested in Godot, but wanting console support - heaps might be of interest: https://heaps.io/ It is another, smaller engine. I would say less featureful than Godot, but I imagine there are some overlapping use-cases? Ed: and for something quite different - dragon ruby seems a lot of fun (not free, not open source, though): https://dragonruby.org/

Ah, seems its developer occasionally comments on HN: https://news.ycombinator.com/item?id=26292740 :)
Post reply on HN