6 ms·
Voxile: A ray-traced game made in its own engine and programming language
- thousand_nights 7mo agonaming something tech related without referencing crabs or lobsters challenge [impossible difficulty]
- Cloudef 7mo agoVery cool
- spacemarine1 7mo agoThe founder, Wouter, has created or helped design 10 programming languages. Voxile is built in his newest language: Lobster. Wouter has been a major contributor to WASM and LLVM while also inventing flatbuffers. He’s worked at Crytek, Gearbox and Google among many other places. I’ve never seen anything like Voxile.
- MikeShah 7mo agoIndeed! Thanks for also linking my discussion with Wouter His early work on Cube engine and Amiga-E are still awesome to look at.
- repelsteeltje 7mo agoI remember learning about Bla, a functional programming language for Amiga wrote for his master's thesis.
- thot_experiment 7mo agoCube 2: Sauerbraten too! Definitely spent some evenings playing that with my roomies back in the day before we invariably went back to Q3. What an insane resume.
- dinkblam 7mo agoI have fond memories of porting Cube, Sauerbraten and AssaultCube to the Mac back in the day. Given what i've seen from Wouter back in the day i am not surprised he is still on it full steam…
- vessenes 7mo agoVery cool - the post made me want to play the game, and check out lobster, but didn't link to it - lobster is open source: https://github.com/aardappel/lobster https://github.com/aardappel/lobster. It doesn't look like the voxel engine is, though, which is a bummer. On reflection, I'm guessing that game is built for mods, so that would be a path to getting to play with the engine side.
- Aardappel 7mo agoYes, only the lower layers are open source right now. We will eventually expose more, when modding will more stable, etc. Right now the editor has a UI driven minimalistic language for specifying quests and other gameplay actions.
- OtomotO 7mo agoAny ideas how to increase the render distance way further? Because that's where I always get stuck. There are so many cool algorithms and ideas that I have like combining ray tracing with meshing and even like imposters for the distant chunks. But this is getting very complicated with contrees and raytracing/marching etc.
- Aardappel 7mo agoWith raytracing having a far render distance is actually fairly cheap and simple compared to polygonal worlds (good looking LOD is hard). Some reasons why we don't have a super far render distance, in order of importance: The biggest is GPU memory. The octree that holds the world gets gigantic at large sizes. We'd have to swap parts out as the camera moves. We can do that but haven't gotten there. Noise: raytracing looks incredibly noisy if you simply cast rays far into small geometry. Hence we even have LOD for blocks, even though they're not needed for efficiency, they're needed for visual stability. If you're unlucky and a ray has a lot of near misses with geometry, it does more work than other rays and it causes GPU performance degradation. It's rare but to raytrace far you have to optimize for a certain amount of ray steps, we actually put a bound on this. We find having fog gives some visual unity and sense of scale. With far away fog, the world looks VERY busy visually.
- injidup 7mo agolobster: Like rust, python and ruby all mixed together
- huevosabio 7mo agoThis looks so cool! Love the build to fight angle. Gonna try it as soon as... I have time
- deleted 7mo ago[deleted]
- sarchertech 7mo agoNow this is the kind of thing I expect people to bring to show and tell when they post about how they are 100x as productive thanks to AI.
- ashton314 7mo agoGorgeous. These are the graphics I wish Veloren[1] had. Maybe my machine is lacking the specs to dial up the graphics all the way… [1]: https://veloren.net/ https://veloren.net/
- VinLucero 7mo agoReally looking forward to playing Voxile with my friends! I feel like merging real quests with a Minecraft-like will be compelling.
- barcoder 7mo agoI'm a long time Unity developer that in the past year picked up Godot. The speed at which Godot loads compared to Unity is staggering, it's just so much faster. When I returned to Unity I raised that my flow state was constantly being broken in a way that it wasn't when using Godot. Entering flow is one of the beautiful things I love about programming. And being knocked out of it often feels like a physical jolt. Lobster seems to take the idea of optimisation and speed to new levels. Entering and remaining in flow must be even easier. First though, I'll need to put the time into learning enough to be able to do it!
- yesitcan 7mo agoI get taken out of flow every time I submit my prompt to Claude. How’d you work around that?
- kranner 7mo agoAre we just assuming nobody is programming commando anymore?
- mef51 7mo agoYou can try not using Claude
- sixo 7mo agoNot every conversation is about AI. This one isn't.
- animuchan 7mo agoIf the flow is just typing prompt after prompt into AI, I guess just ignore that it's running and keep typing? Or open a new tab and keep typing. Why does Claude even break the typewriter flow thing that's going for you?
- gslepak 7mo agoThanks for mentioning Lobster. This guy seems to have learned many lessons of language simplification and design. Looks like a promising language and I wish it success. Ref: https://aardappel.github.io/lobster/language_reference.html https://aardappel.github.io/lobster/language_reference.html
- imiric 7mo agoThe game currently has a Mixed (65%) rating on Steam. Granted, some negative reviews are shallow, but some mention important issues. Regardless, a Minecraft clone is not exactly groundbreaking in terms of gameplay. This is to say that technical merits are rarely good indicators of a good game. As a gamer, I don't really care about the game engine, and even less about the language it's written in. Good programmers often obsess about these details, but it's easy to miss the forest for the trees, which is what I think happened here. Game design is a separate skill from game development, and not many people excel at both. Still, it's great seeing this here, as the technical achievements are quite remarkable.
- sarchertech 7mo ago65% positive reviews doesn’t tell you much about whether the game is good or not. At most it tells you that the game wasn’t great at communicating what people should expect.
- bingaweek 7mo agoThis is just being intentionally obtuse. Everyone knows that 65% generally means the game doesn't even run on most devices, crashes constantly, or has some other serious flaw. Ridiculous.
- sarchertech 7mo agoExplain how a game that doesn’t run on most devices or crashes constantly is recommended by 65% of reviewers. But also if that is true, that just solidifies my point which is that a 65% doesn’t necessarily have anything to do with game design.
- AmbroseBierce 7mo agoSteam review marked as most helpful states: > I played this game for 3 hours and i can confirm it is not in a playable state, there were several bugs within the first few maps that deleted needed items causing us to reset the entire world. several times. Don't waste your time...
- Paddyz 7mo ago[dead]
- bobajeff 7mo agoKind of looks like like Minecraft if it was built out of Voxatron. (millions of Little destructible cubes) seems like a very very difficult thing to do at that scale. On top of that making a engine and a language. This guy must have interesting things to say.
- HexDecOctBin 7mo agoOne issue with Voxel-based physics destruction games is that the physics happens in continuous space (as opposed to voxel space). This means that the moment you break off a chunk of geometry, it has to be converted into a mesh and simulated like any other mesh-based model will. This makes voxels seem like more complicated Voronoi-noise based fractures. If you want the modelling workflow or the looks of voxels, it's fine. But assuming that voxels will somehow help with the destruction physics seems not to be a valid assumption. Ideally, we would be able to do physics in voxel space itself (sort of like a cellular automata based classical mechanics), but that doesn't seem to be possible.
- Aeolun 7mo agoThis isn’t actually true if you use GPU raytracing, as everyone involved with voxel destruction seems to realize at one point or another. Meshing in a performant way after every destruction event is simply not possible.
- HexDecOctBin 7mo agoSo how would you do destruction physics on voxels without meshing? This is how even Teardown does it, and it uses raymarching.
- deleted 7mo ago[deleted]
- Aardappel 7mo agoHave you tried Teardown? Has incredibly good voxel physics. Definitely possible.
- HexDecOctBin 7mo agoTeardown calculates collision meshes and does physics on those. Not on voxels directly, and definitely on in voxel space.
- peterashford 7mo agoHeh. I thought I remembered the name. I used to use Wouter's E programming language on the Amiga. It was pretty good, as I recall.
- istillcantcode 7mo agoI appreciate when games load fast (this one does). Its one of the signs I use to see if a game is worth my time. Most of the games I play, I am playing the game within 20-30 seconds of opening the game from my desktop. I'm naively assuming that in order for a game to load fast you have to have a good plan of what order to load things in. It feels like an attention to detail thing to me.
- cpill 7mo agoI guess if I'd done all that work on lobster and then bipolar built a ray traced voxel engine on top of that, end game would be to licence the engine. You have something here that the other game engines don't have, and something Minecraft is not likely to have (they are pretty stagnant development wise). This is easily 100 times better than Roblox. If you focus on making the world building tools easy to use and modding/game design you could easily be the next big thing. Don't get too bogged down in game design other than to use it as a proof of concept to help you understand what game designers will need.
- Scramblejams 7mo agoCongrats on your release, Aardappel! Bought a copy to support the dream!
- Aardappel 7mo agoMuch appreciated :)
- BatFastard 7mo agoDoes anyone know if this uses Microvoxels or an Octree? As someone who has built an Octree engine I am curious. I will say it is gorgeous!
- Aardappel 7mo agoBoth! It uses an octree, and at the leaves are bricks of small voxels.
- voidUpdate 7mo agoIt always mildly annoys me when a game says that it is all voxels, but clearly isn't, since the little cubes easily move off the voxel grid. Its just geometry moving around, like normal games, but modelled in little cubes, instead of being fully restricted to voxels. I would really like to see a fully voxel game, where all geometry is "rendered" to voxel space before being rendered to the screen, so that everything is just cubes that don't move, just change colour
- Lichtso 7mo agoJohn Lin used to work on such an engine where all voxels stay axis and grid aligned, even in animations: https://x.com/ProgrammerLin/status/1342786223811698688 https://x.com/ProgrammerLin/status/1342786223811698688 https://voxely.net/blog/ https://voxely.net/blog/ But I think the project was abandoned in 2021.
- e1ghtSpace 7mo agoAre you suggesting the voxel grid is attached to the camera, or that the camera moves through the grid?
- voidUpdate 7mo agoEither could work, but world space voxels would probably be easier to understand than camera space
- xyzzy_plugh 7mo agoLexaloffle's Voxatron is what you're describing: https://www.lexaloffle.com/voxatron.php https://www.lexaloffle.com/voxatron.php IMO the effect is less compelling than you might think.
- voidUpdate 7mo agolooks great to me, if that little gif is anything to go by
- Aardappel 7mo ago
- andy12_ 7mo agoI wasn't prepared to see how good the game looks visually. It's super cool.
- suncore 7mo agoAbout the Lobster language used: The first thing I do when encountering a new language is look at the memory management, since what I want to do with a piece of code is usually build and manipulate data in a safe and efficient manner, so this is central. I am happy to see Lobster seems to be trying to take a new(ish) and pragmatical approach to memory management and that there is a whole document describing it in detail (https://aardappel.github.io/lobster/memory_management.html https://aardappel.github.io/lobster/memory_management.html) which means the language creator agrees that this is important. Also happy to see the language seems to support fast memory management in a multi threaded environment, which is absolutely not self evident in many languages.
- simgt 7mo agoThanks for sharing, it's indeed a great way to quickly see what a language has to offer. From what I understand, the main innovation of Lobster here is that `class Foo` is a boxed type, while `struct Bar` will be inlined. I'm not sure I see how that's an improvement over using either `Foo` or `Box<Foo>` on instantiation. It also does reference counting by default, and tries to optimise it out at compile time by assigning a single owner and borrow. We often see complains that Rust's ownership puts a lot of burden on the programmer, but there is really a point at which it clicks and we stop having to fight the borrow checker almost entirely.
- Aardappel 7mo agoLobster is meant to be a more high level language than Rust, so encoding what you want 99% of the time in the type made sense. It also makes it easier for people to read, knowing that common types like int2 are always by value. That said, it be easy to have annotations to force the other use case, just so far that has not been needed :)
- anentropic 7mo agoAh, the Lobster guy! I have been running across that repo for years and wondered if anything was happening with it - great to see an impressive game project built on it now.
- anonzzzies 7mo agoCool, finally something from Aardappel again (maybe I missed many other things). I like the programming languages since E and I am happy something we can buy comes from it. Well done.
- junon 7mo agoLove Voxile! It's a beautiful little game. Actually didn't known it was still receiving updates.
- laalshaitaan 7mo agoBuilding your own language to build your own engine to build your own game is what most orgs would flag as scope creep. But that's exactly what lets Wouter push things nobody else can lol he controls every constraint all the way down. Genuinely wild stuff.
- deterministic 7mo agoThis is the kind of cool article that makes me visit HN regularly. Instead of the usual BS "AI will kill us all" or "AI wrote Linux in 5 secs!" style articles.