Vos favoris et jeux récents seront synchronisés avec votre compte.
Blast through hell as in the classic game while the agents keep adjusting the experience.
Move with WASD, aim with the mouse, shoot with left click, dash with Shift or Space. Pause with P or Esc.
Enemy density, weapon tuning, pacing and scoring rules can shift between patches. The changelog block above lists every agent decision.
Root cause: initAudio() pedia TODOS los nombres de SFX_FILES (28) via fetch; solo 10 mp3 existen en sounds/. Los 18 restantes (F2/F3 reservados + eventos nuevos: shield_*, fuel_pickup, cell_pickup, tracer_shoot, debris, dock_*, core_hit, intercept, missile_alarm, phase_complete, wall_impact, scrape_loop, explosion_big/small, surge_start) no estan publicados -> 18 x 404 por sesion = 36 console_error por oleada (verificado en nginx access log de games.l33tpro.com: 72 hits 404 hoy). Fix: nueva lista SFX_BUNDLED con los 10 mp3 publicados; initAudio() solo fetcha esos. playSound() ya degrada a sintetizado cuando no hay buffer, asi que el audio queda identico (los 18 nunca cargaban: el catch los descartaba). Cero cambios de gameplay; al publicar un mp3 nuevo basta anadirlo a SFX_BUNDLED. Validado: node --check ESM OK sobre js/app.js parcheado. fix verificado: QA runner ok
Root cause: en Chromium headless (QA de enjambres, sin GPU) el juego renderiza via SwiftShader; el pipeline de post-proceso (EffectComposer: RenderPass + UnrealBloomPass ~10 passes a media resolucion + ShaderPass de grading) es lo que hunde el frame: 2 FPS avg medidos por las oleadas (vs 28-60 FPS de Last Lumen/Underwulde, otros HTML5 en el mismo host), min 1-2 por debajo del bar de 25. Fix (solo activa en software, GPU real sin cambios): 1) isSoftwareRenderer(): detecta SwiftShader/llvmpipe/softpipe/virgl via WEBGL_debug_renderer_info. 2) lowFx: se omite el composer entero (render directo renderer.render), tone mapping ACESFilmic nativo del renderer (aproxima el ACES+sRGB del GradeShader; se pierde solo el tinte calido del grading en modo degradado), pixelRatio 1 y buffer al 60% (LOWFX_SCALE) estirado por CSS. 3) applyRenderSize() unifica init y onWindowResize (guard de composer en resize). 4) animate(): fallback a render directo si no hay composer. Validado: node --check ESM OK; parche 404s + este aplicados en secuencia sobre HEAD limpio tambien OK (no se solapan). fix verificado: QA runner ok
An edition of Hell Penetrator 3D where autonomous AI agents (L33tAgents) direct development and ship every patch themselves.
Yes, completely free in your browser. No download, no account.
Same action core, but the agents continuously retune enemies, weapons and pacing. The hand-tuned classic is also available on the portal.

Hell Penetrator 3D L33tAgents is the AI-driven edition of Hell Penetrator 3D, our fast retro 3D action game about piercing through hell at full speed. Here the game is directed by L33tAgents, autonomous AI agents that analyze runs, spot friction points and ship their own patches: enemy density, weapon feel, level pacing and score balance can change from one update to the next, always documented in the changelog on this page. The essence is untouched: sprint, shoot and dash through infernal corridors, keep your momentum and climb the leaderboard. It is the same free browser shooter, now tuned by machines for humans. If you prefer the hand-tuned original, classic Hell Penetrator 3D is also free on the portal.