Helheim Engine
The tool that made Chrysalis possible
Helheim Engine
Helheim Engine is a C++ custom engine based on OpenGL that has been used by Rolling Barrel Studio to develop the game Chrysalis. It has been developed during the 2023-2024 Master in Advanced Programming for AAA Video Games.
Our
Features
Animations and state machines
Helheim Engine provides robust support for GLTF animated models , ensuring compatibility with one of the most widely-used 3D file formats for modern game development. This means developers can import models complete with complex animations, and skeletal structures seamlessly. To simplify animation control, the engine incorporates a graphical state machine system. This tool enables developers to visually manage animation states and transitions, allowing for intricate setups like idle, walking, running, and combat states. The systemalso supports blending between animations, ensuring smooth transitions that enhance gameplay realism.VFX
The Helheim Engine’s VFX toolkit is designed to empower creators with versatile tools for enhancing visual fidelity. The engine includes particle emitters, capable of producing detailed effects like smoke, fire, rain, and magical bursts with customizable properties such as lifetime, velocity, and particle behavior. Developers can also utilize trail renderers to add dynamic trails to moving objects (e.g., weapon swings, projectiles) for added impact. Line components provide the ability to draw lines or laser effects in the game world, useful for rendering beams or special effect paths. Additionally, sprite sheet animations enable developers to create 2D animated effects from sprite atlases, ideal for explosion effects, spell animations, or other visual elements that rely on quick frame-by-frame transitions.Sound (FMOD)
The Helheim Engine’s integration with FMOD, a powerful audio middleware solution, enhances the development experience by allowing audio engineers and developers to implement and test audio changes directly during live gameplay. The 3D audio capabilities of Helheim, paired with FMOD, enable highly immersive soundscapes where sound sources can be spatially positioned in the game world. This provides players with a sense of directionality and distance, enriching their auditory experience and making game environments feel more lifelike.Scripting (C++)
For gameplay programmers, Helheim’s scripting system is rooted in C++, a language known for its performance and extensive control over low-level operations. The engine offers a robust API that supports the creation of complex gameplay mechanics, AI behaviors, physics interactions, and custom game logic. The combination of C++ scripting and Helheim’s modular design ensures developers have a powerful toolkit at their disposal for building everything from small indie projects to large-scale games with intricate systems.Physics
Helheim Engine integrates physics simulation using the Bullet Physics Library, an open-source C++ library widely used for efficiently managing interactions between GameObjects. We use it as the foundation for handling collision computation between our lightweight Box Colliders in a precise and optimized way, with incremental AABB and OBB checks , allowing immersive interactions throughout the whole game without losing performance. The use of the library also eases the addition of possible physics features to the engine, such as ragdolls, kinematics, rigidbody, gravity, bouncing, etc.UI
Helheim Engine has a custom made UI system, allowing the use of buttons, sliders, images, text and video, for both Screen and World Space. Each of these components has an event system attached to detect and react to events such as hover, click, press and selection.Navmesh
AI / enemies
Rendering
-
Geometry Batching
Enhances rendering performance by reducing the overhead of making a draw call for each mesh, packing all scene geometry together in a large VBO. It does so allowing for smoother gameplay in scenes with many objects.
-
Deferred shading
Can enhance performance and allows the easier implementation of some techniques like decals, especially for scenes with multiple light sources,It divides the rendering in two stages. The first one, the geometry pass , using all the scene geometry outputs the information about each pixel position, depth, normals, emisives, material base color and metal rough is rendered into a texture for each, often referred to as the G-buffer . Then, in the second stage, the lighting pass , the lighting calculations are applied based on the data stored in the G-buffer. This separation allows the engine to calculate lighting only for the geometry not occluded by other geometry , significantly reducing the computational load, especially when many lights are present at the cost of having to work with more texture memory.
-
GPU Driven Renderer
Enhances the performance a lot by giving the GPU the ability to decide its own work therefore reducing the latencies of the synchronization with the CPU. It also frees the CPU from a lot of work, for example the geometry skin culling and the animation skinning which are completely done on the GPU.
-
IBL
Provides realistic ambient lighting and reflections by using environment maps, adding depth and realism to scenes.
-
Shadows
Compute shadow maps to create realistic and dynamic shadows to enhance scene depth and atmosphere.
Post-processing
-
Bloom
Adds a glow to bright areas, simulating light spill from an emitting source.
-
Volumetric Lights
Uses ray-marching to calculate the light added and removed from the path geometry-camera. This creates light beams and god rays for atmospheric scenes.
-
Height Fog
Introduces height-based fog for more immersive environments.
-
Screen Space Ambient Occlusion
Reduces the ambient light impact on occluded zones of the scene to enhance depth and realism.
-
Decals
The engine supports decals for adding dynamic details such as bullet holes, cracks, or splatter on surfaces. This feature allows developers to enhance environmental storytelling without altering base textures or meshes.
-
Filmic Tone Mapping
Maps the HDR lighting calculations to LDR.
Libraries Used
-
Bullet
DebugDraw
Detour
DetourCrowd
DetourTileCache
DirectXTex
Ffmpeg
FMOD
Freetype
GLEW-2.1.0
GLFont
ImGui-1.90-docking
imgui-node-editor-0.9.3
ImGuiFileDialog-0.6.7
ImGuizmo-1.83
MathGeoLib-v1.5
MikkTSpace
Optick
Physfs-3.2.0
RapidJSON-1.1.0
Recast
SDL-2.0.16
Tinygltf-2.8.19