Haciendo juegos web “de tamaño bocado” con GameSnacks

Rate this content
Bookmark

Una de las grandes fortalezas de los juegos en la web es lo fácilmente accesibles que pueden ser. Sin embargo, esta clave ventaja a menudo se ve anulada por grandes activos y largos tiempos de carga, especialmente en conexiones móviles lentas. En esta charla, Alex Hawker de GameSnacks de Google ilustrará cómo están abordando este problema y algunos aprendizajes clave que el equipo encontró mientras optimizaba juegos de terceros y diseñaba su propio motor de juego ultra ligero.

FAQ

GameSnacks es un equipo en Google dedicado a hacer crecer el ecosistema de juegos en la web, con el objetivo de hacer los juegos universalmente accesibles y útiles. Se enfocan en la optimización de juegos y sus tamaños de archivo para mejorar la accesibilidad, especialmente en conexiones lentas de internet.

Optimizar el tamaño de los archivos es crucial porque mejora la accesibilidad y la experiencia del usuario, especialmente en áreas con conexiones de internet lentas. Un juego de menor tamaño puede cargar más rápido, reduciendo el tiempo de espera y la tasa de abandono de los usuarios.

Una técnica común es el uso de gzip, que comprime los archivos de juego como código y configuraciones, reduciendo su tamaño en aproximadamente un 75%. Sin embargo, solo es efectivo en archivos sin comprimir y debe ser habilitado en el servidor.

La carga perezosa permite cargar solo el contenido necesario en el momento, lo que acelera el tiempo de carga inicial del juego y reduce la descarga promedio requerida. Sin embargo, requiere una planificación cuidadosa y puede no ser útil en aplicaciones integradas como Cordova o Electron.

Un juego web típico está compuesto principalmente por archivos JavaScript, visuales y audio. En un estudio, el JavaScript representaba el 20% del tamaño total del juego, mientras que los visuales y el audio combinados representaban el 43%.

Los formatos procedimentales, como SVG y MIDI, almacenan instrucciones para generar datos en tiempo de ejecución en lugar de los datos mismos. Aunque pueden tener un alto costo de rendimiento, suelen ser más pequeños y personalizables, permitiendo optimizaciones significativas en tamaño y flexibilidad.

Alex Hawker
Alex Hawker
33 min
07 Apr, 2022

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Bienvenidos a la creación de juegos de tamaño bocado con GameSnacks, una plataforma que se enfoca en optimizar los tamaños de los juegos para una fácil accesibilidad en la web. Técnicas como la carga perezosa, la colocación de scripts y la optimización de código y arte pueden mejorar enormemente el rendimiento del juego. Elegir los formatos de archivo correctos, reducir el tamaño del juego y utilizar motores de juego o herramientas personalizadas son consideraciones importantes. Priorizar el tamaño del archivo, probar las conexiones a Internet y utilizar herramientas de prueba para una simulación precisa puede ayudar a atraer a más usuarios y mejorar la retención y el alcance del juego.

1. Introducción a GameSnacks y Optimización de Juegos

Short description:

Bienvenidos a la creación de juegos de tamaño reducido con GameSnacks. La web tiene la ventaja de la fácil accesibilidad para los juegos, pero los tamaños de archivo grandes obstaculizan esto. GameSnacks está trabajando en la optimización de los tamaños de los juegos. El uso de la codificación gzip y la rápida visualización de elementos visuales mejoran la experiencia del usuario.

Hola, y bienvenidos a todos, a la creación de juegos de tamaño reducido con GameSnacks. Soy Alex Hawker, ingeniero de software en el equipo de GameSnacks en Google. Mi principal enfoque ha sido una variedad de proyectos relacionados con la infraestructura y distribución de juegos en la web, muchos de los cuales giran en torno a este mismo desafío de optimizar el tamaño de los archivos de los juegos web.

Ahora, podrías estar pensando, ¿por qué juegos de tamaño reducido? ¿No son suficientemente buenas las velocidades de internet en estos días? Bueno, una de las principales ventajas de la web como plataforma para los juegos es su capacidad para la viralidad, perfectamente expresada en ejemplos desde los juegos io hasta el reciente éxito, Wordle. Pero esta ventaja de fácil accesibilidad se ve severamente negada cuando los tamaños de los archivos se disparan demasiado. A pesar de avances como el 5G, gran parte del mundo todavía experimenta frecuentemente conexiones más lentas, desde Australia, hasta India, hasta aquí mismo en los EE.UU. Sé que ciertamente he experimentado muchas veces en lugares donde la velocidad de internet de mi teléfono de repente se ralentiza a un ritmo de tortuga. Y en momentos como estos, cuando incluso un juego de solo 10 megabytes puede tardar más de 3 minutos en descargarse, cada byte cuenta. Nadie quiere ver esa pantalla en blanco a la izquierda, quieren jugar algunos juegos.

