Interesting, wonder what the discrepancy is.
On Windows with Firefox this is the error (from the web tools console):
Assertion failed: undefined index.html:1:566 printErrhttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/index.html:1 aborthttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1 asserthttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1 InitFileSystemhttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1 doCallbackhttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1 donehttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1 syncfshttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1 getRemoteSethttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1 getDBhttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1 getRemoteSethttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1 syncfshttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1 getLocalSethttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1 syncfshttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1 syncfshttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1 syncfshttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1 InitFileSystemhttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1 handleSleephttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1 InitFileSystemhttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1 <anonymous>https://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.wasm:1468078 xhttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1 _mainhttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1 callMainhttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1 doRunhttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1 runhttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1
On Windows with Vivaldi (Chromium based) this is the error (in the itch embed it displays the message ’Exception thrown, see JavaScript console):
index.html:1 Assertion failed: undefinedprintErr @ index.html:1aerofoil.js:1 Uncaught RuntimeError: abort(Assertion failed: undefined). Build with -s ASSERTIONS=1 for more info. at abort (aerofoil.js:1:9931) at assert (aerofoil.js:1:5100) at aerofoil.js:1:21103 at doCallback (aerofoil.js:1:51079) at done (aerofoil.js:1:51175) at aerofoil.js:1:39865 at aerofoil.js:1:41413 at req.onerror (aerofoil.js:1:40697)
Also tested with Linux in a VM on vanilla Chromium (no addons), Vivaldi and Firefox (latter two with only uBlock Origin set to defaults).
Firefox in Linux had this log:
Assertion failed: undefined index.html:1:566 printErrhttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/index.html:1 aborthttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1 asserthttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1 InitFileSystemhttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1 doCallbackhttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1 donehttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1 syncfshttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1 getRemoteSethttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1 onerrorhttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1Uncaught RuntimeError: abort(Assertion failed: undefined). Build with -s ASSERTIONS=1 for more info. aborthttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1 asserthttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1 InitFileSystemhttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1 doCallbackhttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1 donehttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1 syncfshttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1 getRemoteSethttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1 onerrorhttps://v6p9d9t4.ssl.hwcdn.net/html/3834657/aerofoil.js:1aerofoil.js:1:9931Partitioned cookie or storage access was provided to “https://v6p9d9t4.ssl.hwcdn.net/html/3834657/index.html” because it is loaded in the third-party context and dynamic state partitioning is enabled.
Thanks for this.
A couple minor UI comments: there doesn’t seem to be a way to open the main menu while in game*, so had to wait until dying to remap keys (since didn’t check Options menu originally). Also the name of rebound keys don’t appear for prompts but rather the default mapped key names.
* Perhaps this is intentional to prevent any pausing.
Charming sound effects and easy to understand mechanics. Nice little coffee break game.
Edit: one thing that would be a nice QoL improvement if there were a sequel would be the ability to shorten the level intros for repeats after getting caught. Also if the hand didn’t collide with itself it would make the level with the plugs easier (since sometimes the hand can be on the wrong side of itself to grab the plug, when the arm is bunched up), but maybe that’s an intentional part of the challenge.