🎮 UnityDocs

Exportar a WebGL: jugar en el navegador

Publica tu juego para que se juegue en el navegador sin instalar: cómo funciona la build WebGL, sus limitaciones reales (memoria, hilos, sin sistema de archivos), la compresión, y cómo subirlo a itch.io o tu propia web.

📄 ArtículoIntermedio✅ RevisadoUnity 6.0 LTSActualizado 2026-07-15
DificultadConceptual Código Matemáticas
Tiempo📖 Lectura 8 min

Jugar sin instalar nada#

La build WebGL convierte tu juego en algo que corre dentro del navegador: el jugador entra a una URL y juega, sin descargar ni instalar. Es perfecta para demos, game jams, portfolios y portales como itch.io. Pero tiene reglas propias que conviene conocer antes de contar con ella.

Cómo funciona#

Unity compila tu código C# a WebAssembly (wasm) y renderiza mediante la API WebGL del navegador sobre un elemento <canvas>. El resultado de exportar es una carpeta con:

  • index.html (la página que lo aloja)
  • una carpeta Build/ con el wasm, el código y los datos
  • una carpeta TemplateData/ (estilos e imágenes de la plantilla)

Todo eso, subido a un servidor web, es tu juego jugable.

Las limitaciones (léelas antes de empezar)#

WebGL no es 'tu juego de PC en la web'

El navegador es un entorno restringido. No cuentes con que todo funcione igual que en la build de escritorio. Las limitaciones más importantes:

  • Memoria limitada: la pestaña del navegador tiene un presupuesto de RAM mucho menor. Juegos grandes se quedan sin memoria. Optimiza como si fuera móvil.
  • Sin acceso al sistema de archivos: no puedes leer/escribir archivos con System.IO como en escritorio. El guardado va por PlayerPrefs (que en web usa el IndexedDB del navegador) o soluciones propias; File.WriteAllText no sirve igual.
  • Multihilo restringido: el soporte de hilos es limitado; muchas cosas corren en un solo hilo. Cuidado con lo que dependa de threading.
  • Sin networking directo por sockets: solo protocolos web (WebSockets, HTTP). El multijugador con UDP directo no funciona; necesita relays/WebSockets.
  • Tiempo de carga: el jugador descarga el juego entero antes de jugar. Cada MB cuenta.
  • Audio y algunos shaders pueden comportarse distinto.

Compresión: clave para la carga#

Como el jugador descarga todo, el tamaño manda. En Player Settings → Publishing Settings eliges la compresión:

  • Brotli: la mejor compresión (archivos más pequeños), recomendada para producción. Requiere que el servidor envíe las cabeceras correctas.
  • Gzip: alternativa más compatible si no controlas el servidor.
itch.io lo pone fácil

Si subes a itch.io, marca el proyecto como HTML5, sube el ZIP de la build y selecciona index.html como archivo principal. itch.io sirve la compresión correctamente y te da una página lista para jugar. Es, con diferencia, la vía más rápida para publicar un WebGL sin pelearte con la configuración del servidor.

En tu propio servidor, si usas Brotli/Gzip tendrás que configurar las cabeceras Content-Encoding o algunos navegadores no cargarán la build. Es el fallo típico de "me funciona en local pero no al subirlo".

Ajustes que importan#

  • Resolución del canvas y si se adapta a la ventana.
  • Exception support: bájalo (a Explicitly Thrown Exceptions Only o ninguno) para builds más pequeñas y rápidas en producción.
  • Strip Engine Code activado para reducir tamaño.
  • Texturas y audio comprimidos y a resolución sensata: es lo que más pesa.

Comunicarse con la página (JS ↔ Unity)#

A veces necesitas que el juego hable con la web que lo aloja (o al revés). Unity permite llamar a JavaScript desde C# y viceversa mediante plugins .jslib y SendMessage. Útil para integrar el juego con tu portfolio, guardar en un backend, o adaptar la web alrededor del canvas.

Errores frecuentes#

  • Esperar que un juego de PC pesado funcione igual en WebGL (memoria/rendimiento).
  • Usar System.IO para guardar (no funciona; usa PlayerPrefs u otra vía web).
  • Subir una build Brotli a un servidor sin las cabeceras y que no cargue.
  • No comprimir texturas/audio y que la carga tarde una eternidad.
  • Contar con multijugador por UDP directo (solo WebSockets/HTTP en navegador).

Ponte a prueba#

📝 Pon a prueba lo aprendido

Resumen#

WebGL hace tu juego jugable en el navegador (compila a WebAssembly + canvas), ideal para demos, jams y portfolios. Pero es un entorno restringido: memoria limitada, sin sistema de archivos (guarda con PlayerPrefs), multihilo y networking limitados (solo WebSockets/HTTP). Optimiza como en móvil, comprime con Brotli/Gzip (configurando las cabeceras del servidor) y, para lo rápido, sube a itch.io, que gestiona todo por ti. Parte del proceso general de exportar.

Fuentes y para profundizar