Bueno, esto es una de las cosas en las que estamos trabajando aquí en Gamesnacks. Gamesnacks es un nuevo equipo en Google dedicado a hacer crecer el ecosistema de juegos en la web para ayudar a hacer los juegos universalmente accesibles y útiles. Como parte de este esfuerzo, hemos experimentado mucho con la optimización de los juegos y sus tamaños de archivo. Incluso hemos llegado a construir un motor de juegos experimental para ver hasta dónde se pueden llevar estas optimizaciones, y cuán valiosos pueden ser los diferentes tipos. Estoy aquí hoy para compartir con ustedes los aspectos más destacados de estos aprendizajes. Comenzaremos con algunas consideraciones generales que se aplican a la optimización del tamaño del juego y luego nos sumergiremos en optimizaciones específicas para diferentes tipos de archivos.

En primer lugar, el uso de la codificación gzip en los archivos de juego es un primer paso fácil para mejorar el ahorro de archivos. En promedio, reduce el tamaño de los archivos de código y otros archivos aplicables en un 75%. Para aquellos que no están familiarizados, gzip es esencialmente un equivalente de código abierto a zip. Los navegadores de hoy en día soportan que los servidores les envíen estos archivos comprimidos con gzip, lo que nos permite reducir cuántos bytes necesitamos enviar. Sin embargo, debido a la forma en que funciona gzip, no funciona bien en todos los archivos. En su lugar, deberías usarlo solo en archivos sin comprimir como código, configuraciones y formatos específicos como svg o midi. A diferencia de otros consejos, el uso de gzip no es un cambio que se haga en el propio proyecto del juego, sino que tiene que ser habilitado en el servidor. Afortunadamente, esto suele ser bastante sencillo. Por ejemplo, en Google Cloud Storage, puedes simplemente añadir esta bandera Zed con la lista de extensiones que quieres comprimir con gzip.

A continuación, tenemos bueno, esto es como una pausa incómoda. No es realmente muy agradable, por eso es tan importante conseguir que se muestre algún tipo de visual a los usuarios rápidamente. Esto es crítico, porque las investigaciones muestran que solo el hecho de que el tiempo de carga de la página pase de 1 segundo a 5 segundos aumenta la tasa de rebote de la página en un 90%. Así que mostrar al usuario algún visual idealmente animado, ya sea una pantalla de inicio o una pantalla de carga, les asegura que las cosas no están rotas, y les da algo en lo que centrarse para hacer que la carga se sienta más rápida para el usuario. Así que aunque esto no mejorará los tiempos totales de carga, o probablemente incluso los empeorará ligeramente, es en general una gran victoria, ya que al final del día, lo que importa es la percepción del usuario, no las métricas crudas. En la misma línea, la carga perezosa de contenido puede ser una gran victoria.

2. Carga perezosa y tamaño de JavaScript

Short description:

La carga perezosa es una técnica donde solo se carga el contenido que se necesita en el momento actual. Esto se puede hacer a un nivel más detallado, cargando activos al vuelo y utilizando marcadores de posición. Ayuda a que el usuario entre en el juego más rápido y reduce la descarga promedio requerida. JavaScript es relativamente pequeño en comparación con los visuales y el audio en términos de tamaño de archivo, pero puede ser más pesado de lo que parece.

Esto es cuando, en lugar de cargar todo con anticipación, solo se carga el contenido que se necesita en el momento actual. Entonces, si tuviéramos este juego espacial con cuatro mundos, tal vez solo cargaríamos las mecánicas de juego centrales y los activos del nivel de la nave espacial primero, y aplazaríamos el resto para ser cargado más tarde cuando el jugador llegue a él. También puedes hacer esto a un nivel más detallado, donde los activos individuales se cargan al vuelo y se representan con marcadores de posición mientras tanto.

