This week I worked on adding keymapper support to the Queen and Pink engines. On top of that, I also got my Neverhood, Prince, and Queen keymapper PRs merged.
Queen Engine
The Queen engine was moderately challenging. It came with a good number of keys, but the real twist was the variable keybinds for some actions. these depended on the language of the player’s copy of the game. This was somewhat similar to what I encountered earlier in the Sherlock engine.
Another tricky part was that the keybind selection logic was embedded deep in the engine code. To make it compatible with the keymapper, I had to refactor the code so that the language-based key selection happened in the keymapper section instead. This made it accessible for usage in the keymapper initialization.
Some sections of the game also needed keymapper toggling. those were relatively straightforward to set up.
Pink Engine
Pink, at first glance, seemed simpler—fewer than 10 keys in total. But as always, appearances can be deceiving.
In the game, you can’t move your character freely. Movement only happens when you click an interactable object or character, at which point the character walks to the target and interacts with it automatically.
The key actions didn’t just trigger standard gameplay—they altered this entire interaction sequence. For example:
-
One action skips the walking animation entirely.
-
Another lets you walk to the target but cancels the interaction.
-
Yet another skips both walking and interaction, simply teleporting you there.
There were also keys that modified or skipped the sequence that plays when you interact with a target—like skipping a conversation, skipping part of it, or even restarting a dialog from the beginning if you missed something.
Identifying exactly what each key did was the hardest part here, but once that was figured out, mapping them to the keymapper went smoothly.
Wrap-Up
This week, I: