28 comments

  • turtledragonfly26 days ago
    This is super cool, and I like the no-nonsense presentation.<p>I&#x27;m curious to know where he takes the gameplay. He mentions it being digging-focused, and also mentions the digging&#x2F;terrain deformation aspects in other games like No Man&#x27;s Sky are relatively low-fidelity. I wonder what a &quot;high-fidelity digging game&quot; looks like (:<p>Aside, if I may self-plug: I wrote a small series on SDFs, for those who might be interested[1]. I&#x27;m also using them in my game engine (though it&#x27;s 2D, for me).<p>[1]<p>* <a href="https:&#x2F;&#x2F;festina-lente-productions.com&#x2F;articles&#x2F;sdfs-1&#x2F;" rel="nofollow">https:&#x2F;&#x2F;festina-lente-productions.com&#x2F;articles&#x2F;sdfs-1&#x2F;</a><p>* <a href="https:&#x2F;&#x2F;festina-lente-productions.com&#x2F;articles&#x2F;sdfs-2&#x2F;" rel="nofollow">https:&#x2F;&#x2F;festina-lente-productions.com&#x2F;articles&#x2F;sdfs-2&#x2F;</a><p>* <a href="https:&#x2F;&#x2F;festina-lente-productions.com&#x2F;articles&#x2F;sdfs-3&#x2F;" rel="nofollow">https:&#x2F;&#x2F;festina-lente-productions.com&#x2F;articles&#x2F;sdfs-3&#x2F;</a>
    • nnevatie25 days ago
      Seems you&#x27;re not familiar with how game projects with a custom engine typically go. Let me elaborate on this - the steps involved are:<p>1. Create a custom game engine.
      • turtledragonfly25 days ago
        Why must you attack me personally like this?! ⠀(:
        • nnevatie25 days ago
          Heh, I&#x27;m as guilty of this myself. Here&#x27;s one example of mine: <a href="https:&#x2F;&#x2F;github.com&#x2F;nnevatie&#x2F;paybacktime" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;nnevatie&#x2F;paybacktime</a>
      • AlienRobot25 days ago
        &quot;Is rust good for game development? Rust is good for everything. There are currently... 5 games written in rust. And 50 game engines.&quot;[0]<p>[0] <a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=TGfQu0bQTKc" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=TGfQu0bQTKc</a>
      • account4225 days ago
        So similar to the average game project with an off the shelf engine, just with an additional fun step.
      • ux26647825 days ago
        That&#x27;s how the overwhelming majority of all game projects go, custom engine or not.
    • plagiarist26 days ago
      I am interested in the small series and also the game engine (if not covered in the series). I will read these, thank you for sharing.
  • mbullington26 days ago
    Go Mike! Been seeing his progress for a while on Bluesky, I knew exactly (and who) what this was when I saw it on HN.<p>I was rendering-curious when we overlapped together at Figma. Mike was super patient and giving with his time, answering all my dumb questions and aiding with my Maker Week projects. Excited to see him take on something so ambitious next.
  • rjh2930 days ago
    Really impressive work. He covers it at the end, but being able to create tunnels into terrain, walk through them and then make the terrain disappear. Or make holes in the ground and move them around to suck items in. Or dynamically erase or add to any terrain in real time. A lot of interesting gameplay opportunities here and surprisingly performant!
    • program_whiz25 days ago
      I really respect his work on the engine, the math, and the engineering is excellent, but I&#x27;m not sure it makes for an interesting game above and beyond what we already have.<p>Adding additional smoothness to existing voxel engines I&#x27;m not sure would have much effect, unless you have something specific like moving a ball on a smooth surface (but the SDF I&#x27;m seeing here wouldn&#x27;t support that either).<p>As for &quot;create a hole, then close it behind you&quot;, this is about as game-changing as open&#x2F;closing doors (or tunnels with doors). I&#x27;m open to suggestion, but honestly this is amazing tech, I just don&#x27;t think it will create very fun games.<p>Kind of feel the same about the demos I see of spherical or non-euclidean geometry games. Its very interesting, and impressive, but seems like it is an engine in search of a game.
      • hahn-kev25 days ago
        Yeah that&#x27;s what I felt watch that video.
      • mikkupikku25 days ago
        HyperRogue pulled it off.
    • program_whiz25 days ago
      Maybe one other thing to consider -- I think its usually best to have a killer game idea that seems fun, then design around it (and select the proper engine), rather than simply &quot;I want to build an engine with some capabilities, then I&#x27;ll figure out what games to make later.&quot;<p>Have seen this with a lot of software &quot;frameworks&quot; (web, game, graphics, etc.). Nothing wrong with writing an amazing tech demo just for the hell of it, but then when it comes time to do &quot;real world&quot; tasks, the frameworks are often in search of a fitting problem.
  • msephton28 days ago
    Great video. A new game engine powered by SDFs is the sort of thing I want to find out about. Not the next game in a long running franchise that looks the same as all the others that preceded it. One for the from-scratch game dev nerds like myself!
    • rendaw25 days ago
      Tangentially related, but here&#x27;s another game based on SDFs and geometry manipulation, for 4D movement: <a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=yeCqfqE4ylk" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=yeCqfqE4ylk</a><p>Stylistically there are similarities...
  • yunruse30 days ago
    The physics engine mentioned towards the end, Jolt Physics [0] is used in the frankly blockbuster games Horizon: Forbidden West and Death Stranding 2 and yet opens its description with<p>&gt; Why create yet another physics engine? Firstly, it has been a personal learning project.<p>which is really rather wonderful and inspiring to see.<p>[0] <a href="https:&#x2F;&#x2F;github.com&#x2F;jrouwe&#x2F;JoltPhysics" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;jrouwe&#x2F;JoltPhysics</a>
    • armada65126 days ago
      Its use in those games is no mere coincidence though, the creator of that physics engine, Jorrit Rouwé, has worked at Guerilla Games since the Killzone days.<p><a href="https:&#x2F;&#x2F;jrouwe.nl&#x2F;games.php" rel="nofollow">https:&#x2F;&#x2F;jrouwe.nl&#x2F;games.php</a>
    • V__26 days ago
      It has also become the default physics engine in Godot.
    • thom26 days ago
      Also increasingly well integrated into Godot.
  • num3ric26 days ago
    I wonder if ReLU fields could help reduce cache grid resolution while improving reconstruction precision? See <a href="https:&#x2F;&#x2F;arxiv.org&#x2F;abs&#x2F;2205.10824" rel="nofollow">https:&#x2F;&#x2F;arxiv.org&#x2F;abs&#x2F;2205.10824</a>
  • tamat26 days ago
    the problem with SDF engines is that you have to reinvent everything, as current pipelines rely on triangles.<p>That means:<p>- Software to model using SDF (like Womp)<p>- Technique to animate skeletons using SDFs<p>- Tool to procedural texture surfaces using SDFs<p>At least he solved the physics part, which is also complex.<p>And also, his way of carving is by instantiating new elements, which works for small carves, but if you plan to have lots of tunels, then the number of instances is going to skyrocket.
    • andybak26 days ago
      Although a decent chunk of modern tooling is there to handle the limitations of triangles. And modelling is often using higher-level abstractions that are only turned into triangles at the end of the process.
      • cyber_kinetist25 days ago
        That&#x27;s true if you&#x27;re using a CAD-like tool, but that&#x27;s typically not used for art (more for engineering &#x2F; mechanical design)<p>Game &#x2F; VFX artists heavily use mesh-based tools such as Maya or Blender.
        • andybak21 days ago
          Both have many tools that aren&#x27;t raw triangle editing
  • cubefox26 days ago
    Almost every 3D game uses textured polygons almost everywhere (except sometimes for fog or clouds), so this SDF engine is nice to see.<p>However, he doesn&#x27;t mention animations, especially skeletal animations. Those tend to work poorly or not at all without polygons. PS4 Dreams, another SDF engine, also had strong limitations with regards to animation. I hope he can figure something out, though perhaps his game project doesn&#x27;t need animation anyway.
    • 01HNNWZ0MV43FF26 days ago
      His SDF probably puts out a depth buffer, so with some effort (shadows might be hard?) you can just mix it with traditional polygons. The same way raytracing and polygons mix in AAA games.<p>He&#x27;s using the SDFs to fill a space sort of like Unreal&#x27;s Nanite virtual geometry. Nanite also doesn&#x27;t support general animation. They only recently added support for foliage. So you&#x27;d use SDF &#x2F; Nanite for your &quot;infinite detail&quot; &#x2F; kit-bashing individual pebbles all the way to the horizon, and then draw polygon characters and props on top of that.<p>In fact I was surprised to see that Nanite flipped from triangle supremacy to using voxels in their new foliage tech. So maybe the two technologies will converge. The guy who did the initial research for Nanite (his talk also cites Dreams ofc) said that voxels weren&#x27;t practical. But I guess they hit the limits of what they can do with pixel-sized triangles.
      • cubefox26 days ago
        I think they do now support skeletal meshes with virtual geometry: <a href="https:&#x2F;&#x2F;dev.epicgames.com&#x2F;documentation&#x2F;en-us&#x2F;unreal-engine&#x2F;nanite-virtualized-geometry-in-unreal-engine#nanite-skeletal-mesh" rel="nofollow">https:&#x2F;&#x2F;dev.epicgames.com&#x2F;documentation&#x2F;en-us&#x2F;unreal-engine&#x2F;...</a><p>Though it says &quot;experimental&quot;. Unclear what that means in practice.<p>This also mentions &quot;skinning&quot;: <a href="https:&#x2F;&#x2F;dev.epicgames.com&#x2F;documentation&#x2F;en-us&#x2F;unreal-engine&#x2F;nanite-foliage" rel="nofollow">https:&#x2F;&#x2F;dev.epicgames.com&#x2F;documentation&#x2F;en-us&#x2F;unreal-engine&#x2F;...</a> I believe thats just another term for skeletal meshes &#x2F; &quot;bones&quot;.
    • Boxxed26 days ago
      I&#x27;m not super familiar with this area so I don&#x27;t follow... Why is animation any more difficult? I would think you could attach the basic 3D shapes to a skeleton the same way you would with polygons.
      • dahart26 days ago
        There are lots of reasons you don’t see a lot of SDF skeletal rigging &amp; animation in games. It’s harder because the distance evaluations get much more expensive when you attach a hierarchy of warps and transforms, and there are typically a lot of distance evaluations when doing ray-marching. This project reduces the cost by using a voxel cache, but animated stuff thwarts the caching, so you have to limit the amount of animation. Another reason it’s more difficult to rig &amp; animate SDFs is because you only get a limited set of shapes that have analytic distance functions, or you have primitives and blending and warping that break Lipschitz conditions in your distance field, which is a fancy way of saying it’s easy to break the SDF and there are only limited and expensive ways to fix it. SDFs are much better at representing procedural content than the kind of mesh modeling involved in character animation and rendering.
        • MITSardine26 days ago
          One possibility, a little backwards maybe, is to produce a discrete SDF from e.g. a mesh, by inserting it in an octree. The caching becomes the SDF itself, basically. This would let rendering be done via the SDF, but other logic could use the mesh (or other spatial data structure).<p>Or could the engine treat animated objects as traditional meshed objects (both rendering and interactions)? The author says all physics is done with meshes, so such objects could still interact with the game world seemingly easily. I imagine this would be limited to characters and such. I think they would look terrible using interpolation on a fixed grid anyways as a rotation would move the geometry around slightly, making these objects appear &quot;blurry&quot; in motion.
          • Jarmsy26 days ago
            Sampling an implicit function on a grid shifts you to the world of voxel processing, which has its own strengths and weaknesses. Further processing is lossy (like with raster image processing), storage requirements go up, recovering sharp edges is harder...
            • MITSardine26 days ago
              But isn&#x27;t this what the author is doing already? That&#x27;s what I got from the video. SDF is sampled on a sparse grid (only cells that cross the level set 0) and then values are sampled by interpolating on the grid rather than full reevaluation.
  • deckar0126 days ago
    Dreams on PS4 had an SDF modeler, but I’m not sure if the runtime was SDF. Now that I think about it, the rendering engine had a Gaussian splat look to it years before that paper.
    • turtledragonfly26 days ago
      The Dreams team made a nice talk at SIGGRAPH 2015, if you want to check it out:<p>* Slides (good notes): <a href="https:&#x2F;&#x2F;advances.realtimerendering.com&#x2F;s2015&#x2F;AlexEvans_SIGGRAPH-2015-sml.pdf" rel="nofollow">https:&#x2F;&#x2F;advances.realtimerendering.com&#x2F;s2015&#x2F;AlexEvans_SIGGR...</a><p>* video: <a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=u9KNtnCZDMI" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=u9KNtnCZDMI</a>
    • koolala26 days ago
      They discuss Dreams in the video and even explain Brick rendering.
  • jacobgorm26 days ago
    GameGlobe from Haptico and Square Enix, the engine of which also powered Project Spark from Microsoft, also used an SDF engine. Former colleagues of mine built the tech in Copenhagen and I remember getting a super impressive demo back then. This was the first time I heard of SDFs.
  • milgra26 days ago
    I had the same idea but with voxels. The idea works fine, more work on photorealism needed : <a href="https:&#x2F;&#x2F;youtu.be&#x2F;LBzuXj21_bY?t=128" rel="nofollow">https:&#x2F;&#x2F;youtu.be&#x2F;LBzuXj21_bY?t=128</a>
  • d--b26 days ago
    Reminded me of Red Faction, a FPS where you could destroy the environment.<p>Kind of like Quake in a Lemmings world.<p>This is quite more polished to say the least.
  • Glyptodon26 days ago
    Using layers with settings about which SDFs interact with which layers for operations seems interesting. Like put trees in a layer and then have an axe that can negatively deform the trees but not the ground layer or something. Or a predator layer that can absorb things in the prey layer. Haven&#x27;t really thought through.
  • Traubenfuchs26 days ago
    You can&#x27;t talk about terrain modification without mentioning &quot;From Dust&quot;, which did it at a grand scale... 15 (!) years ago.<p>It allowed you to shape terrain with sand, water and lava. So terrain modification PLUS fluid simulation!<p><a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZYUU3dv7WC4" rel="nofollow">https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=ZYUU3dv7WC4</a><p><a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;From_Dust" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;From_Dust</a>
  • rcarmo26 days ago
    I watched this over the weekend and loved the approach. I’ve played with SDF for 3D modeling (even though the current libraries generate meshes for slicing using marching cubes, which is slow as heck and can lead to imprecision on small features), and wish I had more time for playing around with it.
  • ludicrousdispla26 days ago
    The interaction with the terrain reminds me of Astroneer, although I don&#x27;t know if that game uses SDFs.
  • DetroitThrow26 days ago
    Such impressive demos and great explanations in the video. Mike, if you&#x27;re reading this, keep making videos!
  • eviks26 days ago
    Excellent technical presentation! Though the style itself is a bit too &quot;clay-like&quot;, like I wouldn&#x27;t expect a cube melding with the terrain sand to be a smooth glued connection. Is that some &quot;inherent&quot; SDF thing or just a style of the demo?
    • tomashubelbauer26 days ago
      I think it is an artifact of the optimizations he uses and while it&#x27;s artistically limiting, I think a right game with the right visual language could make this work to its advantage in terms of uniqueness&#x2F;distinctiveness. It&#x27;s a one trick pony if not avoidable though.
    • nkrisc26 days ago
      Basically it&#x27;s the result of a smoothing function that blends the sampled SDF value of the two nearest bodies. You can simply pick the minimum SDF value and get no blending at all.
      • jakkos25 days ago
        &gt; You can simply pick the minimum SDF value and get no blending at all.<p>While this true for traditional SDF rendering (e.g. raymarching), the method of &quot;interpolating cached distances&quot; used here means that you will always get blending between objects.
        • nkrisc25 days ago
          Oh right, of course. I wasn’t thinking about the specific implementation in the video. Thanks.
    • interpol_p26 days ago
      I believe you can do regular hard edged intersections. You can see in his operator list some are listed as “smoothSubtract” and some are just “subtract”<p>It’s just easy to do the melding thing with SDFs so a lot of people do it
      • rcxdude26 days ago
        From his description of the approach I suspect its also to smooth over sharp edges that the grid optimization doesn&#x27;t like so much.
  • cepacked26 days ago
    I use SDFs on my render engine to render text. It allows me to debug values inside shaders. (I can print value of an uniform, texture value etc.)<p>(It&#x27;s a combination of line segments for each letter and digit)
    • kaoD26 days ago
      Are you aware of Valve&#x27;s paper[0] for glyph rendering via SDFs? You can get amazing results from a low res glyph atlas.<p>[0] <a href="https:&#x2F;&#x2F;steamcdn-a.akamaihd.net&#x2F;apps&#x2F;valve&#x2F;2007&#x2F;SIGGRAPH2007_AlphaTestedMagnification.pdf" rel="nofollow">https:&#x2F;&#x2F;steamcdn-a.akamaihd.net&#x2F;apps&#x2F;valve&#x2F;2007&#x2F;SIGGRAPH2007...</a>
      • mikkupikku25 days ago
        From what I understand, that paper was extremely influential and the technique has been widely adopted.
        • nineteen99925 days ago
          UE4&#x2F;5 implement fonts this way.
  • Archit3ch25 days ago
    Is there an easy way to go from Blender model to SDF?
    • GuB-4225 days ago
      The way he approaches the problem, which essentially uses voxels, it shouldn&#x27;t be too hard: for each voxel, compute the distance to the closest triangle and you have your SDF.<p>The thing is, you have a SDF and now what? What about textures and materials, animation, optimization, integration within the engine,... None of it seem impossible, but I won&#x27;t call it easy.
  • KolmogorovComp25 days ago
    Really nice video. I wonder how these &quot;sandbox&quot; worlds with transformations can be done will be efficiently stored.
  • EonOrange25 days ago
    Will the project be open source?
  • matt321026 days ago
    Dang! Very nice!
  • doctorpangloss26 days ago
    how does this compare to MudBun?
    • andybak26 days ago
      Mudbun renders using raymarching - the video explains why he has avoided doing this.
  • Keyframe26 days ago
    really cool! CSG: The Game!
  • darubedarob26 days ago
    [dead]
  • andrewstuart26 days ago
    There’s game developers who develop games.<p>And there’s game developers who develop game engines thinking they are developing games.
    • 21asdffdsa1226 days ago
      Nothing wrong with that - Engine developers often have &quot;defining&quot; titles - aka tech demos they work on to push the field
      • mikkupikku25 days ago
        Townscaper is a nice one like this; it has very few features or gameplay, just a sandbox tech demo for a very cool take on model synthesis &#x2F; &quot;wave function collapse&quot; on an irregular grid. The game is mostly carried by the novelty of this mechanic (and also the pleasant art.)
  • vivzkestrel26 days ago
    stupid question to anyone reading this: not a gamedev, not even by a long shot but i had to ask<p>- with the advent of all the AI tools, is it actually possible to vibe code a 3D FPS shooter from scratch like if you wrote a 2000 page prompt, can it actually be done?
    • ehnto26 days ago
      A big challenge of game dev is the asynchronous nature of all the requirements, and that the game will develop its direction continuously throughout dev. That is to say you don&#x27;t know what assets etc you need until you&#x27;ve developed the part of the game that generates that requirement. I find it hard to imagine even a 2000 page pre-planning could capture that process.<p>You could try planning ahead and restricting assets to an asset library, that could fix some of that problem. But having used coding agents for complex software work, and games being one of the most complex software tasks in the industry, I just don&#x27;t see it happening quite that easily.<p>I also think the outcome would be shit, pure and simple. The development of a game is usually the stylistic input of dozens to thousands of humans over the course of years. They are not trivial pursuits. There&#x27;s a lot of variance in there, but generally speaking I expect this to be one of the final frontiers for AI development. There&#x27;s not heaps of training data since game code is usually proprietary, which doesn&#x27;t help.
      • vivzkestrel26 days ago
        out of curiosity, i want to experiment creating a third person shooter from scratch with vibe coding (yes third person, i wrote FPS above by mistake). think of a proper military game with actual uniforms, movements like walk, crouch, jump, take cover etc. and being able to fire bullets, ballistics, grenades, explosions etc. what do you think is the process to vibe code something like this. obviously i ll need to give it models or assets for characters, map locations etc. how does this sorta thing work?
        • bschwindHN26 days ago
          I would recommend _not_ vibe coding it if it&#x27;s a game you actually want to see become real, and instead pick up Godot or Unreal or Unity.<p>I&#x27;m sure an LLM could output something or other that resembles a vague concept of a game but you&#x27;re not going to prompt your way into something that&#x27;s actually fun for a human to play.
        • ehnto23 days ago
          I think the best approach right now would still be to pick a game engine, and start learning it, in this case with heavy assistance from LLMs. Unity will have the most training data in it for this approach. There is actually a lot of game development that happens outside of code, and in the editor. So having coding done for you can only help so much anyway.
        • socalgal226 days ago
          I don&#x27;t think you can describe all of that in an HN comment. There are lots of videos of people vibe coding games though.
    • nmfisher26 days ago
      Probably, yes. But it&#x27;s not 1997 any more, you can &quot;code&quot; a vanilla FPS in Unity in 15 minutes too. Games are more about artwork and design, which agents aren&#x27;t great at (yet).
    • protocolture26 days ago
      You can pretty much drag and drop a working FPS in unity.<p>But I have half vibed an FPS in Pygame so its 100% viable (Mine is First and Person, and has motion, but its more of a flight simulator. I am sure the rest of the features would be piss easy)
    • meheleventyone26 days ago
      Depends on what you mean really. In the context of making a game people would actually want to play, no.
    • MattRix26 days ago
      I mean you can download a free sample project for Unity or Unreal and have a 3D FPS Shooter even without AI. If you want to make one from scratch using AI, you’ll still need to provide some kind of art…<p>With that said, yeah Claude Code CAN build one, but for action games a big part of them comes down to “game feel”, something that can’t be captured in a screenshot. You really need to have taste and the ability to describe what isn’t working and why.
    • lifeformed25 days ago
      Not a good one.
    • ttawehed26 days ago
      Elon Musk is working on this(XAi)