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

github.com

198 points by klaussilveira 6 days ago


bob1029 - 5 days ago

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.

energywut - 5 days ago

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.

ngrilly - 5 days ago

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#.

Cieric - 5 days ago

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.

_0ffh - 5 days ago

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

dimitropoulos - 4 days ago

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.

yodon - 5 days ago

Impressive C# performance!

bee_rider - 5 days ago

Finally I can play Doom on my 2khz monitor.

mawadev - 5 days ago

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

reverseblade2 - 4 days ago

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

thomasqbrady - 5 days ago

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

patrick4urcloud - 5 days ago

i will give a try.

neuroelectron - 5 days ago

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