Cómo publicar un juego de realidad virtual en Oculus sin un ataque de nervios

Continuamos compartiendo nuestra primera experiencia de desarrollar un juego de realidad virtual Astro Collapse. En los artículos anteriores, hablamos sobre la idea principal del juego y el diseño del juego .



Esta vez te diremos cómo evitar nuestros errores y publicar el juego más rápido. Solo lo obtuvimos en el tercer intento, porque nos quedamos atrapados en una verificación técnica. No pudimos mejorar el rendimiento del juego utilizando solo los consejos del sitio web de Oculus. Por lo tanto, estábamos buscando soluciones nosotros mismos. Lee el artículo hasta el final para que no te metas con publicar tu juego en Oculus. Quizás puedas hacerlo la primera vez.



Directrices técnicas de juegos de realidad virtual y métricas clave de rendimiento



Cuando hayas completado la compilación, regístrate en Oculus y sube el juego a tu cuenta. En unos días recibirá una notificación por correo electrónico. Esto será una felicitación por la aprobación exitosa de la prueba o una solicitud para corregir errores.



La primera vez que no tomamos en cuenta todas las recomendaciones del sitio web de Oculus, obtuvimos el siguiente resultado:

imagen

Informe detallado después de la primera comprobación de Oculus



. Fallamos en la prueba de rendimiento, tuvimos un problema con el retorno requerido al menú de inicio de Oculus y el juego no se instaló en versiones anteriores de Android.



Para pasar la prueba de rendimiento, debe seguir estas pautas:



  • FPS en el juego debe ser de al menos 60;
  • de 50 a 100 llamadas a dibujar por cuadro (Call Draw);
  • 1-3 milisegundos para ejecutar scripts;
  • de 50,000 a 100,000 polígonos por cuadro.


Primero descubramos los conceptos y luego le mostraré cómo resolvimos nuestros problemas de rendimiento.



FPS o cuadros por segundo



El indicador clave de alto rendimiento es un alto FPS. Muestra la velocidad de fotogramas por segundo: el juego tiene un bucle que dibuja el mundo del juego y realiza operaciones matemáticas en guiones. Cuanto mayor sea el retraso entre estos cuadros, menor será la métrica y el rendimiento.

Con la ayuda de FPS, puedes entender si todo está en orden con el juego.




Dibujar indicador de llamada



Llamada de sorteo: la cantidad de llamadas de textura que el motor del juego envía a la GPU para dibujar el mundo. Para reducir la cantidad de llamadas, el motor necesita combinar texturas en un solo material. Esta técnica se llama procesamiento por lotes.

Cuanto más alto sea el indicador Draw Call, más tiempo se necesita para dibujar el mundo del juego.


Scripts y su velocidad de ejecución



Los guiones son responsables de cualquier acción y operación en el juego. Necesita controladores para ejecutarlos. Por ejemplo, Actualización. Tiene que procesar cada cuadro. Si el juego tiene muchos objetos y acciones complejas, entonces este controlador no tiene tiempo para completar el marco. Por lo tanto, el rendimiento es bajo y el juego se congela.

Muchas operaciones que llevan mucho tiempo en Update dificultan la realización de acciones en los objetos.


Polígonos por cuadro



Los polígonos son triángulos que componen modelos de juegos en 3D. Están formados por vértices y planos. Los polígonos por cuadro son el producto del número de todos los objetos en el mundo del juego y estos triángulos.

Cuanto mayor sea este número, más tiempo el motor del juego procesará un cuadro.


Cómo resolvimos problemas de rendimiento



Tuvimos 4 problemas principales que estaban causando que el rendimiento del juego no alcanzara los valores recomendados. Creamos objetos 3D demasiado detallados, encontramos una alta tasa de llamadas de extracción, las secuencias de comandos eran lentas y la memoria del dispositivo estaba sobrecargada. Pasamos la mayor parte del tiempo buscando soluciones a estas deficiencias. Y ahora sobre todo en orden.



