Helion
From DoomWiki.org
Helion | |
![]() | |
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.
Contents
Main features[edit]
- Mostly vanilla compatible sans demos
- Boom-compatible, including MBF
- MBF21 compatibility
- DEHEXTRA & DSDHacked support
- Basic DECORATE support
- MAPINFO and UMAPINFO support
- Limited ZDoom support (Line specials)
- OpenGL 3.3-based renderer, supporting modern resolutions
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:
- Sunder:
- Dance on the Water:
- Frozen Time
- Eviternity:
- Micro Slaughter Community Project:
- Occula:
- Sunlust:
- Saturnine Chapel
- PUSS X: The Summer of Slaughter:
- MAP32: Low Tide by BluePineapple72
Typical system[edit]
On a run of the mill machine, the performance is as follows, measured in frames-per-second (FPS):
Low end system[edit]
On a low end laptop without Vulkan support, the performance is as follows:
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]
- Helion repository hosted on GitHub
References[edit]
Source code genealogy | ||
---|---|---|
Based on | Name | Base for |
None | Helion | None |