2 poin oleh GN⁺ 2025-01-02 | 1 komentar | Bagikan ke WhatsApp
  • DOOM CAPTCHA adalah CAPTCHA eksperimental bernuansa edukasi dan hiburan yang membuat pengguna memainkan DOOM® secara langsung untuk membuktikan bahwa mereka manusia
  • Implementasi intinya mengompilasi port Doom minimal ke WebAssembly dengan Emscripten, lalu menghubungkan game loop C dengan UI JavaScript
  • Status game yang dibutuhkan untuk penilaian CAPTCHA, seperti pemain dibuat/tewas dan musuh dibunuh, diteruskan ke UI melalui callback JavaScript
  • Opsi eksekusi default diatur ke -skill 5, -fast, -warp e1m1, -nomenu, sehingga pemain langsung masuk ke pertempuran sulit tanpa menu
  • Untuk penggunaan yang sah, proyek ini disesuaikan agar kompatibel dengan shareware wad doom1.wad, dan tersedia tautan ke kode sumber serta hasil pembuatan UI v0

Struktur menjalankan Doom sebagai CAPTCHA

  • DOOM CAPTCHA adalah CAPTCHA yang membuat pengguna memainkan DOOM® untuk membuktikan bahwa mereka manusia
  • Implementasinya menggunakan Emscripten untuk mengompilasi port Doom minimal ke WebAssembly
  • Game loop berbasis C g_game.c dan UI CAPTCHA berbasis JavaScript disusun agar dapat saling bertukar status
  • Titik awalnya adalah port Doom minimal berbasis SDL, yang dapat dikompilasi secara efisien ke WebAssembly
  • Untuk penggunaan yang sah, build disesuaikan agar kompatibel dengan doom1.wad, yaitu wad versi shareware

Perubahan game yang disesuaikan untuk CAPTCHA

  • Menu dan penanganan respawn

    • Flag eksekusi tidak resmi ditambahkan untuk menyederhanakan alur permainan agar sesuai dengan alur CAPTCHA
    • -nomenu: melewati menu utama di m_menu.c dan langsung masuk ke permainan
    • -autoreborn: di p_mobj.c, pemain otomatis hidup kembali 2 detik setelah mati
  • Event game yang diteruskan ke UI

    • UI CAPTCHA menerima status game melalui callback JavaScript untuk digunakan dalam alur penilaian
    • onPlayerBorn: dipanggil saat pemain dibuat atau hidup kembali
    • onPlayerKilled: dipanggil saat pemain mati
    • onEnemyKilled: dipanggil saat pemain utama membunuh musuh
  • Tingkat kesulitan eksekusi default

    • Flag eksekusi default di d_main.c diubah agar situasi sejak awal menjadi lebih sulit
    • -skill 5: mengatur tingkat kesulitan ke "Nightmare!"
    • -fast: membuat game menjadi lebih sulit
    • -warp e1m1: memulai game di titik yang penuh aksi
    • -nomenu: mencegah pemain membuka menu utama

Sumber dan ketentuan penggunaan

  • Tersedia hasil pembuatan UI v0 dan kode sumber
  • Proyek ini didasarkan pada versi DOOM® shareware yang dirilis untuk penggunaan nonkomersial, dan DOOM® adalah merek dagang terdaftar milik id Software LLC

