Earlier quoted context omitted.
Having spent a couple decades making engines that did ship games, now I spend a fair bit of free time helping noobs make engines even though statistically nearly none of them end up shipping games. Making a game engine is a fun and highly-engaging means to learning high-performance programming. Yes, it would be better if you also were able to invest enough to ship a game. But, don't let the infeasibility of that goal…
I think it’s very hard to learn high performance programming for real without facing real performance problems. I agree there is fun and learning to be had, but just note they are very different activities.
Kaiju – General purpose 3D/2D game engine in Go and Vulkan with built in editor
51–60 of 111 posts
Re: Kaiju – General purpose 3D/2D game engine in Go and Vulkan with built in editor
#52Re: Kaiju – General purpose 3D/2D game engine in Go and Vulkan with built in editor
#53Earlier quoted context omitted.
I think it’s very hard to learn high performance programming for real without facing real performance problems. I agree there is fun and learning to be had, but just note they are very different activities.
At what point of optimization does it turn into 'real' high performance programming? https://en.wikipedia.org/wiki/No_true_Scotsman
Re: Kaiju – General purpose 3D/2D game engine in Go and Vulkan with built in editor
#54Earlier quoted context omitted.
Go does surprisingly well at keeping GC freezes to a minimal in a way that you're unlikely to notice... C# has gotten a lot better since the core split as well. That said, there's a lot that comes down to how a developer creates a game. I was added late to a project working on a training simulation engine, similar to games, where each avatar in the game was a separate thread... man, the GC pauses on the server would…
> C# has gotten a lot better since the core split as well. It has improved but the majority of games using C# are using Unity which does not use .NET (Core). It uses Mono or IL2CPP specifically with the Boehm GC so it performs significantly worse than .NET and even standalone Mono (SGen GC).
Re: Kaiju – General purpose 3D/2D game engine in Go and Vulkan with built in editor
#55Earlier quoted context omitted.
I think it’s very hard to learn high performance programming for real without facing real performance problems. I agree there is fun and learning to be had, but just note they are very different activities.
At what point of optimization does it turn into 'real' high performance programming? https://en.wikipedia.org/wiki/No_true_Scotsman
somewhat past optimizing the frame count of an entirely empty scene.
on that matter : is it a game engine if there isn't a game?
I totally agree with other comments though -- if there is no pressure to meet specific metrics or accomplish certain things with the product then there is no real pressure to improve past a window or framebuffer drawn to video, just declare it's a game engine that makes a million FPS and throw it on the portfolio.
game engine work gets tough (and rewarding) with 1) goals and 2) constraints -- without those two it's more or less just spherical-cow style work that is too ambiguous or vague for real application.
Re: Kaiju – General purpose 3D/2D game engine in Go and Vulkan with built in editor
#56I wish Go didn't have this performance bottleneck because I really like the language and it would be a great middle ground for indie like games that don't want to follow the big engines route but sadly any kind of request of a faster path to call cgo was ignored by the Go team as games is not really something they are interested in.
Still best of luck to the guy but eventually he'll hit a wall and all the claims about performance will look funny.
Re: Kaiju – General purpose 3D/2D game engine in Go and Vulkan with built in editor
#57GitHub is filled with these because it’s always easier to make an engine than a game. You play with the fun tech and make the graphics engine. You never make any tough tradeoffs because you don’t have a target to aim at. When an engine becomes useful is when it has to make a game. All your abstractions tend to get rearranged and hard decisions are made.
Re: Kaiju – General purpose 3D/2D game engine in Go and Vulkan with built in editor
#58About garbage collection: Are there a lot of Unity/Godot devs unaware that their engines are using GC? I would assume they'd have accepted the cost of GC already. Unreal devs I can understand having an issue with it though.
GDScript in Godot doesn't use GC, it uses reference counting and doesn't "stop the world". Other languages that bind into the engine do this too, (C++, SwiftGodot, Rust-Godot) C# obviously does, Miguel de Icaza actually started SwiftGodot because he (ironically) ended up hating GC pauses after promoting C# for so long
You need to be very disciplined to pull this off, though. LINQ is basically off limits, for example. And of course, Godot's C# is likely much older than these modern techniques to begin with.
Re: Kaiju – General purpose 3D/2D game engine in Go and Vulkan with built in editor
#59About garbage collection: Are there a lot of Unity/Godot devs unaware that their engines are using GC? I would assume they'd have accepted the cost of GC already. Unreal devs I can understand having an issue with it though.
Unreal devs have Unreal C++ dialect with GC, Blueprints and soon Verve to worry about. The times of pure manual memory management game engines, across all layers of what requires to draw a frame are long gone. Naturally someone is going to point out some game engine using compiled C dynamic libraries for scripting, those are the exception.
That's what makes me curious about Rust engines like Bevy. Could is truly pull it off and bring back that kind of thought to game development? It's not "pure manual memory management", but the mindset of Rust requires that kind of thinking.
It will definitely be niche for times to come, since most (non-AAA) games simply aren't going to worry about performance. But it might carve a solid community for those concerned with optimization.