My name is Emanuele Grisenti (aka grisenti) and in the past three months I’ve been working on integrating the HPL1 engine, made by Frictional Games, in ScummVM, with the goal of supporting the 2007 game Penumbra: Overture, created by the same company. The source code for both the engine and the game were made publicly available in 2010, and my job was to replace the engine’s low-level feature (input, sound and graphics), with ScummVM’s equivalents. This proved much harder than I initially thought, especially working with the physics library, for which a different version had to be used, since the source code for the version used in the original engine is not available.
The code can be found at https://github.com/grisenti/scummvm/commits/hpl1-gsoc, with the first commit being 3727a5caf8e821982b0e0008a3bda0da8c11f238.
What’s been done
Most of the goals outlined in the initial proposal have been met, and the game can almost be played to the end, but there are still serious issues in final levels.
What’s left to do
- Resolve the game breaking bugs left at the end of the game.
- Removing the use of stl containers, which was a goal of the initial proposal but unfortunately had to be put aside to work on other problems.
- Improving portability by removing platform specific code and other non-portable functionality.
- Implementing a software renderer to make the game playable even without OpenGL.
- Cleaning up most of the code, including compilation warnings, unused functionality and stylistic changes.
Overall, it was an amazing experience and a fantastic learning opportunity, for which I want to thank anyone who gave their time to help out or to read the discussions on discord or the weekly blogs. It’s going to be a while before the game will appear in a future ScummVM release, but I definitely want to keep working to get it there.