17 ms·
Kaiju – General purpose 3D/2D game engine in Go and Vulkan with built in editor
- nsxwolf 10mo agoVibe coded?
- TheDong 10mo agoSeems to have commits from 2023 and a copyright notice claiming "from 2015-present", so at least parts of it likely predate vibe coding.
- JokerDan 10mo agoVideo from a few years ago that might offer some background/context. https://www.youtube.com/watch?v=hWVKeKpNQto https://www.youtube.com/watch?v=hWVKeKpNQto The channel has a few videos on it, not watched any other than this introductory one but some of the titles look interesting. Also the introduction video above states an initial requirement of 'every PR must have a video' but it looks like that got dropped a while ago.
- kgwxd 10mo agoIs there something that gives it that impression? Didn't look at it too hard, but the readme tells a story of focused passion for the language, and programming in general. Vibe documented?
- nsxwolf 10mo agoReadme full of emojis.
- tptacek 10mo agoAnd grammatical errors. That Readme is obviously not LLM-generated. Come on.
- numlock86 10mo agoYou know why LLM text is full of emojis? drumroll Because people have been using a lot of emojis before LLMs in text already, and LLMs have been trained on those texts. This whole "You have emojis in your text, it's LLM!"-trope got boring really fast. Amazing to see (and to think of the implications of) so many people apparently being in emoji-free social bubbles before this, though.
- etse 10mo agoWhat’s the challenge with getting it working in macOS? Vulkan?
- MindSpunk 10mo agoThey're not using a library like SDL for windowing and input as far as I can tell. All the MacOS interfaces are in Objective-C or Swift, which I would wager (I've never used Go fwiw) aren't as easy to bind to from Go code. MoltenVK has some extra interfaces you need to integrate with too, it's not a completely hands off setup.
- bobajeff 10mo agoAbout 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.
- unclad5968 10mo agoIn my experience, when using Unity, I became acutely aware of creating garbage and how to avoid it. I used to see a lot of object pooling which is basically a makeshift arena allocator.
- chekibreki 10mo agoCan you explain? AFAIK Godot uses C++ under the hood which does not have garbage collection. Other languages such as C# and GDScript use bindings.
- giancarlostoro 10mo agoMost people using Godot will be using GDScript or C# to make their games. Funnily enough whilst trying to Google gdscript and godot, I found this post I wrote in 2018 (subcomments mention gdscript and gc). https://news.ycombinator.com/item?id=16673751 https://news.ycombinator.com/item?id=16673751
- jayd16 10mo agoIssue isn't about game devs it's about non-game devs backseat programming. If you spend a week in these engines you're well aware of the garbage collector.
- tapoxi 10mo agoGDScript 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
- groundzeros2015 10mo agoGitHub 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.
- craftkiller 10mo ago> it’s always easier to make an engine than a game. It could just be different interests. The kind of person who makes a game engine is a technical optimization-focused tech-focused person, sort of like a mechanic. In order to make a game, you have to deal with softer concepts like "is this fun" which is more like a designer/artist. Game studios need to bring these people together, but in the FOSS world the mechanics are happy to spend their time building an engine that runs beautifully without concerning themselves with the art side of things.
- CooCooCaCha 10mo agoYes and no. It’s true that some people really only care about a slice of the process, but if you’ve been around the gamedev scene long enough you’ll also see people working on very technically ambitious projects while they’re fooling themselves thinking they’re making a game. I just need a few more years working on my 4D non-euclidian voxel MMO engine before I can make my game!
- groundzeros2015 10mo agoIn the real industry the very technical people are focused on very concrete problems like level 3 is causing too much overdraw on Xbox. What can we do without breaking X,Y, and Z.
- 6SixTy 10mo agoWhy assume that a game has to be made? Making a handful of tech demos doesn't come with that baggage and deflects criticism of making an empty shell of an engine with nothing to speak of.
- pants2 10mo agoAfter 10 minutes of digging I managed to find one single screenshot of an actual game built with it. Isn't that the first thing a developer wants to see? https://unity.com/ https://unity.com/ leads with demos. https://kaijuengine.org/ https://kaijuengine.org/ leads with a block of text claiming it renders cubes faster than Unity.
- p2detar 10mo agoIt says on the home page it’s under development. I wouldn’t expect any games made with yet. > The engine is not released and is under heavy development.
- chrisjj 10mo agoEvery major established engine is under development yet has many games to show. Development includes testing. A game engine's test is games. Lack of games speaks volumes.
- efskap 10mo agoWhat does a screenshot of a game tell you about the engine or the developer experience? If you can push triangles and run shaders you can render anything.
- filleduchaos 10mo agoA screenshot (better yet, a GIF) gives you at least a basic idea of what the engine's renderer can do. You can push triangles and run shaders in pretty much every UI framework on earth and yet for some strange inexplicable reason people tend to want to see what the framework can actually do.
- CJefferson 10mo agoFor a start, it tells you the engine can actually be used to make a full finished game — which with hobby game engines isn’t a guarantee. If you want me to use an engine, I’d like at least one finished game, preferably even released on Steam.
- MindSpunk 10mo agoSeems like a cool project. I don't understand why they're calling out the FPS of an empty scene as a useful number compared to Unity though. Ignoring that this engine will have a fraction of the features of Unity (the likely reason for the FPS number in the first place), it's just a useless benchmark because it's an empty scene. `while (true) {}` will get you the same thing. I'd wish they'd highlight how the engine helps you make a game rather than arbitrary performance numbers on microbenchmarks that don't generalize to a real game project. You can absolutely be faster than Unity, but "9 times faster than Unity out of the box" is not a number people should take seriously without the context of where the number comes from. I wish them well though. I'm always interested to see more work in implementing engines in GC languages. I'm personally quite interested to see what can be done in modern GC languages like Go or (modern) C# which provide lots of tools to limit GC pressure. Being able to write C-like code where needed in an otherwise managed runtime is a really powerful tool that can provide a best-of-both-worlds environment.
- james2doyle 10mo agoStill not "9 times faster", and still seems disingenuous, but here is one comparison that is at least given with some more context: https://x.com/ShieldCrush/status/1943516032674537958 https://x.com/ShieldCrush/status/1943516032674537958
- ahZOTERESET 10mo agoPpth(//news.ycombinator.com/-+).us
- johnnyanmac 10mo agoI see it as overhead for the base engine. Though yes, even unity has some post processing built in that would affect performance. But, I will always correct the cardinal sin of "using FPS to measure performance". Especially for an empty scene, this is pretty much snake oil. 200 fps is 5 milliseconds 1800 fps is a little pver half a millisecond. Giving back 4.5 milliseconds doesn't means much if any sense of real work will add it back.
- eek2121 10mo ago
- 999900000999 10mo ago9x faster than Unity ? With such an outrageous and unfounded statement, I'm just going to assume the project isn't worth taking seriously. Make a real game first, and then we'll talk.
- nullbyte808 10mo agoThe binary compilation time advantage alone makes this a promising editor. All the other editors take ages even for simple builds.
- AmbroseBierce 10mo ago"You can assume or you can test"...he has the LinkedIn engagement bait babble down to a tee, that much is true.
- iamcreasy 10mo ago> the simplicity and "just works" of writing Assembly code was a great boost to my happiness. If the author reading: I am curious to see an worked out example where writing the assembly code was necessary.
- jdc0589 10mo ago> How to build a Faraday cage for your bedroom 10/10
- artur44 10mo agoThe “9x faster than Unity” line also jumped out at me. Empty-scene benchmarks are basically a measurement of how thin your abstraction layer is, not how the engine behaves under actual game workloads. What is interesting, though, is that engines like this often reveal how much overhead comes from tooling, scene graph complexity, editor integrations, GC pressure, etc. Sometimes a very lean engine feels “faster” simply because it avoids all the layers that a mature engine needs to support large teams. I’d love to see a demo that stresses real systems — entity updates, materials, batching, physics, etc. That would say far more about the architecture than raw FPS of drawing nothing.
- chrisjj 10mo agoCan it create sound?
- charcircuit 10mo agoh.frameRateLimit = time.NewTicker(time.Second / time.Duration(fps)) On Windows this only has a resolution of ~0.5ms (down from ~15.6ms when this frame limiting code was written). It also is not synchronized to when frames need to be submitted which means that depending on when the timer is created it can result in the game having stutter.
- guywithahat 10mo agoI love the idea of using Go for games, but go-routines and channels aren't really low-enough latency to be used in games. In particular, ebiten, one of the largest go game engines doesn't use a single go-routine under the hood for (presumably) this very reason. Attempting to use channels and such in my own project (https://thomashansen.xyz/blog/ebiten-and-go.html https://thomashansen.xyz/blog/ebiten-and-go.html) left me with about 70% cpu utilization I couldn't pass
- kunos 10mo agoI watched a video presentation and cringed a bit to be honest. I've done a bit of 3D with Go some time ago ( https://www.youtube.com/watch?v=cjn3twYB7xQ https://www.youtube.com/watch?v=cjn3twYB7xQ ) and quickly realized it's not a viable tool because of the huge FFI overhead... weird to see all this claims about performance in an engine that will leave so much on the table every single time it makes a call into Vulkan... as soon a decent scene will be added it'll crawl to a stop. I 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.
- nish__ 10mo agoYou only need to call into C once per frame. Is the FFI overhead really that bad?
- drnick1 10mo agoA GC language is a non-starter for a game engine, I thought this was "game development 101" level knowledge. There is a reason every major game engine actually used to make games is written in C++, with some scripting language on top of that for game logic if necessary.
- maccard 10mo agoEvery game made with Unreal has GC bolted onto it. GC is absolutely viable for shipping games.
- drnick1 10mo agoI don't think that's quite true. While Unreal has a GC, it's not used for the low-level components, only for the "user-facing" objects.
- jerf 10mo agoWhich can rapidly exceed in size and count the "non-user-facing" objects. This objection really needs to die. GC does not instantly mean you can't program games. At most it locks you out of the tip-of-the-tippy-top AAAA games, but if you were trying for that you weren't going to use "someone's GitHub project" anyhow. And most of them probably have meaningful GC in them anyhow.
- maccard 10mo agoWhat’s your definition of tip of the tippy top AAAA games? Because an awful lot of them are using unreal too!
- maccard 10mo agoPretty much everything in unreal aside from the rendering code and platform interaction layers is written in uobject and actor land - which is garbage collected. The rendering code also isn’t “just” not garbage collected - it eschews all the normal c++ and is written in a totally different way. It might as well be in a different langauge honestly
- system2 10mo agoKaiju means giant monster in Japanese, by the way.
- jadsfwasdfsd 10mo agoWhy would you want segmented stacks, cgo FFI overhead, goroutines, & asynchronous preemption for a game engine? Odin is better suited than Go is for this type of software. Almost any programming language would have been a better choice here. This is rage bait I'm sure. Maybe TinyGo can save their ass here?
- slingexe 10mo agoPeople love making game engines, but to actually make a full game out of that is an entirely different challenge.
- Aeolun 10mo agoThe star history of this project is really funny.
- liampulles 10mo agoI've been put off a lot of other engines and frameworks because I really miss programming in Go, so this is super cool. Historically Go was viewed as not the best choice for game Dev because it's GC process was known to cause periodic blips of load, but I wonder now how smooth it is now. I believe one can also plug in arena managed memory and alternatives of that I'll.