43 puntos por gamjaa 2026-03-25 | 10 comentarios | Compartir por WhatsApp
  • GunZ: The Duel, un juego TPS exclusivo de Windows de 2003
    fue porteado para poder ejecutarse en el navegador con WebAssembly + WebGL
  • Se puede jugar abriendo solo la URL en Chrome, sin instalación https://gunz.sigr.io/
  • Funciona en casi cualquier entorno, incluyendo Linux, macOS y móvil
  • El código C++ existente se mantuvo casi sin cambios
  • Aproximadamente el 99% del código nuevo fue generado por IA

Por qué es importante

  • Los juegos de PC tradicionales:
    • requieren descarga e instalación
    • dependen de Windows
  • En este caso:
    • el juego exactamente igual corre en el navegador
    • no es una “implementación parecida”, sino un port directo del original
  • Antes esto pertenecía a la categoría de “teóricamente posible, pero en la práctica inviable”

Intentos anteriores y fracasos

  • Enfoque anterior:
    • reimplementar el motor con JavaScript + Three.js
  • Resultado:
    • solo se logró renderizar el mapa
    • se abandonó porque la dificultad de reimplementar todo el motor era demasiado alta
  • Conclusión:
    • el enfoque de “reimplementación” es prácticamente inviable en la realidad

Problema clave: dependencia de Windows

  • GunZ está basado en C++ y depende de Direct3D
  • Problema:
    • Direct3D es una API exclusiva de Windows
    • en el navegador (WebGL) no se puede usar directamente
  • Compilar simplemente a wasm no resuelve esto
  • Es decir:
    • solo el código independiente de la plataforma puede ir a wasm
    • la parte dependiente de la API gráfica es la mayor barrera

Límites de los enfoques existentes

  • Modificar directamente el código del juego
    • requeriría cambiar decenas de miles de líneas
    • sería imposible de mantener
  • Conversión automática (D3D → WebGL)
    • por las diferencias semánticas entre APIs, no permite una conversión mecánica
  • Conclusión:
    • todos los métodos existentes eran poco realistas

Idea central: una “capa de traducción”

  • Enfoque:
    • mantener intacto el código del juego
    • interceptar las llamadas a Direct3D
    • traducirlas a WebGL en tiempo real
  • Implementación:
    • un wrapper de WebGL con la misma interfaz que la API de D3D9
    • insertado entre el juego y la API gráfica
  • Efecto:
    • casi no fue necesario modificar el código del juego
    • se eliminó la dependencia de Windows
    • el costo del port quedó acotado a “implementar el wrapper”

El papel de la IA

  • Herramientas usadas:
    • Google Antigravity
    • Claude Code (plan Max)
  • Resultado:
    • automatización del análisis y la modificación de código a gran escala
    • problemas que tomaban semanas se resolvieron en pocas horas
    • en la práctica, realizó tareas que serían imposibles para una persona
  • En particular:
    • la mayor parte de la implementación del wrapper D3D → WebGL estuvo a cargo de la IA

Resumen clave

  • No se trató de “volver a hacer el juego”
    sino de resolverlo conservando el código existente tal cual
  • Tecnologías clave:
    • WebAssembly
    • capa de traducción Direct3D → WebGL
  • Cambio clave:
    • gracias a la IA, portar grandes sistemas legacy se volvió una tarea realista
  • Implicación:
    • en adelante, la dificultad de portar juegos y software antiguos a la web podría caer de forma drástica

10 comentarios

 
beoks 2026-03-25

La IA también es impresionante, pero me parece que fue aún más importante que D3D9 estuviera bien separada como interfaz; si hubiera estado entrelazada con referencias directas, probablemente habría sido mucho más difícil.

 
minsuchae 2026-03-25

Ayer o anteayer vi un artículo de Inven, y resulta que lo resolvieron armando una capa de traducción de Direct3D.
Cuando lo probé, ni había pasado un minuto y me quedó muy fuerte la impresión de que la calidad visual no era muy buena, pero pensando que no era algo hecho de nuevo desde cero sino que básicamente lo dejaron igual pasando por una capa de traducción, creo que es entendible...

Eso sí, parece que el blog original lo van a manejar de una forma algo riesgosa. Deberían indicar que es una traducción o aclarar cuál es el original... da mucho la sensación de que se hacen pasar por el autor. Incluso en los comentarios ya les señalaron ese punto, pero no han respondido.
(Para empezar, todos los textos de referencia del blog original están del lado del japonés).

Otra cosa que no cuadra es que, tomando como referencia los precios en wones, no existe un plan de Antigravity de 3,000 wones al mes. En las imágenes también aparece todo en japonés. Incluso en algunas imágenes hay texto en inglés.
Si fuera así, da la impresión de que habría sido mejor traducirlo al coreano desde el principio y publicarlo así.

 
vndk2234 2026-03-25

Dices que pagaste 5x, pero en la captura sale 20x; aunque bueno, también podría ser alguien que vive en Japón...

 
kentakang 2026-03-25

Viéndolo, hasta da la impresión de que podría ser la misma persona.

La frase que aparece al entrar a sigr.io también es una letra de una canción de aespa,
y el nombre del proyecto Gunz también es Whiplash Gunz, que es el título de una canción de aespa,
y como hasta el handle de velog mantiene la consistencia con aespa, da la impresión de que realmente le gusta aespa, así que también me hace pensar: ¿habrá usado traducción automática y lo habrá subido a velog él mismo?

 
324ing 2026-03-27

No fue él quien lo hizo.

 
wedding 2026-03-25

Pero salió la versión de Steam de GunZ... me pregunto si no habrá problemas legales.

 
ifmkl 2026-03-25

Vaya, esto sí que es increíble.

 
simryang 2026-03-25

Es un juego que me encantaba muchísimo, así que gracias por revivirlo.
Pero no hay nadie conectado.

 
unknown 2026-03-25

Parece que es porque incluso el servidor corre dentro del navegador. Si quieren jugar entre varias personas, parece que quienes vayan a jugar tienen que intercambiar información entre ustedes y conectarse entre sí por WebSocket.

 
jtpark03 2026-03-25

Impresionante, parece un verdadero aprovechamiento de la IA.