HPL is the name given to the in-house, cross-platform 3D game engine that empowers the games released by Frictional Games. It is written in C++, with two versions released so far with a third one announced for use in Frictional's next project, SOMA
In general terms, a game engine is the software portion of a game that enables and manages several aspects of a video game, in order to run on a computer or a dedicated game console, such as:
- Graphics: light and shadow management, visual effects such as SSAO and radial blur, camera perspective, texture rendering and interaction with graphic APIs such as OpenGL in order to accelerate calculations using available hardware.
- Scripting on scenario objects and events.
- Enemy AI management.
- Sound management, generation, panning, post-processing, mixing and other tasks.
- Memory allocation and management for the duration of the execution of the game.
- Processing of player's input from mouse and keyboard so these reflect in actions inside the game.
And other necessary tasks during game's execution.
In older game generations (circa 1980's), games were usually written as a whole contained program, and reutilization of parts of the code from one game into another was rarely seen (one case being the NES game Kid Icarus using Metroid's engine, although this is more of an exception). During the 1990's decade and later, a trend began with companies like iD Software and their game Doom (ran with their idTech engine) to create a game and reuse its underlying framework in others games with minor tweaks and enhancements, giving birth to the modern concept of game engines.
Building a game engine from scratch can take considerable amounts of time and resources, to the point that several companies have chosen to license one for their games from another company, thus it can be considered that Frictional Games making their own engine as quite a remarkable feat, especially when taking into account that this is an independent company, with no support from powerhouses like Electronic Arts or Ubisoft for example.
Industry Standards Support Edit
HPL supports the following cross-platform libraries:
- OpenGL, for graphics rendering and display.
- OpenAL, for audio rendering and playback.
- Newton Game Dynamics, for realistic physics simulation and interaction.
The first version was created in December 1994 as a 2D game engine for a college thesis, to run a game called Energetic in 2005. It was eventually overhauled to accommodate 3D graphics and the first demonstration of its capabilities was the Penumbra Tech Demo. This engine was used in the games:
- Penumbra: Overture.
- Penumbra: Black Plague.
- Penumbra: Requiem.
In 2010, Penumbra: Overture was included in the Humble Indie Bundle, an initiative to sell bundle games and raise funds for charity. Once it reached the $1 million milestone, the source code from Overture as well as some modding tools were released under the GNU General Public License.
The second version of the engine received several technical upgrades. While the first one used a portal system to do occlusion culling (a process which determines what objects should be culled, and which should not), HPL 2 uses a dynamic culling system technique called Coherent Hierarchical Culling. Other enhancements included are support for SSAO and shadow maps instead of shadow stencils, allowing for more realistic environmental light and shadows, rising the minimal hardware requirements to run when compared to previously released HPL games.
This version of the engine was used in the games:
The third version of the HPL engine includes features such as global sunlight along with shadows, allowing fully lit outdoor scenes, a feature not implemented in previous versions, and in-engine terrain generation and dynamic terrain LOD. HPL 3 was used in Frictional Games' existential science fiction horror game, SOMA.
While HPL1 - mainly due to time and personnel unavailability constraints - did not have any major modding tools from Frictional, HPL2 received several more tools and documentation available in this regard.
Available tools consist of a Level Editor, a Model Editor, a Particle Editor and a Material Editor, with a dedicated wiki containing instructions on the use of said tools.
Custom Stories in Amnesia: The Dark DescentEdit
These modding resources enabled players to create mod maps and levels for Amnesia: The Dark Descent called "Custom Stories" in-game, some of them with remarkable craftsmanship displaying elements such as new, original game stories, new items with special properties, custom maps, custom voice records for Notes and Quotes, custom Loading Screens and even new 3D models imported into the game.
Currently, Frictional Games' Forums host dedicated sections where creators and players of these Custom Stories can gather and showcase their work, as well as discuss the development and provide feedback on them.
- The engine received its name after initials from the name of the American horror, fantasy and science-fiction writer Howard Phillips Lovecraft, popularly known as H.P. Lovecraft, whose work is a strong inspiration for the crew at Frictional Games.