Simplificando objetos 3D y bajando polígonos por cuadro



Hay muchos asteroides y naves en nuestro juego que se mueven constantemente y sobrecargan el juego. Durante la batalla, el jugador no tiene tiempo para considerarlos y prestar atención a los detalles, porque está interesado en el proceso. Si reduce la cantidad de asteroides, el juego se volverá aburrido y poco interesante. Por lo tanto, decidimos simplificar los modelos tridimensionales de asteroides y lanzaderas: redujimos el número total de polígonos en la escena del juego.



imagen

Polígonos del transbordador espacial del juego Astro Collapse



Determina lo que es importante en tu juego: detallar objetos pequeños o un mundo de juego grande. Comprenderá qué modelos de objetos no necesitan ser detallados, lo que ayudará a mejorar el rendimiento.


Combinamos texturas en atlas y alcanzamos el indicador de llamada de extracción recomendado



En Astro Collapse, el mundo del juego se crea a partir de asteroides, transbordadores, buques de guerra, la Tierra y el Sol. Hay muchos objetos en el juego: el indicador Draw Call era alto, por lo que el motor ralentizó la representación de los gráficos. Para reducirlo, debe combinar diferentes texturas de objetos en un atlas.

imagen

Atlas de asteroides en el juego Astro Collapse



Hemos creado 4 grandes atlas de texturas: para el asteroide, la cabina y los cañones, la interfaz visual y el menú del juego. Estos son objetos que consisten en muchos materiales similares. Atlas simplificó el trabajo del motor, ya que ya no era necesario recopilar diferentes texturas en un solo objeto, lo hicimos por él.

Recoja los materiales de los objetos en un atlas: una textura grande.


Reducción del tiempo de ejecución del script



Cualquier acción en el juego se lleva a cabo mediante guiones. Astro Collapse tiene muchos objetos de juego y operaciones complejas, por lo que algunos de los scripts se ejecutaron durante mucho tiempo: el controlador de actualización retrasó la finalización del marco. Esto ralentizó los procesos del juego.



Por lo tanto, tuvimos que sacar operaciones complejas de la actualización cuadro por cuadro. Utilizamos una rutina conjunta que puede realizar tales operaciones en objetos fuera del marco.



Así es como pudimos optimizar operaciones complejas de asteroides. Hay muchos de estos objetos en Astro Collapse: cada asteroide debe ser verificado para verificar su actividad, rastrear su ubicación en el espacio y agregarlo a la lista. La lista en sí misma debe actualizarse para incorporar nuevos asteroides al juego, calcular su distancia al jugador, los transbordadores y los buques de guerra vecinos. El resultado es un bucle de larga duración para un marco que el controlador de actualización no pudo manejar. Y con la ayuda de la rutina, el motor eliminó esta compleja operación de la actualización cuadro por cuadro y aumentó el rendimiento.

El controlador de co-rutina realiza operaciones complejas fuera de las actualizaciones cuadro por cuadro, lo que simplifica el trabajo del motor del juego.


Proteger la memoria del dispositivo de la basura y crear un grupo de asteroides



Astro Collapse tiene muchos asteroides. Aparecen constantemente, necesitan ser destruidos. Los constructores estándar en el script Instantiate and Destroy fallan al realizar estas operaciones. Crean basura en la memoria del dispositivo, haciendo que el juego se congele. Entonces lo hicimos de manera diferente.



Los asteroides caídos no se destruyen, sino que se esconden en el espacio del juego. Cuando se requiere un nuevo objeto, el script lo llama desde los ocultos. Este método se llama agrupación.



Antes de cargar el mundo del juego, el script crea varias docenas de asteroides. Si todos vuelan en el espacio al mismo tiempo y no están en la memoria, entonces él produce un nuevo asteroide y lo agrega a la lista. Esto nos dio un modelo de control de asteroides flexible y un rendimiento mejorado del juego.

Utilice el método de agrupación para objetos del mismo tipo, que a menudo se crean y destruyen, pero en el juego en sí no hay muchos al mismo tiempo.


