Helion

From DoomWiki.org

Helion
Helion.png
Codebase Original, Linux Doom (reference)
Developer(s) Nick Laurent (hobomaster22), Water
Initial release 0.9.0.0 (2022-10-22, 2 years ago)
Latest release 0.9.7.0 (2025-06-14, 36 days ago)
Development status Active
Written in C#
Target platform Cross-platform
License GPLv3
Source Repository

(Git)

GitHub

Helion is a source code project developed by Nick Laurent (hobomaster22) and Water. Whilst referencing the Linux Doom codebase, most of Helion's code is built from scratch and built for extreme performance.

The goal of Helion is to run the game Doom and its custom WADs with maximum performance, utilizing modern hardware paradigms to achieve this. Because of this, a custom renderer utilizing OpenGL is used instead of the traditional Doom render loop. A subgoal of Helion is to achieve a cleaner codebase by optimizing key aspects of Doom rendering and moving them over to the GPU.

A close analogy would be the Ironwail project, which seeks to achieve similar performance metrics, but for Quake.

Main features[edit]

History[edit]

Helion follows an unusual design approach: rather than basing itself on the Linux Doom codebase, much of it has been written from scratch, although Linux Doom has been used as a reference. Being a wholly unique project from a source perspective, Helion's from-scratch philosophy means every aspect of Doom's compatibility has to be perfect. Because of the tremendous effort required to achieve this, Helion has been in development for a lengthy amount of time.

Initially in development since 2016 by Water written in C, development was rebooted for C# using .NET Core in 2018 with hobomaster22 joining in. Some very specific code sections were basically translated line by line such as enemy action functions to match the original game. After four years of development, version 0.9.0.0 was released on October 22, 2022. Development was discussed in a Doomworld thread titled: "Helion - C#"[1].

Subsequent versions focused on further optimizing performance: as Helion pushes as much of the render loop on the GPU, map geometry and light changes were optimized further to enhance this. Helion also uses the blockmap for rendering sprites and dynamic sectors, and utilizes static rendering with a state management system to reconcile dynamic map changes in Doom. In contrast to the typical BSP tree rendering that requires significant CPU processing, Helion is able to manage dynamic changes and optimally utilize the GPU resulting in dramatic performance increases. By doing this, maps that are traditionally performance-heavy on CPU are now generating several hundreds of frames on contemporary hardware. Other inclusions feature improved Boom compatibility, an IWAD selector, and many more.

Performance[edit]

In order to illustrate the performance deficits and to test out edge cases, Helion has been extensively tested against several maps known to push the boundaries of Doom's rendering. These include:

Typical system[edit]

On a run of the mill machine, the performance is as follows, measured in frames-per-second (FPS):

Helion1.jpg

Low end system[edit]

On a low end laptop without Vulkan support, the performance is as follows:

Helion2.jpg

List of console commands[edit]

The following is a list of console commands available in Helion:

AllowMonsterTelefrags
audio.device
audio.devices
audio.setdevice
autoaim
bind
bindadd
centerView
chasecam
commands
demo.advance
demo.advanceticks
demo.stop
exit
inputcommands
inputkeys
inventory.add
inventory.clear
inventory.remove
inventory.setamount
listdisplays
load
map
mapName
mark.add
mark.clear
mark.remove
mouselook
nocrouch
nofreelook
nojump
restart
screenshot
search
setpos
soundVolume
startGame
unbind

Trivia[edit]

  • The design is from scratch but it does reference Linux Doom 1.10

External links[edit]

References[edit]

  1. Doomworld forums thread
Source code genealogy
Based on Name Base for
None Helion None