DOOM CAPTCHA
(doom-captcha.vercel.app)- DOOM CAPTCHA ist ein CAPTCHA, das Nutzer DOOM® selbst spielen lässt, um zu beweisen, dass sie Menschen sind; ein experimentelles Projekt mit Bildungs- und Unterhaltungscharakter
- Die Kernimplementierung kompiliert einen minimalen Doom-Port mit
Emscriptenzu WebAssembly und verbindet dieC-Game-Loop mit einerJavaScript-UI - Für die CAPTCHA-Bewertung nötige Spielzustände wie Spawn und Tod des Spielers sowie das Töten von Gegnern werden über JavaScript-Callbacks an die UI übermittelt
- Die Standard-Startoptionen sind auf
-skill 5,-fast,-warp e1m1und-nomenugesetzt, sodass man ohne Menü direkt in einen schwierigen Kampf einsteigt - Für eine rechtmäßige Nutzung wurde es so angepasst, dass es mit der Shareware-
waddoom1.wadkompatibel ist; der Quellcode und der Link zur v0-UI-Erzeugung sind verfügbar
Aufbau: Doom als CAPTCHA ausführen
- DOOM CAPTCHA ist ein CAPTCHA, bei dem Nutzer DOOM® spielen, um zu beweisen, dass sie Menschen sind
- Die Umsetzung kompiliert einen minimalen Doom-Port mithilfe von
EmscriptennachWebAssembly - Die
C-basierte Game-Loopg_game.cund dieJavaScript-basierte CAPTCHA-UI sind so aufgebaut, dass sie Zustände miteinander austauschen können - Ausgangspunkt ist ein minimaler Doom-Port auf Basis von
SDL, der sich effizient nachWebAssemblykompilieren lässt - Für eine rechtmäßige Nutzung wurde der Build so angepasst, dass er mit
doom1.wad, derwadder Shareware-Version, kompatibel ist
Spieländerungen für das CAPTCHA
-
Menü- und Respawn-Verhalten
-
Spielereignisse, die an die UI übermittelt werden
- Die CAPTCHA-UI erhält den Spielzustand über JavaScript-Callbacks und nutzt ihn im Bewertungsablauf
onPlayerBorn: Wird aufgerufen, wenn der Spieler erzeugt oder wiederbelebt wirdonPlayerKilled: Wird aufgerufen, wenn der Spieler stirbtonEnemyKilled: Wird aufgerufen, wenn der Hauptspieler einen Gegner tötet
-
Standardschwierigkeitsgrad beim Start
- Die Standard-Start-Flags in
d_main.cwurden geändert, um von Anfang an eine schwierigere Situation zu erzeugen -skill 5: Setzt den Schwierigkeitsgrad auf"Nightmare!"-fast: Macht das Spiel schwieriger-warp e1m1: Startet das Spiel an einer Stelle mit Action-nomenu: Verhindert, dass der Spieler das Hauptmenü öffnen kann
- Die Standard-Start-Flags in
Quellcode und Nutzungsbedingungen
- Das Ergebnis der v0-UI-Erzeugung und der Quellcode sind einsehbar
- Dieses Projekt basiert auf der für nichtkommerzielle Nutzung veröffentlichten DOOM®-Shareware-Version; DOOM® ist eine eingetragene Marke von id Software LLC
1 Kommentare
Meinungen auf Hacker News
Ich habe versucht, es auf die vorgesehene Weise zu schaffen, aber es war zu schwer; man konnte es mit einem Trick lösen, indem man am Startpunkt blieb und nur die Gegner erledigte, die von rechts kamen.
In diesen Spielen ist die Treffsicherheit der Pistole absurd gut, sodass man Gegner aus der Ferne mit ein paar Schüssen erledigen kann. Die Gegner hier schießen mit Schrotflinten, die auf große Distanz sehr ineffektiv sind. Das Spiel simuliert die Streuung der Schrotladung unrealistisch breit, daher verursacht ein weit entfernter Gegner selbst bei genauem Zielen nur sehr wenig Schaden.
Als wir früher über das NetWare-LAN an der Uni gespielt haben, habe ich Leute mit stärkeren, aber ungenaueren Waffen allein dadurch besiegt, dass ich Abstand gehalten habe. Meist waren das Schrotflinten oder in späteren Versionen die doppelläufige Schrotflinte, die alle für die befriedigendste Waffe hielten.
Das funktioniert gut, bis sich jemand von hinten nähert; und wenn man nach dem Tod an einer brauchbaren Stelle respawnt, findet man denjenigen schnell und nimmt mit der Pistole Rache. Gegen Raketenwerfer funktioniert es auch, solange man nicht direkt getroffen wird oder sich nicht an einem Ort befindet, an dem Explosionsschaden von Fehlschüssen den Plan leicht zunichtemacht.
Altmodisch gesagt: In vielen DOOM-artigen Spielen und ihren Nachfolgern ist das eine wirksame Methode. Auch in HL2 funktioniert die Standardpistole gut, weil sie unbegrenzt so schnell feuert, wie man die Feuertaste drückt, und nicht wie andere Waffen ein minimales Feuerintervall hat.
Außerdem ist es rein tastaturgesteuert: Die Links-/Rechtspfeile drehen die Figur. In modernen First-Person-Shootern ist man daran gewöhnt, sie zum Seitwärtsbewegen zu nutzen und mit der Maus zu drehen, was die Reflexe durcheinanderbringt.
Technik +100, Usability -100. +10 für die Nostalgie, und ich habe außerdem die Selbsterkenntnis gewonnen, dass ich nicht mehr spielen kann.
Dieses Level nur mit Pistole starten zu lassen, und das dem Aussehen nach auf Ultra-Violence oder Nightmare, ist im Grunde eine Einladung, erschossen zu werden.
Wenn diese Implementierung das inzwischen übliche WASD unterstützen und wie das Original das Feuern mit der linken Maustaste erlauben würde, wäre es ziemlich leicht gewesen, zu beweisen, dass ich ein Mensch bin.
Es ist ein schwieriges Level und, wenn ich mich richtig erinnere, eines der versteckten Level. Es fühlt sich auch so an, als wäre
-fastaktiviert, und weil man nicht strafen kann, ist es deutlich schwerer. Trotzdem sehr niedlich.Wie früher kann man mit gedrückter Alt-Taste seitwärts gehen.
Bei mir klang der Ton seltsam hoch; keine Ahnung warum. Zu dieser absurden Erfahrung passt es aber, also kein großes Problem.
Allerdings habe ich in letzter Zeit auch ziemlich viel klassisches Doom gespielt.
Es gab so viele Monster, dass ich 3–4 Versuche gebraucht habe. Fühlt sich wirklich wie ein Captcha an.
Welches Monster bietet kein WASD an, nicht einmal wenigstens Ctrl zum Feuern? Trotzdem ein cooles Captcha.
Jedes Mal, wenn ich beim Login in die AWS-Konsole ein Captcha lösen muss, denke ich, dass genau die Zielgruppe, die man damit abhalten will, es leicht automatisieren kann, während die meisten Nutzer unter dieser „Funktion“ leiden.
Einige Open-Source-Modelle können so etwas sogar ohne dieses „AI Safety“-Gatekeeping lösen.
Apple hat eine Captcha-Lösung vorgeschlagen[1], und ich warte darauf, dass sie standardisiert und breit eingesetzt wird.
[1] https://support.apple.com/en-us/102591
Das ist eindeutig nicht besser für den Datenschutz und gibt Apple mehr Kontrolle. Da verbringe ich lieber drei Sekunden länger mit einem Captcha.
Nach diesem Satz habe ich aufgehört, das Apple-Supportdokument zu lesen.
Eine kleine Trivia: Die Doom-Entwickler haben jedes Level selbst durchgespielt, um zu prüfen, ob es auch mit nur Pistole und 50 Schuss zu schaffen ist.
Es ist richtig, dass im GitHub-Repository der ursprüngliche Doom-Captcha-Ersteller gewürdigt wird. Da meine Erwartungen an die Softwarebranche insgesamt derzeit auf einem historischen Tiefpunkt sind, war das schön zu sehen.
Das Original von vor ein paar Jahren ist hier:
https://vivirenremoto.github.io/doomcaptcha
https://github.com/vivirenremoto/doomcaptcha
Das ist schwer. Vielleicht bin ich kein Mensch.
Es ist viel zu lange her, dass ich Doom gespielt habe, und ohne Seitwärtsbewegung ist es fast unmöglich.
Das wurde mit Vercels KI-Assistent v0 erstellt.
Der Chat-Link ist hier: https://v0.dev/chat/4X85A52Dzde?b=b_tOXbbZzZPgT&f=0
Das mag beeindruckend klingen, unterscheidet sich funktional aber kaum von einem Drag-and-drop-UI-Designer wie WinForms, abgesehen davon, dass man kleine Interaktionen wie einen Button hinzufügen kann, der ein paar Sekunden lang „loading“ anzeigt. Dessen Vorläufer Visual Basic gab es schon in den 90ern.
Trotzdem wird dieser Chat nach einer Weile ziemlich mühsam zu lesen. Im Kern läuft es auf „Zentriere den Text im Button“, „Er ist nicht zentriert, mach ihn mittig“, „Bitte zentriere den Text“ hinaus.
Das Repository mit dem übrigen Source ist hier: https://github.com/rauchg/doom-captcha
Auch Doom musste angepasst werden, etwa um das Menü zu überspringen und die nötigen Callbacks hinzuzufügen.