Esta es una técnica popular en Unreal Engine con la representación de versiones de baja resolución de texturas como un marcador de posición para speed up los tiempos de carga. Con estas técnicas, aunque el tamaño total del juego almacenado en un servidor no disminuye, realmente ayuda a que el usuario entre en el juego mucho más rápido y a menudo reduce la descarga promedio requerida. Sin embargo, hay algunas compensaciones, ya que esto requiere una planificación cuidadosa y code para manejar la división del juego en segmentos autónomos, lo cual es más fácil para algunos tipos de juegos y algunos motores de juego que para otros. Además, si estás planeando incrustar este juego en el dispositivo del usuario, por ejemplo con algo como Cordova o Electron, la carga perezosa no te va a dar muchas grandes victorias ya que el usuario necesita la cosa entera de todos modos.

Ahora que hemos cubierto algunos consejos generales, vamos a profundizar en algunos contribuyentes clave del tamaño del archivo. He desglosado un juego web típico de nuestro catálogo en lo que compone su tamaño de archivo GZIPed, y podemos ver claramente tres categorías principales emergen: JavaScript, visuales, y Audio. Comencemos con JavaScript. Entonces, JavaScript es relativamente pequeño en comparación con los visuales y el Audio. Nuestro juego representativo, gracias en parte a GZIP, tenía JavaScript componiendo solo el 20% de su tamaño total, en comparación con el 43% de los visuales y el Audio. Sin embargo, aunque su tamaño de archivo bruto es más pequeño, JavaScript puede ser mucho más pesado de lo que parece a primera vista.

QnA

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Optimización de juegos HTML5: 10 años de aprendizaje
JS GameDev Summit 2022JS GameDev Summit 2022
33 min
Optimización de juegos HTML5: 10 años de aprendizaje
Top Content
El motor de juegos de código abierto PlayCanvas está construido específicamente para el navegador, incorporando 10 años de aprendizaje sobre optimización. En esta charla, descubrirás la salsa secreta que permite a PlayCanvas generar juegos con tiempos de carga increíblemente rápidos y tasas de fotogramas sólidas como una roca.
Construyendo Experimentos Divertidos con WebXR & Babylon.js
JS GameDev Summit 2022JS GameDev Summit 2022
33 min
Construyendo Experimentos Divertidos con WebXR & Babylon.js
Top Content
Durante esta sesión, veremos un par de demostraciones de lo que puedes hacer usando WebXR, con Babylon.js. Desde experimentos de audio en VR, hasta juegos casuales en VR en una máquina de arcade hasta un uso más serio para crear nuevas formas de colaboración usando AR o VR, deberías tener una comprensión bastante buena de lo que puedes hacer hoy.
Consulta también el artículo para ver el contenido completo, incluyendo ejemplos de código: artículo. 
Creando juegos increíbles con LittleJS
JS GameDev Summit 2022JS GameDev Summit 2022
34 min
Creando juegos increíbles con LittleJS
LittleJS es un motor de juegos súper ligero que es fácil de usar y extremadamente rápido. El desarrollador hablará sobre por qué lo creó, qué hace y cómo puedes usarlo para crear tus propios juegos. La charla incluirá una demostración de cómo construir un pequeño juego desde cero con LittleJS.
Cómo no construir un videojuego
React Summit 2023React Summit 2023
32 min
Cómo no construir un videojuego
En esta charla profundizaremos en el arte de crear algo significativo y gratificante. A través de la mirada de mi propio viaje de redescubrir mi pasión por la programación y construir un videojuego desde cero con JavaScript y React, exploraremos los compromisos entre soluciones fáciles y rendimiento rápido. Obtendrás información valiosa sobre prototipado rápido, infraestructura de pruebas y una variedad de trucos de CSS que se pueden aplicar tanto al desarrollo de juegos como a tu trabajo diario.
¡Mejora el rendimiento de tus juegos WebGL Unity!
JS GameDev Summit 2023JS GameDev Summit 2023
7 min
¡Mejora el rendimiento de tus juegos WebGL Unity!
Unity, cuando se implementa en la web, enfrenta tres desafíos críticos: el tamaño de la compilación, el uso de memoria y el rendimiento general. Esta charla profundiza en técnicas avanzadas de optimización para ayudarte a abordar cada uno de estos problemas. Los asistentes obtendrán información sobre:
- Estrategias efectivas para optimizar texturas, audio y modelos.- Un análisis detallado de nuestra experimentación con ASTC en Unity, arrojando luz sobre los resultados inesperados a pesar de las afirmaciones de Unity.- Una guía completa de la herramienta de perfilado de memoria de Unity y sus implicaciones.- Una exploración de configuraciones de Unity menos conocidas que siguen siendo subutilizadas por muchos desarrolladores.
Además, presentaremos nuestra herramienta propietaria diseñada específicamente para la optimización de Unity. También mostraremos el panel de control para desarrolladores de CrazyGames, nuestra plataforma que permite a los desarrolladores monitorear y mejorar el rendimiento de sus juegos web de manera fluida.
Únete a nosotros para equiparte con las últimas estrategias y herramientas para elevar tus proyectos de juegos web de Unity.
Abrazando WebGPU y WebXR con Three.js
JSNation 2024JSNation 2024
27 min
Abrazando WebGPU y WebXR con Three.js
En el panorama en constante evolución de las tecnologías web, la introducción de WebGPU y WebXR representa un gran avance, prometiendo redefinir los límites de lo que es posible en las experiencias web en 3D. Esta charla se sumerge en el corazón de estas nuevas tecnologías, guiada por la biblioteca Three.js.
Comenzamos explorando WebGPU, una API de gráficos de próxima generación que ofrece un rendimiento y eficiencia mejorados para renderizar gráficos 3D directamente en el navegador. Demostraremos cómo Three.js se está adaptando para aprovechar todo su potencial, desbloqueando oportunidades sin precedentes para que los desarrolladores creen experiencias interactivas visualmente impresionantes.
En la transición al ámbito inmersivo, nos adentramos en WebXR, una tecnología que abre la puerta a experiencias de realidad virtual y realidad aumentada directamente desde la web. Mostraremos cómo Three.js permite a los creadores construir experiencias inmersivas.

