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 to WebAssembly
Tweaked the build to make it compatible with the shareware version of
wad (doom1.wad) for legal use
Introduced new unofficial process flags:
-nomenu (m_menu.c)
to skip the main menu and jump straight into the game
-autoreborn (p_mobj.c)
to automatically rebirth the player after a 2s delay
Introduced callbacks into JS land to be used by the
CAPTCHA UI:
onPlayerBorn when the player is born or reborn
onPlayerKilled when the player is killed
onEnemyKilled when the main player kills an enemy
Tweaked the default process flags in
d_main.c
to make the game more challenging:
-skill 5 sets the difficulty to “Nightmare!”
-fast makes it even harder
-warp e1m1 jumpstarts the game to where the action is
-nomenu doesn’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.
GIPHY App Key not set. Please check settings