How it works
A CAPTCHA that lets you play DOOM® to prove you're human (for educational and entertainment purposes)
The project works by leveraging Emscripten to compile a
minimal port of Doom to WebAssembly and enable
intercommunication between the C-based game runloop (g_game.c) and the
JavaScript-based CAPTCHA UI.
Some extensions were made to the game to introduce relevant events needed for its usage in the context of a CAPTCHA.
-
Started out with a minimal,
SDL-based port of Doom that can be efficiently compiled toWebAssembly -
Tweaked the build to make it compatible with the shareware version of
wad(doom1.wad) for legal use - Introduced new unofficial process flags:
-
Introduced callbacks into
JSland to be used by the CAPTCHA UI:onPlayerBornwhen the player is born or rebornonPlayerKilledwhen the player is killed-
onEnemyKilledwhen the main player kills an enemy
-
Tweaked the default process flags in
d_main.cto make the game more challenging:-skill 5sets the difficulty to "Nightmare!"-fastmakes it even harder-
-warp e1m1jumpstarts the game to where the action is -
-nomenudoesn't let the player trigger the main menu
See the v0 UI generation or get the source.
Built on the shareware version of DOOM® released publically for non-commercial use. DOOM® is a registered trademark of id Software LLC, a ZeniMax Media company.