Workshops on related topic

Crea un Juego Con PlayCanvas en 2 Horas
JSNation 2023JSNation 2023
116 min
Crea un Juego Con PlayCanvas en 2 Horas
Top Content
Featured WorkshopFree
Steven Yau
Steven Yau
En esta masterclass, construiremos un juego utilizando el motor WebGL de PlayCanvas desde el principio hasta el final. Desde el desarrollo hasta la publicación, cubriremos las características más cruciales como la escritura de scripts, la creación de UI y mucho más.
Tabla de contenido:- Introducción- Introducción a PlayCanvas- Lo que vamos a construir- Agregando un modelo de personaje y animación- Haciendo que el personaje se mueva con scripts- 'Falsa' carrera- Agregando obstáculos- Detectando colisiones- Agregando un contador de puntuación- Fin del juego y reinicio- ¡Resumen!- Preguntas
Nivel de la masterclassSe recomienda familiaridad con los motores de juegos y los aspectos del desarrollo de juegos, pero no es obligatorio.
PlayCanvas de principio a fin: la versión rápida
JS GameDev Summit 2022JS GameDev Summit 2022
121 min
PlayCanvas de principio a fin: la versión rápida
Top Content
WorkshopFree
João Ruschel
João Ruschel
En esta masterclass, construiremos un juego completo utilizando el motor PlayCanvas mientras aprendemos las mejores prácticas para la gestión de proyectos. Desde el desarrollo hasta la publicación, cubriremos las características más cruciales como la gestión de activos, scripting, audio, depuración, y mucho más.
Introducción a WebXR con Babylon.js
JS GameDev Summit 2022JS GameDev Summit 2022
86 min
Introducción a WebXR con Babylon.js
Workshop
Gustavo Cordido
Gustavo Cordido
En este masterclass, te presentaremos los conceptos básicos de la construcción de experiencias de Realidad Mixta con WebXR y Babylon.js.
Aprenderás lo siguiente:- Cómo agregar objetos de malla 3D y botones a una escena- Cómo utilizar texturas procedurales- Cómo agregar acciones a objetos- Cómo aprovechar la experiencia predeterminada de Realidad Cruzada (XR)- Cómo agregar física a una escena
Para el primer proyecto en este masterclass, crearás una experiencia interactiva de Realidad Mixta que mostrará estadísticas de jugadores de baloncesto a fanáticos y entrenadores. Para el segundo proyecto en este masterclass, crearás una aplicación WebXR activada por voz utilizando Babylon.js y Azure Speech-to-Text. Luego, desplegarás la aplicación web utilizando el alojamiento de sitios web estáticos proporcionado por Azure Blob Storage.
Construyendo el Metaverso Interconectado y Traversable
JS GameDev Summit 2022JS GameDev Summit 2022
103 min
Construyendo el Metaverso Interconectado y Traversable
WorkshopFree
Avaer Kazmer
Avaer Kazmer
Basado en gran medida en Free Association en el Metaverso - Avaer @Exokit - M3, Avaer demostrará algunas de las formas en que los estándares abiertos permiten la travesía abierta y gratuita de usuarios y activos en todo el metaverso interconectado.