Errores menores después del control técnico



Postprocesamiento de modelos en el juego: deshabilita el suavizado



Antialiasing: postprocesamiento de una imagen alisando bordes irregulares. Antialiasing se estableció de forma predeterminada en Astro Collapse. Sobrecargó el juego, y todavía no hubo un suavizado notable en el juego: la resolución en el casco Gear VR es baja. Por lo tanto, lo apagamos. Durante las pruebas, los jugadores no notaron ningún cambio, pero el rendimiento se hizo más alto.

El suavizado no produce imágenes suavizadas a bajas resoluciones en el Gear VR.


Espectaculares explosiones de sprites



Para hacer explosiones brillantes, utilizamos sprites. Esta es una imagen de explosión que cambia su tamaño, transparencia y color de rojo anaranjado a negro. De esta manera, logramos mantener la explosión dinámica y mejorar el rendimiento del juego sin utilizar sistemas complejos de muchas partículas individuales y animación.



Asteroide destruido en Astro Collapse



Se pueden hacer explosiones espectaculares con sprites.


No se necesitan sombras



Desactivamos las sombras porque el juego siempre está en movimiento, no puedes verlas. Además, no teníamos objetos grandes sobre los que proyectar una sombra.

Deshabilita las sombras para los objetos secundarios del juego que sean insignificantes para los jugadores.


Problema con el retorno requerido al menú de inicio de Oculus



El botón de retroceso en el casco debería devolver al jugador a Oculus Home, no al menú del juego, como fue el caso en Astro Collapse. Para solucionar este problema, tomé un script de plugin Oculus listo para usar y lo apliqué en el juego.

Use el script OVRPlatformMenu.cs para que el botón de retroceso del menú funcione correctamente.


Eliminar un error al instalar el juego en versiones anteriores de Android





Una falla en la instalación es fácil de resolver. Debe especificar la versión anterior de Android compatible en la configuración del proyecto.

No olvides especificar el nivel mínimo requerido de Android 4.1 API en la configuración del juego.


Resultados después de que el juego fue publicado



Arreglamos nuestras deficiencias y enviamos el juego para su revisión por tercera vez. La respuesta fue positiva: el juego se publicó una semana después:

imagen

felicitaciones de María del soporte técnico de Oculus con un mensaje sobre la fecha de publicación del juego



2 semanas después de la publicación, Astro Collapse se descargó más de 7000 veces. Para los juegos de realidad virtual en la plataforma Gear VR, este es un resultado excelente: ingresó a los 50 mejores juegos gratis y ocupó el puesto 24 en la lista.



Consejos para publicar un juego en Oculus



Hay algunas reglas a seguir para evitar nuestros problemas al publicar tu juego en la Tienda Oculus:

  • Consulte las recomendaciones y los problemas más comunes en el sitio web oficial de Oculus antes de cargar un juego.
  • Piensa en mejorar el rendimiento desde el comienzo del desarrollo, para no rehacer todo el juego en la etapa final.
  • No compliques los gráficos en el juego al detallar todos los objetos, muchas texturas o sombras. Funcionará en teléfonos móviles y tiene especificaciones limitadas. Piensa en lo que se puede eliminar sin perder la calidad del juego.
  • Póngase en contacto con el soporte técnico de Oculus. Ellos responderán y ayudarán rápidamente.
  • Recuerda que mejorar el rendimiento de cada juego requiere un enfoque de desarrollador individual. No encontrará una solución universal al problema.




Consulte nuestros consejos para ayudarlo a ser verificado en Oculus más rápido.



Juega al juego Astro Collapse y aprecia los gráficos. Para hacer esto, necesitará gafas Samsung Gear VR. Funcionan con teléfonos inteligentes: Samsung Galaxy Note 4, 5, 7, S6 / S6 Edge / S6 Edge +, S7 / S7 Edge, S8 / S8 +.



Desarrollos exitosos!



All Articles