1 komentar

 
GN⁺ 2025-01-02
Komentar Hacker News
  • Saya mencoba melakukannya dengan cara yang dimaksudkan, tapi terlalu sulit; ternyata bisa menyelesaikannya dengan trik dengan tetap berada di titik awal dan hanya menembaki musuh yang muncul dari kanan

    • Dengan kondisi awal seperti itu, itu bukan trik, melainkan taktik standar. Itu cara yang dipakai saat hanya punya pistol atau amunisi senjata lain kurang
      Di game-game ini, akurasi pistol luar biasa bagus, jadi kamu bisa menembak musuh dari jauh beberapa kali hingga mati, sementara musuh di sini memakai shotgun, yang sangat tidak efektif pada jarak jauh. Game ini mensimulasikan sebaran peluru shotgun secara tidak realistis terlalu lebar, sehingga meskipun musuh yang jauh membidik dengan tepat, damage-nya sangat kecil
      Dulu saat bermain di LAN NetWare kampus, saya juga bisa mengalahkan orang-orang yang memakai senjata lebih kuat tapi kurang akurat hanya dengan menjaga jarak. Biasanya shotgun atau double-barrel shotgun di versi berikutnya, dan semua orang menganggap itu yang paling memuaskan
      Ini efektif sampai ada yang mendekat dari belakang, dan kalau setelah mati kamu respawn di posisi yang bagus, kamu bisa segera mencari orang itu dan balas dendam dengan pistol. Bahkan melawan rocket launcher pun bisa, selama tidak terkena langsung atau tidak berada di tempat di mana damage ledakan yang meleset mudah merusak rencana
      Kalau memakai istilah lama, ini adalah metode yang efektif di banyak game sejenis DOOM dan penerusnya. Di HL2 pun pistol dasar bisa ditembakkan tanpa batas selama tombol tembak ditekan, dan tidak punya jeda tembakan minimum seperti senjata lain, jadi cukup ampuh
    • Ini memang bukan level pertama, tetapi kondisi senjata saat masuk ke level itu memang sesuai
      Selain itu, karena hanya memakai keyboard, tombol panah kiri/kanan memutar karakter; di first-person shooter modern kita terbiasa memakai tombol itu untuk bergerak ke samping dan memakai mouse untuk berputar, jadi refleks jadi kacau
    • Kalau semuanya berjalan di sisi klien, tidak perlu repot-repot memakai trik. Server tidak punya cara untuk memverifikasi apakah jumlah musuh yang benar-benar diperlukan sudah dibunuh
    • Saya juga melakukan hal yang sama. Tekan panah mundur untuk menjauh, lalu tekan spasi setiap detik, selesai. Sekitar 30 detik kemudian CAPTCHA terpecahkan
    • Menjadikan level ini sebagai pistol start agak kejam. Setidaknya harusnya diberi shotgun
  • Kemampuan teknis +100, usability -100. Untuk nostalgia +10, dan saya juga mendapat kesadaran diri bahwa sekarang saya sudah tidak bisa bermain game

    • Ini adalah level rahasia E1M9 yang biasanya ditemui setelah E1M3. Kalau bermain normal, pada titik ini semestinya sudah punya shotgun, chaingun, rocket launcher, dan mungkin armor juga
      Membuat level ini dimulai hanya dengan pistol, dan kelihatannya pada tingkat kesulitan Ultra-Violence atau Nightmare, sama saja seperti berharap pemain mati ditembak
    • Tanpa mouse look, ini jauh lebih sulit. Saya butuh lebih dari 10 kali percobaan untuk lolos, dan saya Diamond di Overwatch
    • Saya juga tidak tahu seberapa aman ini sebenarnya terhadap bot. Zaman sekarang sepertinya bisa saja membuat AI yang memainkan DOOM setidaknya sebaik manusia
    • Lucunya, keyboard saya tidak punya tombol panah. Memang sudah saya binding di layer lain, tapi konfigurasi ini kurang cocok
      Kalau implementasi ini mendukung WASD, yang sekarang sudah jadi standar, dan memungkinkan menembak dengan tombol kiri mouse seperti aslinya, membuktikan bahwa saya manusia akan jauh lebih mudah
  • Ini level yang sulit, dan kalau ingatan saya benar, salah satu level tersembunyi. Rasanya seperti -fast aktif, dan karena tidak bisa bergerak ke samping, jadi jauh lebih sulit. Tapi tetap sangat lucu

    • Benar. Itu E1M9, level rahasia versi shareware, dan tingkat kesulitannya Nightmare
      Dengan cara lama, menahan Alt memungkinkan bergerak ke samping
      Di lingkungan saya, suaranya terdengar anehnya terlalu tinggi, entah kenapa. Untuk pengalaman absurd seperti ini, itu cukup cocok jadi bukan masalah besar
    • Di Firefox di Linux, gerakan ke samping bisa dilakukan. Mungkin ada pengaturan sistem operasi atau browser yang memblokirnya
    • Memang sesulit itu? Saya sudah siap mengeluh ringan karena tidak bisa di mobile, tapi kontrol layarnya berjalan baik dan saya tidak punya masalah berarti untuk langsung membunuh tiga musuh
      Meski begitu, belakangan ini saya memang cukup banyak memainkan Doom klasik
    • Kalau menahan Alt, jelas bisa bergerak ke samping. Setidaknya di tempat saya bisa
    • Benar, E1M9 terkenal sulit sebagai pistol start. Saya langsung mengenalinya begitu melihatnya, yang menunjukkan berapa banyak waktu yang saya habiskan dengan Doom saat kecil
  • Monsternya terlalu banyak, jadi harus mencoba 3–4 kali. Benar-benar terasa seperti CAPTCHA

    • Karena itu saya menganggapnya sebagai parodi
    • Seperti CAPTCHA sungguhan, ini neraka bagi orang dengan disabilitas. 10 dari 10
  • Monster macam apa yang tidak memberi WASD, bahkan setidaknya Ctrl untuk menembak pun tidak? Tapi tetap CAPTCHA yang keren

    • ijkl;
  • Setiap kali saya menyelesaikan CAPTCHA untuk login ke konsol AWS, saya selalu berpikir bahwa target yang ingin dicegah oleh ini bisa dengan mudah mengotomatiskannya, sementara sebagian besar pengguna justru menderita karena “fitur” ini
    Beberapa model open source bisa menyelesaikannya bahkan tanpa gatekeeping “AI safety” semacam itu
    Apple pernah mengusulkan solusi CAPTCHA[1], dan saya menunggu itu distandardisasi dan dipakai luas
    [1] https://support.apple.com/en-us/102591

    • Caranya adalah “alih-alih meminta CAPTCHA saat login ke aplikasi atau situs web, server Apple memverifikasi perangkat dan Apple Account, verifikasi ini dikirim ke server penerbit token pihak ketiga yang telah diverifikasi Apple, lalu server itu membuat token akses privat yang memverifikasi pengguna ke aplikasi atau situs web”
      Ini jelas tidak lebih baik untuk privasi, dan memberi Apple lebih banyak kendali. Saya lebih memilih menghabiskan 3 detik lagi untuk CAPTCHA
    • “Anda tidak perlu menyelesaikan CAPTCHA. Cukup login ke aplikasi atau situs.” Tidak, terima kasih. Saya tidak mau
      Setelah membaca kalimat itu, saya berhenti membaca dokumen dukungan Apple
  • Satu trivia: para pembuat Doom memainkannya sendiri untuk memastikan setiap level bisa diselesaikan meski dimulai hanya dengan pistol dan 50 peluru

  • Memberi kredit kepada pembuat Doom Captcha asli di repositori GitHub adalah hal yang benar. Ekspektasi saya terhadap industri perangkat lunak secara umum sedang berada di titik terendah sepanjang masa, jadi itu menyenangkan untuk dilihat
    Versi asli beberapa tahun lalu ada di sini
    https://vivirenremoto.github.io/doomcaptcha
    https://github.com/vivirenremoto/doomcaptcha

  • Ini sulit. Sepertinya saya bukan manusia
    Sudah terlalu lama sejak saya bermain Doom, dan tanpa gerakan ke samping hampir mustahil

    • Seperti yang juga disebutkan di tempat lain, Alt + kiri/kanan memungkinkan bergerak ke samping
    • Maju untuk memancing monster, lalu segera kembali ke titik awal dan berlindung, kemudian bunuh satu per satu dari jauh. Mudah
  • Ini dibuat dengan asisten AI Vercel, v0
    Tautan chat-nya di sini: https://v0.dev/chat/4X85A52Dzde?b=b_tOXbbZzZPgT&f=0

    • Di sini kata “with” memikul cukup banyak makna. Setelah menelusuri log, tampaknya yang dilakukan asisten AI hanyalah merancang UI, dan tidak benar-benar mengimplementasikan gamenya
      Kedengarannya mungkin mengesankan, tetapi secara fungsional tidak jauh berbeda dari desainer UI drag-and-drop seperti winforms, selain menambahkan interaksi kecil seperti tombol yang menampilkan “loading” selama beberapa detik. Pendahulunya, Visual Basic, juga sudah ada pada tahun 90-an
    • Bagian JS-nya tidak terlihat. Sepertinya asistennya hanya dipakai untuk membuat layout, bukan untuk bagian integrasi DOOM yang sebenarnya
      Meski begitu, chat itu setelah beberapa saat jadi menyakitkan untuk dibaca. Intinya seperti “ratakan teks di dalam tombol ke tengah”, “itu belum di tengah, jadikan tengah”, “tolong ratakan teksnya ke tengah”
    • Saya membaca chat-nya, dan semuanya hanya koreksi detail tentang layout; tidak terlihat titik di mana DOOM benar-benar disisipkan. Saya tidak paham apakah bagian mudahnya diserahkan ke AI dan bagian sulitnya dikodekan sendiri
    • Seperti yang ditunjukkan orang lain, itu hanya mengatur UI
      Repositori yang berisi sisa source ada di sini: https://github.com/rauchg/doom-captcha
      Doom juga harus dimodifikasi untuk beberapa penyesuaian, seperti melewati menu dan menambahkan callback yang diperlukan