{"id":75,"date":"2025-08-05T00:20:44","date_gmt":"2025-08-05T00:20:44","guid":{"rendered":"https:\/\/blogs.scummvm.org\/prime\/?p=75"},"modified":"2025-08-05T00:20:44","modified_gmt":"2025-08-05T00:20:44","slug":"week-9-lab-and-petka","status":"publish","type":"post","link":"https:\/\/blogs.scummvm.org\/prime\/2025\/08\/05\/week-9-lab-and-petka\/","title":{"rendered":"Week 9: Lab and Petka"},"content":{"rendered":"<p data-start=\"311\" data-end=\"580\">This week, I focused on adding keymapper support to two engines: <strong data-start=\"376\" data-end=\"383\">Lab<\/strong> (used by <em data-start=\"393\" data-end=\"416\">The Labyrinth of Time<\/em>) and <strong data-start=\"422\" data-end=\"431\">Petka<\/strong> (used by <em data-start=\"441\" data-end=\"457\">Red Comrades 1 and 2<\/em>)<\/p>\n<hr data-start=\"582\" data-end=\"585\" \/>\n<h3 data-start=\"587\" data-end=\"601\">Lab Engine<\/h3>\n<p data-start=\"603\" data-end=\"939\">The Lab engine was moderately complex due to the game\u2019s dual-interface design. <em data-start=\"682\" data-end=\"705\">The Labyrinth of Time<\/em> features two main interaction modes: a point-and-click exploration interface and an inventory screen. This meant I had to track which interface the player was currently in and enable or disable the appropriate keymappers accordingly.<\/p>\n<p data-start=\"941\" data-end=\"1164\">There are multiple ways to switch between these modes\u2014such as right-clicking or clicking the inventory button\u2014so I had to carefully identify and hook into all the transitions to ensure the keymappers toggled appropriately.<\/p>\n<p data-start=\"1166\" data-end=\"1343\">I also encountered, for the first time, a case where the game interface slightly varied depending on the version of the game. It was a simple adjustment but interesting to note.<\/p>\n<hr data-start=\"1345\" data-end=\"1348\" \/>\n<h3 data-start=\"1350\" data-end=\"1366\">Petka Engine<\/h3>\n<p data-start=\"1368\" data-end=\"1517\">In contrast, Petka was simple and quick to implement. The game uses only a few keys and has a single interface, so a single keymapper was sufficient.<\/p>\n<p data-start=\"1519\" data-end=\"1789\">The only minor complication was the language barrier\u2014the game is entirely in Russian, which made understanding certain actions and UI flows a bit more difficult. However, with some investigation and context clues, I was able to complete the mapping without major issues.<\/p>\n<hr data-start=\"1791\" data-end=\"1794\" \/>\n<h3 data-start=\"1796\" data-end=\"1807\">Wrap-Up<\/h3>\n<p data-start=\"1809\" data-end=\"1822\">This week, I:<\/p>\n<ul data-start=\"1824\" data-end=\"2109\">\n<li data-start=\"1824\" data-end=\"1887\">\n<p data-start=\"1826\" data-end=\"1887\">Implemented keymapper support for the Lab engine<\/p>\n<\/li>\n<li data-start=\"1824\" data-end=\"1887\">Implemented keymapper support for the Petka engine<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>This week, I focused on adding keymapper support to two engines: Lab (used by The Labyrinth of Time) and Petka (used by Red Comrades 1 and 2) Lab Engine The Lab engine was moderately complex due to the game\u2019s dual-interface design. The Labyrinth of Time features two main interaction modes: a point-and-click exploration interface and [&hellip;]<\/p>\n","protected":false},"author":28,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[],"class_list":["post-75","post","type-post","status-publish","format-standard","hentry","category-week-9"],"_links":{"self":[{"href":"https:\/\/blogs.scummvm.org\/prime\/wp-json\/wp\/v2\/posts\/75","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.scummvm.org\/prime\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.scummvm.org\/prime\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.scummvm.org\/prime\/wp-json\/wp\/v2\/users\/28"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.scummvm.org\/prime\/wp-json\/wp\/v2\/comments?post=75"}],"version-history":[{"count":1,"href":"https:\/\/blogs.scummvm.org\/prime\/wp-json\/wp\/v2\/posts\/75\/revisions"}],"predecessor-version":[{"id":76,"href":"https:\/\/blogs.scummvm.org\/prime\/wp-json\/wp\/v2\/posts\/75\/revisions\/76"}],"wp:attachment":[{"href":"https:\/\/blogs.scummvm.org\/prime\/wp-json\/wp\/v2\/media?parent=75"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.scummvm.org\/prime\/wp-json\/wp\/v2\/categories?post=75"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.scummvm.org\/prime\/wp-json\/wp\/v2\/tags?post=75"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}