from Hacker News

Helion: A modern fast paced Doom FPS engine in C#

by klaussilveira on 6/10/25, 10:56 PM with 67 comments

  • by bob1029 on 6/12/25, 4:00 PM

    I am curious if the author considered use of the built-in numerics library over hand-rolling types like Vector4F.

    All of the methods defined here:

    https://github.com/Helion-Engine/Helion/blob/20300d89ee4091c...

    Are available in the kitchen sink:

    https://learn.microsoft.com/en-us/dotnet/api/system.numerics...

    Same idea applies to methods like GetProjection, which could be replaced with methods like:

    https://learn.microsoft.com/en-us/dotnet/api/system.numerics...

    Advantages of using this library are that it is uses intrinsics (SIMD) to accelerate operations. There is a lot of Microsoft money & time that has been invested into these code piles.

  • by energywut on 6/12/25, 3:41 PM

    I wonder if it can play through MyHouse.wad. Which, if you haven't seen before, is an incredible art piece.

    https://www.youtube.com/watch?v=5wAo54DHDY0

    If you've read House of Leaves, do yourself a favor and check it out.

  • by ngrilly on 6/12/25, 5:57 PM

    Finally, a good example of a modern C# code base that is open source, and that doesn't look like the equivalent of J2EE in C#.
  • by Cieric on 6/12/25, 2:41 PM

    This looks interesting and I'm going to take a look later. Just a minor nitpick up front though, I think the performance graph should be a bar graph instead of a line graph. Mainly since the in-between states don't have much meaning as you can't be half way between 2 different gpus.
  • by _0ffh on 6/12/25, 5:09 PM

    It's a Doom engine, and they missed the opportunity to call it "Hellion"??
  • by dimitropoulos on 6/13/25, 12:16 AM

    the Doom in TypeScript types project wouldn't have been possible without Nick and Helion - I owe Nick a huge thanks! He helped with some of the more obscure parts of the engine and also helped make a super small WAD that is what the game eventually ran in.

    Legend.

  • by yodon on 6/12/25, 2:39 PM

    Impressive C# performance!
  • by bee_rider on 6/12/25, 3:05 PM

    Finally I can play Doom on my 2khz monitor.
  • by mawadev on 6/12/25, 6:00 PM

    The Benchmarks look a bit sketchy... is the frame uncapped for all the other engines and has vsync been disabled? It's a very odd graph to look at, but great performance regardless
  • by reverseblade2 on 6/13/25, 4:57 AM

    I have seen some use case for MemoryStream, why not use RecyclableMemorysStream instead?
  • by thomasqbrady on 6/12/25, 3:24 PM

    How does licensing work, here... could you use this to develop an indie game and sell it?
  • by patrick4urcloud on 6/12/25, 4:15 PM

    i will give a try.
  • by neuroelectron on 6/12/25, 6:21 PM

    FPSes aught to update the screen every millisecond. Why isn't this more common?