- DOOM CAPTCHA는 사람임을 증명하려면 DOOM®을 직접 플레이하게 만드는 CAPTCHA로, 교육·엔터테인먼트 성격의 실험적 프로젝트임
- 핵심 구현은
Emscripten으로 최소 Doom 포트를 WebAssembly로 컴파일하고,C게임 루프와JavaScriptUI를 연결하는 방식임 - CAPTCHA 판정에 필요한 플레이어 생성·사망, 적 처치 같은 게임 상태는 JavaScript 콜백을 통해 UI로 전달됨
- 기본 실행 옵션은
-skill 5,-fast,-warp e1m1,-nomenu로 설정되어 메뉴 없이 곧바로 어려운 전투에 들어감 - 합법적 사용을 위해 shareware
wad인doom1.wad와 호환되도록 조정했으며, 소스 코드와 v0 UI 생성 링크를 확인할 수 있음
Doom을 CAPTCHA로 실행하는 구조
- DOOM CAPTCHA는 사용자가 DOOM®을 플레이해 인간임을 증명하는 CAPTCHA임
- 구현은
Emscripten을 사용해 최소 Doom 포트를WebAssembly로 컴파일하는 방식임 C기반 게임 루프인g_game.c와JavaScript기반 CAPTCHA UI가 서로 상태를 주고받을 수 있게 구성됨- 시작점은
SDL기반의 최소 Doom 포트이며,WebAssembly로 효율적으로 컴파일될 수 있음 - 합법적 사용을 위해 shareware 버전
wad인doom1.wad와 호환되도록 빌드를 조정함
CAPTCHA에 맞춘 게임 변경
-
메뉴와 부활 처리
-
UI로 전달되는 게임 이벤트
- CAPTCHA UI는 JavaScript 콜백으로 게임 상태를 받아 판정 흐름에 활용함
onPlayerBorn: 플레이어가 생성되거나 부활할 때 호출됨onPlayerKilled: 플레이어가 사망할 때 호출됨onEnemyKilled: 메인 플레이어가 적을 처치할 때 호출됨
-
기본 실행 난이도
d_main.c의 기본 실행 플래그를 바꿔 처음부터 더 어려운 상황이 되도록 만듦-skill 5: 난이도를"Nightmare!"로 설정함-fast: 게임을 더 어렵게 만듦-warp e1m1: 액션이 있는 지점에서 게임을 시작함-nomenu: 플레이어가 메인 메뉴를 열 수 없게 함
소스와 사용 조건
- v0 UI 생성 결과와 소스 코드를 볼 수 있음
- 이 프로젝트는 비상업적 사용을 위해 공개된 DOOM® shareware 버전을 기반으로 하며, DOOM®은 id Software LLC의 등록 상표임