En la web, los juegos no están preinstalados, sino que se descargan en el momento de jugar. Por lo tanto, la experiencia de carga es una parte clave del éxito de tu juego. Durante esta charla, Kasper Mol de Poki te presentará el concepto de Conversión a Jugar y qué métodos están disponibles para lograrlo.
This talk has been presented at JS GameDev Summit 2022, check out the latest edition of this JavaScript Conference.
FAQ
Pokey es una plataforma de juegos web que cuenta con aproximadamente 30 millones de usuarios activos mensuales.
La Conversión para Jugar es una métrica definida para medir el porcentaje de usuarios que visitan la página de un juego y efectivamente terminan jugando.
Algunas técnicas incluyen elegir el motor adecuado, optimizar los activos, hacer la carga interesante y cargar solo lo necesario.
El motor de juego puede afectar el tamaño de los archivos y la velocidad de carga del juego, lo que a su vez puede influir en la tasa de conversión para jugar.
Kasper ha desarrollado dos juegos web personales llamados Supernova y Joyrider.
Optimizar los activos es crucial para reducir el tiempo de carga y mejorar la experiencia del usuario, lo cual es esencial dado que los juegos web no están preinstalados y se descargan al momento de jugar.
Kasper recomienda elegir un motor que se ajuste al equipo y sus ambiciones, y sugiere mantenerse lo más cerca posible de JavaScript para evitar sobrecargas adicionales.
La reconstrucción de Stickman Hook en una versión nativa HTML5 aumentó la tasa de Conversión para Jugar del 35% al 81%, mejorando significativamente el rendimiento y la aceptación del juego.
La charla analiza el arte de cargar en los juegos web y su impacto en el éxito. Proporciona consejos para mejorar la conversión a jugar, optimizar la carga y crear un camino claro para jugar. Se muestran ejemplos de juegos que mejoraron la carga. Se destaca la importancia del tamaño del archivo y el diseño de juegos teniéndolo en cuenta. El orador comparte desafíos en matemáticas y programación, así como su experiencia con juegos WebXR y blockchain. También se discute la gestión del tiempo para el desarrollo de juegos independientes.
Hoy quiero hablarles sobre el arte de cargar y sus impactos en la creación de un juego web. Ser consciente de esto desde el inicio del desarrollo de tu juego puede mejorar en gran medida tus posibilidades de éxito.
Hola a todos. Es bueno estar aquí. Creo que esta es una de las primeras conferencias dedicadas específicamente a los juegos web. Así que sentí que realmente necesitaba estar aquí, porque eso es algo en lo que he estado dedicando la mayor parte de mi vida profesional. Así que hoy quiero hablarles sobre el arte de cargar y los impactos que esto tiene en lo que consideramos una de las cosas más importantes a tener en cuenta cuando quieres crear un juego web. Y ser consciente de esto y tenerlo en cuenta desde el inicio del desarrollo de tus juegos mejorará en gran medida tus posibilidades de éxito. Así que cubriré una amplia gama de temas. En lugar de profundizar en un solo aspecto.
2. De Desarrollador Indie a Líder Técnico en Pokey
Short description:
Hoy quiero hablarles sobre el arte de cargar y sus impactos en la creación de un juego web. Ser consciente de esto desde el inicio del desarrollo de tu juego puede mejorar en gran medida tus posibilidades de éxito.
profundamente, mi objetivo principalmente es crear conciencia y hacer que te importe. Así que sí, empecemos. Primero de todo, permíteme presentarme. Mi nombre es Kasper. Vivo en los Países Bajos, en Ámsterdam, y soy líder técnico en Pokey, donde he estado trabajando durante varios años. En total, tengo alrededor de ocho años de experiencia en la industria de juegos web. Y además de eso, también soy desarrollador independiente de juegos web. Los dos juegos que puedes ver aquí a la izquierda, Supernova, a la derecha, Joyrider, son dos de mis proyectos personales. Estoy muy orgulloso de ellos. Juega a ellos si alguna vez tienes la oportunidad. También, un poco sobre Pokey, en caso de que aún no nos conozcas. Pokey es una plataforma de juegos web. Puedes ver nuestra página de inicio aquí. Tenemos alrededor de 30 millones de usuarios activos mensuales. Y estamos tratando de construir los mejores parques de juegos en línea y establecer nuevos estándares para los juegos web. Sin embargo, creo que estamos más orgullosos de nuestras relaciones directas con alrededor de 300 desarrolladores de juegos, desde grandes estudios establecidos hasta equipos de una sola persona que han construido su negocio desde cero en nuestra plataforma. Las cosas que hacemos van desde llevar éxitos móviles como Subway Surfers y Stickman Hoops a la web, hasta revivir clásicos de Flash en HTML5 como Bubble Trouble, la Colección Nitrome y Impossible Quiz, así como hacer posibles nuevas producciones originales de juegos web como Plumgy Rockets o Narrow One. Visítanos cuando tengas tiempo en tu computadora o dispositivo móvil en poki.com. Entonces, como mencioné, esta charla trata sobre la conversión para jugar, por lo que deberías saber qué es y por qué deberías preocuparte por ello. Así que empecemos diciendo que por supuesto, la web está bajo demanda. Los juegos en la web son un poco diferentes de los juegos en otras plataformas porque no están preinstalados. Se descargan en el momento de jugar. Eso significa que los usuarios ven algo que les gusta, hacen clic y en ese momento tienen que descargar el juego antes de comenzar a jugar. Esta es una barrera inicial para que los jugadores disfruten o incluso vuelvan a intentarlo y eso lo hace muy importante. La experiencia de carga es realmente clave. Si se hace mal o se ignora, tendrá consecuencias bastante importantes. Hemos visto juegos en los que solo el 20% de las personas interesadas terminarían jugando, lo cual es una cantidad muy pequeña y significa que estás perdiendo muchos jugadores antes de que siquiera lleguen a lo que probablemente estés muy orgulloso, que es tu juego.
Entonces, Conversión para Jugar. Básicamente es el nombre de la métrica que hemos definido para hacer un seguimiento de esto específicamente. Puedes ver aquí en el flujo cómo funciona. Así que a la izquierda,
3. Mejorando la Conversión para Jugar en Juegos Web
Short description:
Para mejorar la conversión para jugar en tu juego web, considera elegir el motor adecuado, optimizar los activos, hacer que la carga sea interesante, cargar solo lo necesario y mantener el camino hacia el juego claro. Al elegir un motor, considera el tamaño de tu equipo y su experiencia técnica. Se recomienda mantenerse cerca de JavaScript para minimizar la sobrecarga. Prueba la velocidad de carga del motor sin ningún código de juego.
Cuando un jugador ve la miniatura de tu juego. Hacen clic en ella. Están interesados. Luego abren la página de tu juego. Comienzan a cargar tu juego. Luego tienen que pasar por los menús de tu juego y finalmente comienzan a jugar tu juego. Entonces, lo que definimos como Conversión para Jugar es este momento desde la vista de la página del juego hasta el juego en sí. El porcentaje de usuarios que visitan tu juego y realmente terminan jugando. Para trabajar en esto, hay algunas cosas que puedes hacer. Así que lo que quiero hacer es repasar las más importantes. Y aquí tienes una primera descripción rápida. Por cierto, el juego de la derecha, Plungy Ball, es un lanzamiento muy reciente de un amigo nuestro, BlumG, realmente increíble. Las cosas en las que deberías pensar son, en primer lugar, elegir el motor adecuado. Además, debes optimizar tus activos. Debes hacer que la carga sea interesante. Debes cargar solo lo necesario. Y debes mantener el camino hacia el juego claro.
Comencemos eligiendo el motor adecuado. Es un tema importante por sí solo. Y en realidad hay más personas hablando de esto durante la conferencia. Así que recomendaría escuchar a más personas. Pero principalmente voy a hablar desde la perspectiva de la conversión para jugar. En primer lugar, siempre importa elegir algo que se ajuste a tu equipo y ambiciones. Si tienes un equipo más grande, probablemente quieras un motor diferente al de alguien que trabaja solo. Si tienes un equipo técnico, probablemente quieras un motor diferente al de un equipo de artistas. Por lo tanto, esto siempre será diferente. Afortunadamente, ahora hay muchas buenas opciones en el espacio de HTML5. Pero lo que recomendaría es tratar de mantenerse lo más cerca posible de JavaScript. Si tu código tiene que ser convertido, compilado, todas estas cosas, obviamente agregarán sobrecarga a tu juego, lo cual puede ser un problema. Algunas cosas que recomendaría probar es verificar qué tan grande es el motor sin ningún código de juego. Así que descarga el motor, crea un proyecto sin tu juego y mira qué hay. Mira qué tan grande es.
4. Optimización de la Carga y Hacerla Interesante
Short description:
Observa cuánto tiempo tarda en cargar. Verifica el control que tienes sobre la experiencia de carga. Ten en cuenta el tamaño de las bibliotecas de terceros. Optimiza los activos investigando las extensiones de archivo, comprimiendo los activos, utilizando hojas de sprites para imágenes y considerando fuentes de mapa de bits. Haz que la carga sea interesante aprovechando el tiempo de espera para establecer expectativas, emocionar a los jugadores y proporcionar visuales e información sobre el juego.
Observa cuánto tiempo tarda en cargar. Verifica el control que tienes sobre la experiencia de carga. Algunos motores te permiten cambiar todo. Otros motores impondrán sus propias barras de carga. Algunos motores tendrán múltiples barras de carga. Todo esto marca la diferencia, así que echa un buen vistazo.
Y finalmente, también debes tener en cuenta el tamaño de cualquier biblioteca de terceros que utilices. No es necesariamente específico del motor, pero si estás utilizando un motor de física de terceros gigante u otras cosas similares, debes ser consciente del peso que eso agrega a tu juego, porque cada kilobyte cuenta. Luego, optimiza tus activos. Probablemente sea la parte menos divertida, pero es importante. En general, asegúrate de investigar las extensiones de archivo y utilizar las correctas. PNG y JPEG son un buen ejemplo. Averigua cuál usar para cada imagen, porque eso marca la diferencia. También comprime todos tus activos, para que no necesites tus JPEG con una calidad del 120%, y para el audio, también recomendaría ponerlo en mono. Si tienes muchas imágenes, considera ponerlas en hojas de sprites. Ahora, los navegadores son un poco mejores para manejar muchas solicitudes paralelas, por lo que ya no es lo más importante, y dependiendo del motor, incluso renderizar imágenes por separado podría estar optimizado, pero una vez que tienes una gran cantidad de imágenes, realmente deberías agruparlas. Además, si estás utilizando fuentes personalizadas, considera utilizar fuentes de mapa de bits, y si no puedes, al menos deberías eliminar los caracteres que no necesitas del archivo.
Luego, haz que la carga sea interesante. No importa cuánto lo intentes, siempre tendrás alguna forma de pantalla de carga. Pero mientras las personas esperan, podrías aprovechar ese tiempo. Una cosa que las personas suelen subestimar es cuánto tiempo le llevará realmente a un usuario promedio cargar un juego. Por ejemplo, Poki es, como dije, una marca global. Por lo tanto, tenemos personas de todo el mundo, personas con conexiones a Internet más lentas que las tuyas o máquinas más lentas que las tuyas. Asegúrate de probar en máquinas más lentas y asegúrate de limitar tu conexión. Te sorprenderá cuánto tiempo las personas están mirando estas pantallas que has estado ignorando porque solo te llevan unos segundos. Entonces, mientras tienes este tiempo, asegúrate de usarlo correctamente. Establece las expectativas de cómo será el juego. Emociona a los jugadores mientras esperan. Muéstrales artes clave, capturas de pantalla, controles del juego, muéstrales cuán grande es el juego que están descargando.
5. Carga Eficiente y Ruta Clara para Jugar
Short description:
Asegúrate de utilizar el espacio de manera eficiente. Es importante cargar las cosas según sea necesario. Solo carga los activos cuando se necesiten. No descargues todos los activos a la vez. Transmite música para evitar bloquear la carga. Mantén la ruta clara para jugar. Evita pantallas y menús innecesarios. Lleva a los usuarios directamente al juego. Comprime y asegúrate de tener una buena cobertura de CDN.
Asegúrate de utilizar este espacio de manera eficiente. Otro aspecto importante es cargar las cosas según se necesiten. Esto depende mucho del juego y de lo que puedas hacer. Pero lo principal es que solo debes cargar las cosas cuando las necesites. Esto significa que si tu juego tiene, por ejemplo, 20 mapas o entornos diferentes, y cada uno tiene sus propios activos, su propia música, no necesitas descargarlos todos antes de que el jugador juegue el primer nivel.
En la imagen de la derecha, puedes ver un gif de Finch, y puedes observar que puedes acceder al menú principal rápidamente, aunque en segundo plano todavía se están cargando los modelos, las texturas, y demás. Y tan pronto como comiences a jugar, se cargará el mapa que necesitas, etc. Cualquier activo que necesites más adelante, puedes descargarlo durante el juego, puedes descargarlo durante los menús, especialmente la música. Normalmente, recomiendo a las personas que solo comiencen a descargar, que transmitan la música, para no bloquear la carga. Pero déjala transmitir y si alguien tiene una conexión rápida, tendrá la música tan pronto como comience a jugar. Para alguien con una conexión más lenta, ya pueden disfrutar del juego, pero la música comenzará un poco más tarde.
Y finalmente, mantén la ruta clara para jugar. Como mostré en la descripción general al principio, la conversión para jugar no solo se ve afectada por la carga del juego, sino también por los menús del juego. Así que ten en cuenta cuántas pantallas pones entre el inicio de tu juego y el comienzo del juego. No necesitas 3 pantallas de carga. Si pones pantallas de presentación o tienes una historia al comienzo de tu juego, eso puede ser agradable, pero asegúrate de que las personas puedan saltarlas fácilmente. Por supuesto, asegúrate de que el botón de jugar sea fácil de encontrar, no lo ocultes. Y uno de mis favoritos, como se ilustra en el gif de la derecha de Syncith, considera llevar a los usuarios que juegan por primera vez directamente al juego. Si están comenzando, ni siquiera saben qué van a jugar. Entonces, ¿por qué obligarlos a pasar por menús en los que no están interesados? Solo llévalos al tutorial, déjalos jugar. Y luego, si les gusta, pueden explorar las otras funciones más adelante. Además, solo como una nota adicional, navegar por tu juego sí marca la diferencia. Estamos en la web. Eso significa que debes navegar por tu juego a través de navegadores web. Aquí hay algunas cosas importantes, por ejemplo, comprimir de manera adecuada y tener una buena cobertura de CDN. Para un desarrollador individual que hace uno o dos juegos, no es muy fácil de hacer porque también es un conjunto de habilidades diferente. Pero afortunadamente, si trabajas con una plataforma, probablemente ellos se encarguen de eso por ti. Nosotros también lo hacemos. No tienes que preocuparte por esto. Así que eso fue mucha información.
6. Ejemplos de Mejoras en la Carga de Juegos
Short description:
Quiero mostrar dos ejemplos específicos de juegos que trabajaron en mejorar la carga y obtuvieron buenos resultados. El primer ejemplo es Apple Knights, un juego de plataformas de acción en 2D hecho en Unity. Optimizaron los activos, utilizaron paquetes de activos y eliminaron pantallas de menú innecesarias, lo que resultó en una mejora significativa en la jugabilidad. El segundo ejemplo es Stickman Hook, que cambió de Unity a nativational 5 utilizando Pixy.js y experimentó un gran aumento en la conversión para jugar.
Probablemente sea bueno detenerse un poco y explicar por qué todo esto es realmente importante. Y para hacer eso, quiero mostrar dos ejemplos específicos que trabajaron en este problema y lograron obtener buenos resultados.
Primero, Apple Knights. Apple Knights es el juego de Limitless LLC. Es un juego de plataformas de acción en 2D donde juegas como un caballero, comes manzanas y golpeas enemigos. Es un juego hecho en Unity, y es una exportación de Unity WebGL. Desde la perspectiva de jugar, no es un punto de partida ideal. Sin embargo, con el trabajo adecuado, aún se pueden obtener resultados razonables.
El estudio realmente trabajó muy duro y realizó algunas cosas clave. Repasando la lista de verificación nuevamente, trabajaron en cargar las cosas según se necesitan, optimizaron sus activos y mantuvieron el camino claro para jugar. En primer lugar, comenzaron a utilizar paquetes de activos de manera extensiva. Los paquetes de activos son una característica de Unity que te permite descargar tus activos más adelante como parte de las cargas iniciales. Ya tenían todos sus activos optimizados porque Unity es bastante bueno en eso, pero estaban utilizando muchas bibliotecas de terceros grandes que al final realmente no necesitaban, así que eliminaron la mayoría de ellas. Luego, finalmente, también eliminaron muchas pantallas de menú innecesarias, lo que hizo que el camino para jugar fuera mucho más claro. Eso los llevó de un juego que tenía, creo, 8 megabytes al inicio a un juego que está más cerca de los 30 megabytes, y con eso lograron mejorar su jugabilidad de interfaz del 74 por ciento al 64 por ciento, lo que básicamente significa que cada mil usuarios potenciales, 170 personas más están jugando su juego. Así que eso es increíble.
Ahora, lo que podrías estar pensando es, bueno, pero el 64 por ciento aún es un poco bajo, y en parte tienes razón. Para un juego de Unity, una vez más, es bastante bueno. Y pusieron mucho esfuerzo en eso. Pero como dije antes, mantenerse cerca de JavaScript es una buena idea, así que quiero mostrar el siguiente ejemplo para eso, que es Stickman. Stickman Hook es un juego de Mathbox. Ya fue un gran éxito en las tiendas de aplicaciones, y decidieron poner su juego también en la web. Después de estar en la web en Unity por un tiempo, hablamos y nos dimos cuenta de que el juego realmente se beneficiaría al hacer una reconstrucción. Y eso es lo que hicieron. Reconstruyeron el juego desde cero en nativational 5, utilizando Pixy.js, solo como una biblioteca gráfica. Y los resultados son realmente buenos. Como puedes ver, antes de las versiones de Unity, tenía una conversión para jugar del 35 por ciento. Y después de cambiar a versiones nativas con pixy, eso terminó en el 81 por ciento. Así que en mil usuarios potenciales, eso son 460 personas más jugando el juego. Lo cual es increíble.
7. El Impacto de los Usuarios Jugando un Juego
Short description:
El impacto de los usuarios jugando un juego puede ser mayor que solo el número de jugadores. Aquí tienes una lista de verificación para ayudarte a comenzar con tu juego web: elige el motor correcto, optimiza los activos, haz que la carga sea interesante, carga las cosas según sea necesario y mantén el camino claro para jugar. Si ya tienes un juego, estos consejos pueden ayudarte a mejorar. Estamos contratando y puedes jugar en pokey.com. Es genial ver que el 53% de los encuestados han desarrollado juegos web. Un buen objetivo de tamaño de archivo para tu juego es lo más pequeño posible.
Y además de eso, el hecho de que cambiaran a compilaciones nativas también les permitió tener un mejor soporte en la web móvil. Y además de eso, debido a que nuestros algoritmos de recomendación les gustan los juegos que se juegan, hay un efecto acumulativo aquí. Por lo tanto, el impacto real de la cantidad de usuarios que juegan su juego fue mucho mayor que solo este número aquí, dice.
Entonces, solo como un resumen rápido, aquí está la lista de verificación nuevamente. Asegúrate de elegir el motor correcto. Asegúrate de optimizar tus activos. Haz que la carga sea interesante. Carga las cosas según sea necesario y mantén el camino claro para jugar. Espero que esto te ayude a tener un buen comienzo en tu juego web. Y si ya tienes uno, tal vez esto te ayude a mejorar. Gracias por escuchar.
Sí, ven y juega en pokey.com o si tienes un juego, envíalo a nosotros. Y también estamos contratando. Gracias. Sí, has preguntado, ¿has desarrollado juegos web antes? Y el 53% ha respondido que sí. ¿Qué opinas al respecto? Eso es genial. Estaba un poco inseguro si tendríamos principalmente desarrolladores web como desarrolladores de JavaScript o también desarrolladores de juegos web aquí. Así que es bueno ver realmente a muchos desarrolladores de juegos. Eso es agradable. Sí, en realidad es muy agradable. No pensé que tanta gente hubiera desarrollado juegos para la web antes. No somos muchos en general. Así que sí. De hecho, antes de la cumbre, pensé que estaba solo en el mundo. Así que es bueno ver a tanta gente como 8000 personas sintonizando.
Tenemos algunas preguntas para ti. La primera es, ¿qué crees que es un buen objetivo de tamaño de archivo para mi juego? Esa es una buena pregunta. Por supuesto, mi respuesta favorita sería lo más pequeño posible. Cada megabyte cuenta. Así que realmente lo más pequeño que puedas conseguirlo.
8. Choosing Game Engines and Getting Started
Short description:
Si puedes lograr estar por debajo de cinco, estás haciendo un trabajo increíble. Y si estás por debajo de diez, estás haciendo un buen trabajo. Hasta ahora he hecho dos juegos y estoy trabajando en el tercero. Para el primero, solo usé Tree.js. Pero luego, para el segundo juego, el juego de carreras en 2D, cambié a Pixi para los gráficos con Box2D. Me gusta estar muy cerca del código. Es mejor si estás empezando en el desarrollo de juegos porque puedes aprender realmente los conceptos básicos de cómo funcionan los juegos, la física y cosas así. Hay mucha matemática involucrada.
Pero obviamente esto va a variar para cada juego y para cada motor. Así que diría que si puedes lograr estar por debajo de cinco, estás haciendo un trabajo increíble. Y si estás por debajo de diez, estás haciendo un buen trabajo. Estos son probablemente los objetivos que te recomendaría. Pero cada pequeña mejora que puedas hacer, es buena.
Sí, entiendo. Sé a lo que te refieres. Otra pregunta es, ¿qué motor de juegos usas para tus propios proyectos? Hasta ahora he hecho dos juegos y estoy trabajando en el tercero. Para el primero, solo usé Tree.js. Así que más bien es una biblioteca que un motor de juegos en sí. Hice ese juego con la idea de simplemente juntar un montón de código hasta que funcione. No pensé mucho en la arquitectura y esas cosas. Pero eso me ayudó a lograr algo porque mi objetivo era simplemente terminar un juego, lo cual es más difícil de lo que parece si no lo has hecho antes.
Pero luego, para el segundo juego, el juego de carreras en 2D, cambié a Pixi para los gráficos con Box2D. Así que tampoco es uno de los motores que mencioné en las diapositivas. También está más cerca del código. Y construí, escribí mi propio tipo de marco, podrías decir, sobre RxJS, que puede ser familiar para algunas personas más relacionadas con la web. Básicamente, es una biblioteca de transmisiones. Y ahora lo estoy usando. Para mí, la razón principal es porque me gusta estar muy cerca del código. Me gusta tener todo el control sin tener que sumergirme en cosas específicas del motor, lo cual es mucho más lento, pero si te gusta, está bien. Pero si no te gusta, no lo recomendaría. Elegiría cualquiera de los otros motores que mencioné en las diapositivas.
Sí, exactamente. De hecho, es mejor si estás empezando en el desarrollo de juegos porque puedes aprender realmente los conceptos básicos de cómo funcionan los juegos, la física y cosas así. A mí también me gusta eso. Cuando estaba empezando a aprender, leía mucho sobre matemáticas y cosas así para descubrir las colisiones, las fórmulas y cosas así, y conocer el desarrollo de juegos en sí, cómo funcionaría.
Sí, creo que eso también fue lo que más me sorprendió del desarrollo de juegos, viniendo de un trasfondo de desarrollo web. Hay mucha matemática, mucha matemática.
9. Challenges in Math and Coding
Short description:
Hubo algunas veces en las que recuerdo que escribí como tres o cuatro páginas en un cuaderno para resolver alguna ecuación. Luego le pregunté a alguien porque estaba completamente atascado, y luego me dijeron que había una fórmula súper simple. Todo el mundo la conoce, solo úsala. Y yo estaba como, ah.
Sí, es mucha matemática. Sí, debería ir a mi padre por eso. Así que no sabría mucho. Así que volvería a mi padre y le preguntaría algunas cosas de matemáticas, y él me las explicaría, y yo las codificaría. Y fue realmente increíble. Eso es inteligente. Hubo algunas veces en las que recuerdo que escribí como tres o cuatro páginas en un cuaderno para resolver alguna ecuación. Luego le pregunté a alguien porque estaba completamente atascado, y luego me dijeron que había una fórmula súper simple. Todo el mundo la conoce, solo úsala. Y yo estaba como, ah.
QnA
WebXR Games, Blockchain, and Reducing Game Size
Short description:
Tuve una experiencia similar con los juegos de WebXR. Personalmente, creo que es increíble y fácilmente accesible. En Pokey, no trabajamos con ello debido a la adecuación al público, pero estoy emocionado por su potencial. Pokey está investigando activamente los juegos de blockchain y cripto para brindar experiencias gratuitas a más personas. Actualmente no tenemos ningún juego de cripto. Tuvimos una interesante charla sobre metrigaming y el futuro de los juegos con criptomonedas y NFT. Uno de los desafíos para reducir el tamaño del juego es comenzar con el tamaño del archivo en mente.
En realidad, tuve una experiencia similar. Y tenemos otra pregunta de Panther, y están preguntando, ¿qué opinas sobre los juegos de WebXR y su potencial? Buena pregunta. En primer lugar, personalmente, creo que es súper increíble. Me gusta la web porque es muy abierta y todos pueden usarla. Es muy fácilmente accesible. Y creo que es genial ver cómo las nuevas tecnologías llegan tan rápido a la web. Pero en Pokey, realmente no trabajamos con ello, simplemente porque no encaja con una gran audiencia. Así que no dedico mucho tiempo a mirarlo, tampoco. Pero estoy muy emocionado por ello, más desde fuera de nuestro caso de uso específico de nuestra plataforma de juegos, solo por el potencial de no tener que instalar nada y entrar directamente en la realidad virtual. El único problema es que aún necesitas auriculares de realidad virtual, por supuesto. Así que no sé. Me gusta. Creo que todo debería llegar a la web. Así que en ese sentido, estoy emocionado. Sí, exactamente.
Es muy emocionante. Y tenemos otra pregunta que están haciendo. ¿Cuál es la postura de Pokey sobre blockchain y los juegos de cripto? También es una buena pregunta. No estoy seguro de ser la mejor persona para responder esa pregunta. No es algo que estemos persiguiendo activamente. Creo que es algo que estamos investigando activamente, principalmente porque queremos llevar juegos gratuitos a tantas personas como sea posible. Eso es lo principal. Queremos brindar experiencias increíbles a tantas personas como sea posible de forma gratuita. Entonces, si puede ayudarnos con eso, entonces es muy interesante. Creo que hicimos algunas colaboraciones con la NaNoFoundation, pero nuevamente, no quiero profundizar demasiado en ello porque no he estado muy involucrado. No quiero decir cosas incorrectas. Pero sí, actualmente no tenemos ningún juego de cripto, al menos.
Sí, de hecho, no sé si viste eso, tuvimos una charla con Paul de OpiGames, y habló sobre metrigaming y lo que podría suceder. ¿Cuál es el futuro de eso con los juegos, con criptomonedas y NFT? Y fue una charla interesante. En realidad, tengo otra pregunta, ¿cuáles fueron tus mayores desafíos para reducir el tamaño de tus juegos? Creo que para el primer juego no fue un gran desafío en realidad, porque comencé desde el principio con el tamaño del archivo en mente.
Designing Games with File Size in Mind
Short description:
Diseñar un juego teniendo en cuenta el tamaño del archivo puede ser relativamente fácil. El arte procedural y generar el entorno con matemáticas puede mantener el tamaño del archivo pequeño. Para juegos en 2D, generar niveles de forma procedural a partir de datos de vértices y elegir un motor liviano con menos bibliotecas de terceros puede ayudar a reducir el tamaño del archivo. Spine 2D es una herramienta que puede disminuir significativamente el tamaño de las animaciones en 2D al exportar JSON que maneja la animación.
Creo que si diseñas un juego desde el principio teniendo en cuenta el tamaño del archivo, puede ser relativamente fácil. El mayor desafío es no usar un motor. Porque todo el arte es procedural, excepto los personajes principales, todo el entorno se genera solo con matemáticas. Sí, más matemáticas. Eso mantiene el tamaño del archivo muy pequeño. Así que eso fue bastante sencillo.
Y luego, para los juegos en 2D, se vuelve un poco más difícil porque necesitas los gráficos. Pero allí tomé el mismo enfoque. Generé los niveles de forma procedural a partir de datos de vértices. Tengo una publicación en el blog al respecto. Tal vez pueda compartirla. Y luego hay algunos desafíos para que se vea bien. A los dispositivos móviles no les gustan las texturas enormes. Entonces tienes que hacer algunas divisiones y cosas así. Pero creo que el mayor obstáculo para la mayoría de los juegos para reducir el tamaño del archivo realmente depende del motor con el que comiences y cuántas cosas de terceros tiendes a usar. Porque si eliges un motor muy liviano y no usas muchas bibliotecas de terceros, entonces tienes mucho control para eliminar cosas. Así que creo que comenzar de la manera correcta marca la mayor diferencia.
Exactamente. Y estoy aprendiendo algo llamado Spine 2D. No sé si has oído hablar de eso. Estaba usando hojas de cálculo para mis animaciones en 2D en mi juego. Y podía ocupar mucho espacio debido a los fotogramas. Y Spine tiene esta característica de tener partes para los personajes. Tiene extremidades y cosas así, partes separadas. Y exporta JSON que maneja la animación. Entonces realmente puede reducir el tamaño de tu juego. No sé si estás al tanto de eso. ¿Tienes alguna opinión al respecto? Sí. Creo que hay muchos trucos como este. Deberías tenerlo en cuenta mientras haces el juego y considerar todas las cosas que estás haciendo, por eso estoy tratando de predicar esto.
Managing Time for Indie Game Development
Short description:
Trabajar en el desarrollo de juegos independientes requiere mucho tiempo y un enfoque similar al de una maratón. Actualmente, trabajo en un juego de simulación de montañas rusas que implica programación gráfica y matemáticas. Aunque es un desafío, estoy emocionado por su progreso. No tenemos tiempo para preguntas, pero siéntete libre de continuar la conversación en Discord.
Porque cuanto más tarde comiences, más difícil se vuelve. Sí, exactamente. También tengo otra pregunta. No está relacionada con tu charla. Pero vi que estás en el doblaje de juegos en tu tiempo libre, y trabajas con Poki. Entonces probablemente sea tu trabajo diario. Y quería preguntarte, ¿cómo administras el tiempo para dedicar a tus juegos independientes? Bueno, para empezar, soy holandés. Y a los holandeses no les gusta trabajar demasiado. Así que solo trabajo cuatro días. Esa es la primera parte. Tengo los viernes libres para trabajar en proyectos personales. Y la segunda parte no es fácil. Simplemente lleva mucho tiempo. Así que el segundo juego, creo que me llevó dos años hacerlo. Y eso se distribuye en períodos muy largos. Así que a veces tengo una semana en la que soy muy productivo. Y luego tengo tres meses en los que no lo toco. Así que es más, ¿cómo se llama? Es más una maratón que una carrera. Mantén el enfoque en el objetivo final y tal vez planifica una semana libre para trabajar en ello. También estoy trabajando en el nuevo juego en mi viaje de esquí. Así que encuentra el tiempo que tienes y sigue adelante hasta que llegues allí, creo. Sí, te entiendo. Además, ¿en qué consiste el nuevo juego en el que estás trabajando? Será un juego de montañas rusas. Así que estoy simulando algunas montañas rusas, lo que me obliga a programar gráficos, que nuevamente implica más matemáticas. Y no soy bueno en eso. Así que llevará algo de tiempo. Llegará allí, eventualmente. Puedes contactar a mi padre si tienes alguna pregunta. Eso sería genial. Es realmente emocionante escuchar eso. Me encantaría jugarlo. Genial. Creo que en realidad se nos está acabando el tiempo para preguntas. Sí, fue muy agradable hablar contigo. Gracias por responder mis preguntas. Y también puedes seguir haciéndome preguntas en Discord. Y Casper es lo suficientemente amable como para responder en su sala de conferencias en Discord. Gracias, Casper. Gracias por recibirme. 🎵suena música de cierre🎵
This transcription provides a brief guide to React rendering behavior. It explains the process of rendering, comparing new and old elements, and the importance of pure rendering without side effects. It also covers topics such as batching and double rendering, optimizing rendering and using context and Redux in React. Overall, it offers valuable insights for developers looking to understand and optimize React rendering.
Mishko, the creator of Angular and AngularJS, discusses the challenges of website performance and JavaScript hydration. He explains the differences between client-side and server-side rendering and introduces Quik as a solution for efficient component hydration. Mishko demonstrates examples of state management and intercommunication using Quik. He highlights the performance benefits of using Quik with React and emphasizes the importance of reducing JavaScript size for better performance. Finally, he mentions the use of QUIC in both MPA and SPA applications for improved startup performance.
React 18's concurrent rendering, specifically the useTransition hook, optimizes app performance by allowing non-urgent updates to be processed without freezing the UI. However, there are drawbacks such as longer processing time for non-urgent updates and increased CPU usage. The useTransition hook works similarly to throttling or bouncing, making it useful for addressing performance issues caused by multiple small components. Libraries like React Query may require the use of alternative APIs to handle urgent and non-urgent updates effectively.
Today's Talk discusses the future of performance tooling, focusing on user-centric, actionable, and contextual approaches. The introduction highlights Adi Osmani's expertise in performance tools and his passion for DevTools features. The Talk explores the integration of user flows into DevTools and Lighthouse, enabling performance measurement and optimization. It also showcases the import/export feature for user flows and the collaboration potential with Lighthouse. The Talk further delves into the use of flows with other tools like web page test and Cypress, offering cross-browser testing capabilities. The actionable aspect emphasizes the importance of metrics like Interaction to Next Paint and Total Blocking Time, as well as the improvements in Lighthouse and performance debugging tools. Lastly, the Talk emphasizes the iterative nature of performance improvement and the user-centric, actionable, and contextual future of performance tooling.
PlayCanvas is an open-source game engine used by game developers worldwide. Optimization is crucial for HTML5 games, focusing on load times and frame rate. Texture and mesh optimization can significantly reduce download sizes. GLTF and GLB formats offer smaller file sizes and faster parsing times. Compressing game resources and using efficient file formats can improve load times. Framerate optimization and resolution scaling are important for better performance. Managing draw calls and using batching techniques can optimize performance. Browser DevTools, such as Chrome and Firefox, are useful for debugging and profiling. Detecting device performance and optimizing based on specific devices can improve game performance. Apple is making progress with WebGPU implementation. HTML5 games can be shipped to the App Store using Cordova.
I'm Nadia, a developer experienced in performance, re-renders, and React. The React team released the React compiler, which eliminates the need for memoization. The compiler optimizes code by automatically memoizing components, props, and hook dependencies. It shows promise in managing changing references and improving performance. Real app testing and synthetic examples have been used to evaluate its effectiveness. The impact on initial load performance is minimal, but further investigation is needed for interactions performance. The React query library simplifies data fetching and caching. The compiler has limitations and may not catch every re-render, especially with external libraries. Enabling the compiler can improve performance but manual memorization is still necessary for optimal results. There are risks of overreliance and messy code, but the compiler can be used file by file or folder by folder with thorough testing. Practice makes incredible cats. Thank you, Nadia!
Los primeros intentos de Ivan en la depuración de rendimiento fueron caóticos. Vería una interacción lenta, intentaría una optimización aleatoria, vería que no ayudaba, y seguiría intentando otras optimizaciones hasta que encontraba la correcta (o se rendía). En aquel entonces, Ivan no sabía cómo usar bien las herramientas de rendimiento. Haría una grabación en Chrome DevTools o React Profiler, la examinaría, intentaría hacer clic en cosas aleatorias, y luego la cerraría frustrado unos minutos después. Ahora, Ivan sabe exactamente dónde y qué buscar. Y en esta masterclass, Ivan te enseñará eso también. Así es como va a funcionar. Tomaremos una aplicación lenta → la depuraremos (usando herramientas como Chrome DevTools, React Profiler, y why-did-you-render) → identificaremos el cuello de botella → y luego repetiremos, varias veces más. No hablaremos de las soluciones (en el 90% de los casos, es simplemente el viejo y regular useMemo() o memo()). Pero hablaremos de todo lo que viene antes - y aprenderemos a analizar cualquier problema de rendimiento de React, paso a paso. (Nota: Esta masterclass es más adecuada para ingenieros que ya están familiarizados con cómo funcionan useMemo() y memo() - pero quieren mejorar en el uso de las herramientas de rendimiento alrededor de React. Además, estaremos cubriendo el rendimiento de la interacción, no la velocidad de carga, por lo que no escucharás una palabra sobre Lighthouse 🤐)
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.
Construir aplicaciones web instantáneas a gran escala ha sido elusivo. Los sitios del mundo real necesitan seguimiento, análisis y interfaces y interacciones de usuario complejas. Siempre comenzamos con las mejores intenciones pero terminamos con un sitio menos que ideal. QwikCity es un nuevo meta-framework que te permite construir aplicaciones a gran escala con un rendimiento de inicio constante. Veremos cómo construir una aplicación QwikCity y qué la hace única. El masterclass te mostrará cómo configurar un proyecto QwikCity. Cómo funciona el enrutamiento con el diseño. La aplicación de demostración obtendrá datos y los presentará al usuario en un formulario editable. Y finalmente, cómo se puede utilizar la autenticación. Todas las partes básicas para cualquier aplicación a gran escala. En el camino, también veremos qué hace que Qwik sea único y cómo la capacidad de reanudación permite un rendimiento de inicio constante sin importar la complejidad de la aplicación.
- Introducción- Prerrequisitos para la masterclass- Estrategias de obtención: fundamentos- Estrategias de obtención – práctica: API de obtención, caché (estática VS dinámica), revalidar, suspense (obtención de datos en paralelo)- Prueba tu construcción y sírvela en Vercel- Futuro: Componentes de servidor VS Componentes de cliente- Huevo de pascua de la masterclass (no relacionado con el tema, destacando la accesibilidad)- Conclusión
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.
Los primeros intentos de Ivan en la depuración de rendimiento fueron caóticos. Veía una interacción lenta, probaba una optimización aleatoria, veía que no ayudaba, y seguía probando otras optimizaciones hasta que encontraba la correcta (o se rendía). En aquel entonces, Ivan no sabía cómo usar bien las herramientas de rendimiento. Hacía una grabación en Chrome DevTools o React Profiler, la examinaba, intentaba hacer clic en cosas al azar, y luego la cerraba frustrado unos minutos después. Ahora, Ivan sabe exactamente dónde y qué buscar. Y en esta masterclass, Ivan te enseñará eso también. Así es como va a funcionar. Tomaremos una aplicación lenta → la depuraremos (usando herramientas como Chrome DevTools, React Profiler, y why-did-you-render) → identificaremos el cuello de botella → y luego repetiremos, varias veces más. No hablaremos de las soluciones (en el 90% de los casos, es simplemente el viejo y regular useMemo() o memo()). Pero hablaremos de todo lo que viene antes - y aprenderemos cómo analizar cualquier problema de rendimiento de React, paso a paso. (Nota: Esta masterclass es más adecuada para ingenieros que ya están familiarizados con cómo funcionan useMemo() y memo() - pero quieren mejorar en el uso de las herramientas de rendimiento alrededor de React. Además, cubriremos el rendimiento de interacción, no la velocidad de carga, por lo que no escucharás una palabra sobre Lighthouse 🤐)
Comments