DOOM CAPTCHA
(doom-captcha.vercel.app)- DOOM CAPTCHA es un CAPTCHA experimental, con fines educativos y de entretenimiento, que te hace jugar DOOM® directamente para demostrar que eres humano
- La implementación central compila un port mínimo de Doom a WebAssembly con
Emscripten, conectando el bucle del juego enCcon una UI enJavaScript - Los estados del juego necesarios para la verificación del CAPTCHA, como aparición y muerte del jugador o eliminación de enemigos, se transmiten a la UI mediante callbacks de JavaScript
- Las opciones de ejecución predeterminadas se configuran como
-skill 5,-fast,-warp e1m1,-nomenu, por lo que entras de inmediato a un combate difícil sin pasar por el menú - Para un uso legal, se ajustó para ser compatible con el
wadsharewaredoom1.wad, y se pueden revisar el código fuente y el enlace de generación de la UI v0
Cómo funciona DOOM como CAPTCHA
- DOOM CAPTCHA es un CAPTCHA en el que el usuario demuestra que es humano jugando DOOM®
- La implementación consiste en compilar un port mínimo de Doom a
WebAssemblyusandoEmscripten - El bucle del juego basado en
Cdeg_game.cy la UI del CAPTCHA basada enJavaScriptestán organizados para intercambiar estado entre sí - El punto de partida es un port mínimo de Doom basado en
SDL, que puede compilarse de forma eficiente aWebAssembly - Para un uso legal, se ajustó la compilación para que sea compatible con la versión shareware del
wad,doom1.wad
Cambios al juego para adaptarlo al CAPTCHA
-
Menú y reaparición
-
Eventos del juego enviados a la UI
- La UI del CAPTCHA recibe el estado del juego mediante callbacks de JavaScript y lo usa en el flujo de verificación
onPlayerBorn: se llama cuando el jugador aparece o reapareceonPlayerKilled: se llama cuando el jugador muereonEnemyKilled: se llama cuando el jugador principal elimina a un enemigo
-
Dificultad de ejecución predeterminada
- Se cambiaron las flags de ejecución predeterminadas de
d_main.cpara que la situación sea más difícil desde el inicio -skill 5: establece la dificultad en"Nightmare!"-fast: hace el juego más difícil-warp e1m1: inicia el juego en un punto con acción-nomenu: evita que el jugador pueda abrir el menú principal
- Se cambiaron las flags de ejecución predeterminadas de
Código fuente y condiciones de uso
- Se pueden ver el resultado de generación de la UI v0 y el código fuente
- Este proyecto se basa en la versión shareware de DOOM® publicada para uso no comercial, y DOOM® es una marca registrada de id Software LLC
1 comentarios
Opiniones de Hacker News
Intenté hacerlo de la forma prevista, pero era demasiado difícil; se podía pasar haciendo trampa quedándose en el punto de inicio y matando solo a los enemigos que salían por la derecha.
En estos juegos, la precisión de la pistola es absurdamente buena, así que puedes matar enemigos disparando unas cuantas veces desde lejos; en cambio, estos enemigos disparan escopetas, que a larga distancia son muy ineficientes. El juego simula la dispersión de los perdigones de forma irrealmente amplia, por lo que aunque un enemigo lejano apunte con precisión, el daño es muy bajo.
Cuando jugaba antes en la LAN NetWare de la universidad, también ganaba contra gente con armas más potentes pero menos precisas simplemente manteniendo la distancia. Normalmente eran escopetas o, en versiones posteriores, escopetas de doble cañón, y todos las consideraban las más satisfactorias.
Funciona bien hasta que alguien se te pega por detrás, y si después de morir reapareces en una buena posición, puedes encontrarlo rápido y vengarte con la pistola. También sirve contra lanzacohetes, siempre que no te peguen directamente o no estés en un lugar donde el daño de una explosión fallida arruine fácilmente el plan.
Dicho a la vieja usanza, es una estrategia válida en muchos juegos tipo DOOM y sus sucesores. Incluso en HL2, la pistola básica dispara sin límite mientras presiones el botón de disparo y no tiene el intervalo mínimo entre disparos de otras armas, así que funciona bien.
Además, es solo con teclado, así que las flechas izquierda/derecha hacen girar al personaje; en los shooters en primera persona modernos uno está acostumbrado a usarlas para moverse lateralmente y girar con el mouse, así que te desacomoda los reflejos.
Habilidad técnica: +100; usabilidad: -100. +10 por el viaje nostálgico, y también obtuve la autoconciencia de que ya no sé jugar.
Hacer que empieces este nivel solo con la pistola, y aparentemente en dificultad Ultra-Violence o Nightmare, es básicamente pedir que te maten.
Si esta implementación soportara el ya estándar WASD y permitiera disparar con el botón izquierdo del mouse como el original, demostrar que soy humano habría sido bastante fácil.
Es un nivel difícil y, si no recuerdo mal, uno de los niveles ocultos. También se siente como si
-fastestuviera activado, y es mucho más difícil al no poder hacer movimiento lateral. Aun así, es muy lindo.A la vieja usanza, puedes moverte lateralmente manteniendo Alt presionado.
En mi entorno el sonido salía extrañamente agudo; no sé por qué. Tampoco es un gran problema, porque le queda bien a esta experiencia absurda.
Eso sí, últimamente he jugado bastante Doom clásico.
Había demasiados monstruos y tuve que intentarlo 3 o 4 veces. Se siente como un captcha de verdad.
¿Qué monstruo no te da WASD, ni siquiera Ctrl para disparar? Igual, gran captcha.
Cada vez que resuelvo un captcha para iniciar sesión en la consola de AWS, pienso que aquello de lo que intenta protegerse podría automatizarlo fácilmente, mientras que la mayoría de los usuarios sufre por esta “función”.
Algunos modelos open source pueden resolverlos incluso sin ese gatekeeping de “seguridad de IA”.
Apple propuso una solución para los captchas[1], y estoy esperando que se estandarice y se use ampliamente.
[1] https://support.apple.com/en-us/102591
Esto claramente no es mejor para la privacidad y le da más control a Apple. Prefiero pasar 3 segundos más con un captcha.
Dejé de leer el documento de soporte de Apple después de esa frase.
Dato curioso: los creadores de Doom jugaron cada nivel para comprobar que pudiera superarse empezando solo con una pistola y 50 balas.
Fue correcto que en el repositorio de GitHub le dieran crédito al creador original de Doom Captcha. Como mis expectativas sobre la industria del software en general están en mínimos históricos, fue agradable verlo.
El original de hace unos años está aquí:
https://vivirenremoto.github.io/doomcaptcha
https://github.com/vivirenremoto/doomcaptcha
Esto está difícil. Supongo que no soy humano.
Hace demasiado que no juego Doom, y sin movimiento lateral es casi imposible.
Esto fue hecho con v0, el asistente de IA de Vercel.
El enlace al chat está aquí: https://v0.dev/chat/4X85A52Dzde?b=b_tOXbbZzZPgT&f=0
Puede sonar impresionante, pero salvo por añadir interacciones triviales como un botón que muestra “loading” durante unos segundos, funcionalmente no es muy distinto de un diseñador de UI drag-and-drop tipo winforms. Su predecesor, Visual Basic, ya existía en los 90.
Aun así, ese chat se vuelve doloroso de leer después de un rato. La idea es algo como: “alinea el texto dentro del botón al centro”, “no está centrado, ponlo al centro”, “por favor centra el texto”.
El repositorio con el resto del código está aquí: https://github.com/rauchg/doom-captcha
También tuvieron que modificar Doom para algunos ajustes, como saltarse el menú y agregar los callbacks necesarios.