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

by klaussilveiraon 6/10/2025, 10:56 PMwith 67 comments

by bob1029on 6/12/2025, 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 energywuton 6/12/2025, 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 ngrillyon 6/12/2025, 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 Ciericon 6/12/2025, 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 _0ffhon 6/12/2025, 5:09 PM

It's a Doom engine, and they missed the opportunity to call it "Hellion"??

by dimitropouloson 6/13/2025, 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 yodonon 6/12/2025, 2:39 PM

Impressive C# performance!

by bee_rideron 6/12/2025, 3:05 PM

Finally I can play Doom on my 2khz monitor.

by mawadevon 6/12/2025, 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 reverseblade2on 6/13/2025, 4:57 AM

I have seen some use case for MemoryStream, why not use RecyclableMemorysStream instead?

by thomasqbradyon 6/12/2025, 3:24 PM

How does licensing work, here... could you use this to develop an indie game and sell it?

by patrick4urcloudon 6/12/2025, 4:15 PM

i will give a try.

by neuroelectronon 6/12/2025, 6:21 PM

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