{"id":93,"date":"2022-09-11T21:06:39","date_gmt":"2022-09-11T21:06:39","guid":{"rendered":"https:\/\/blogs.scummvm.org\/grisenti\/?p=93"},"modified":"2022-09-11T21:06:39","modified_gmt":"2022-09-11T21:06:39","slug":"gsoc-summary","status":"publish","type":"post","link":"https:\/\/blogs.scummvm.org\/grisenti\/2022\/09\/11\/gsoc-summary\/","title":{"rendered":"GSOC summary"},"content":{"rendered":"<p><span data-contrast=\"auto\">My name is Emanuele Grisenti (aka grisenti) and in the past three months I\u2019ve 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\u2019s low-level feature (input, sound and graphics), with ScummVM\u2019s 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. <\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:0,&quot;335559737&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">The code can be found at <\/span><a href=\"https:\/\/github.com\/grisenti\/scummvm\/commits\/hpl1-gsoc\"><span data-contrast=\"none\">https:\/\/github.com\/grisenti\/scummvm\/commits\/hpl1-gsoc<\/span><\/a><span data-contrast=\"auto\">, with the first commit being <a href=\"https:\/\/github.com\/grisenti\/scummvm\/commit\/3727a5caf8e821982b0e0008a3bda0da8c11f238\">3727a5caf8e821982b0e0008a3bda0da8c11f238<\/a><\/span><span data-contrast=\"auto\">.<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;201341983&quot;:0,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559685&quot;:0,&quot;335559737&quot;:0,&quot;335559738&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<h3>What&#8217;s been done<\/h3>\n<p><span data-contrast=\"auto\">Most of the goals outlined in the initial proposal have been met,\u00a0and the game can almost be played to the end, but there are still serious issues in final levels. <\/span><\/p>\n<h3><span data-contrast=\"auto\">What\u2019s left to do<\/span><\/h3>\n<ul>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\">Resolve the game breaking bugs left at the end of the game.<\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"2\" data-aria-level=\"1\"><span data-contrast=\"auto\">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. <\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"3\" data-aria-level=\"1\"><span data-contrast=\"auto\">Improving portability <\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">by removing platform specific code and other non-portable functionality.<br \/>\n<\/span><\/li>\n<li data-leveltext=\"\uf0b7\" data-font=\"Symbol\" data-listid=\"1\" data-list-defn-props=\"{&quot;335552541&quot;:1,&quot;335559683&quot;:0,&quot;335559684&quot;:-2,&quot;335559685&quot;:720,&quot;335559991&quot;:360,&quot;469769226&quot;:&quot;Symbol&quot;,&quot;469769242&quot;:[8226],&quot;469777803&quot;:&quot;left&quot;,&quot;469777804&quot;:&quot;\uf0b7&quot;,&quot;469777815&quot;:&quot;hybridMultilevel&quot;}\" data-aria-posinset=\"4\" data-aria-level=\"1\"><span data-contrast=\"auto\">Implementing a software renderer to make the game playable even without OpenGL.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/li>\n<li>Cleaning up most of the code, including compilation warnings, unused functionality and stylistic changes.<\/li>\n<\/ul>\n<h3>Closing thoughts<\/h3>\n<p><span data-contrast=\"auto\">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&#8217;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.<br \/>\n<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>My name is Emanuele Grisenti (aka grisenti) and in the past three months I\u2019ve 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 [&hellip;]<\/p>\n","protected":false},"author":13,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-93","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blogs.scummvm.org\/grisenti\/wp-json\/wp\/v2\/posts\/93","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.scummvm.org\/grisenti\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.scummvm.org\/grisenti\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.scummvm.org\/grisenti\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.scummvm.org\/grisenti\/wp-json\/wp\/v2\/comments?post=93"}],"version-history":[{"count":1,"href":"https:\/\/blogs.scummvm.org\/grisenti\/wp-json\/wp\/v2\/posts\/93\/revisions"}],"predecessor-version":[{"id":94,"href":"https:\/\/blogs.scummvm.org\/grisenti\/wp-json\/wp\/v2\/posts\/93\/revisions\/94"}],"wp:attachment":[{"href":"https:\/\/blogs.scummvm.org\/grisenti\/wp-json\/wp\/v2\/media?parent=93"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.scummvm.org\/grisenti\/wp-json\/wp\/v2\/categories?post=93"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.scummvm.org\/grisenti\/wp-json\/wp\/v2\/tags?post=93"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}