Comment publier un jeu VR sur Oculus sans dépression nerveuse

Nous continuons à partager notre première expérience de développement d'un jeu VR Astro Collapse. Dans les articles précédents, nous avons parlé de l'idée principale du jeu et de la conception du jeu .



Cette fois, nous vous expliquerons comment éviter nos erreurs et publier le jeu plus rapidement. Nous ne l'avons obtenu qu'au troisième essai, car nous nous sommes retrouvés coincés dans un contrôle technique. Nous n'avons pas pu améliorer les performances du jeu en utilisant uniquement les conseils du site Web Oculus. Par conséquent, nous cherchions nous-mêmes des solutions. Lisez l'article jusqu'au bout pour ne pas vous embêter à publier votre jeu sur Oculus. Vous pouvez peut-être le faire la première fois.



Directives techniques sur les jeux en réalité virtuelle et indicateurs de performances clés



Lorsque vous avez terminé la construction, inscrivez-vous à Oculus et téléchargez le jeu sur votre compte. Dans quelques jours, vous recevrez une notification par e-mail. Ce sera soit une félicitation pour la réussite du test, soit une demande de correction d'erreurs.



La première fois que nous n'avons pas pris en compte toutes les recommandations du site Oculus, nous avons obtenu le résultat suivant:

image

Rapport détaillé après le premier contrôle Oculus



Nous avons échoué au test de performance, nous avons eu un problème avec le retour obligatoire au menu d'accueil d'Oculus et le jeu n'était pas installé sur les anciennes versions d'Android.



Pour réussir le test de performances, vous devez suivre ces instructions:



  • Le nombre de FPS dans le jeu doit être d'au moins 60;
  • de 50 à 100 appels à dessiner par image (Call Draw);
  • 1 à 3 millisecondes pour exécuter les scripts;
  • de 50 000 à 100 000 polygones par image.


Voyons d'abord les concepts, puis je vous montrerai comment nous avons résolu nos problèmes de performances.



FPS ou images par seconde



L'indicateur clé de haute performance est un FPS élevé. Il montre la fréquence d'images par seconde: le jeu a une boucle qui dessine le monde du jeu et effectue des opérations mathématiques dans les scripts. Plus le délai entre ces images est élevé, plus la métrique et les performances sont faibles.

Avec l'aide de FPS, vous pouvez comprendre si tout est en ordre avec le jeu.




Indicateur de tirage au sort



Draw Call - Le nombre d'appels de texture que le moteur de jeu envoie au GPU pour dessiner le monde. Pour réduire le nombre d'appels, le moteur doit combiner les textures en un seul matériau. Cette technique s'appelle le traitement par lots.

Plus l'indicateur Draw Call est élevé, plus il faut de temps pour dessiner le monde du jeu.


Les scripts et leur vitesse d'exécution



Les scripts sont responsables de toutes les actions et opérations du jeu. Vous avez besoin de gestionnaires pour les exécuter. Par exemple, Update. Il doit traiter chaque image. Si le jeu contient beaucoup d'objets et d'actions complexes, ce gestionnaire n'a pas le temps de terminer le cadre. Par conséquent, les performances sont faibles et le jeu se fige.

De nombreuses opérations chronophages dans Update rendent difficile l'exécution d'actions sur les objets.


Polygones par image



Les polygones sont des triangles qui composent des modèles de jeu 3D. Ils sont constitués de sommets et de plans. Les polygones par image sont le produit du nombre de tous les objets du monde du jeu et de ces triangles.

Plus ce nombre est élevé, plus le moteur de jeu traitera une image longtemps.


Comment nous avons résolu les problèmes de performances



Nous avons eu 4 problèmes principaux qui faisaient que les performances du jeu n'étaient pas conformes aux valeurs recommandées. Nous avons créé des objets 3D trop détaillés, rencontré un taux d'appel de dessin élevé, les scripts étaient lents et la mémoire de l'appareil était surchargée. Nous avons passé le plus de temps à chercher des solutions à ces lacunes. Et maintenant, tout est en ordre.



Simplifier les objets 3D et abaisser les polygones par image



Il y a de nombreux astéroïdes et vaisseaux dans notre jeu qui bougent constamment et surchargent le jeu. Pendant la bataille, le joueur n'a pas le temps de les considérer et de faire attention aux détails, car il est passionné par le processus. Si vous réduisez le nombre d'astéroïdes, le jeu deviendra ennuyeux et sans intérêt. Par conséquent, nous avons décidé de simplifier les modèles tridimensionnels des astéroïdes et des navettes: nous avons réduit le nombre total de polygones dans la scène de jeu.



image

Polygones de la navette spatiale du jeu Astro Collapse



Déterminez ce qui est important dans votre jeu: détailler de petits objets ou un grand monde de jeu. Vous comprendrez quels modèles d'objets n'ont pas besoin d'être détaillés, ce qui aidera à améliorer les performances.


Nous combinons des textures dans des atlas et obtenons l'indicateur d'appel de dessin recommandé



Dans Astro Collapse, le monde du jeu est créé à partir d'astéroïdes, de navettes, de navires de guerre, de la Terre et du Soleil. Il y a beaucoup d'objets dans le jeu - l'indicateur Draw Call était élevé, donc le moteur a ralenti le rendu des graphiques. Pour le réduire, vous devez combiner différentes textures d'objets dans un seul atlas.

image

Atlas des astéroïdes dans le jeu Astro Collapse



Nous avons réalisé 4 grands atlas de textures: pour l'astéroïde, le cockpit et les canons, l'interface de visée et le menu du jeu. Ce sont des objets composés de nombreux matériaux similaires. Les atlas ont simplifié le travail du moteur, car il n'était plus nécessaire de rassembler différentes textures en un seul objet - nous l'avons fait pour cela.

Rassemblez les matériaux des objets dans un atlas - une grande texture.


Réduction du temps d'exécution des scripts



Toute action du jeu se déroule à l'aide de scripts. Astro Collapse contient de nombreux objets de jeu et des opérations complexes, de sorte que certains des scripts ont été exécutés pendant longtemps - le gestionnaire de mise à jour a retardé l'achèvement de l'image. Cela a ralenti les processus de jeu.



Par conséquent, nous avons dû supprimer des opérations complexes de la mise à jour image par image. Nous avons utilisé une co-routine qui peut effectuer de telles opérations sur des objets en dehors du cadre.



C'est ainsi que nous avons pu optimiser les opérations complexes des astéroïdes. Il existe de nombreux objets de ce type dans Astro Collapse: chaque astéroïde doit être vérifié pour son activité, suivre son emplacement dans l'espace et l'ajouter à la liste. La liste elle-même doit être mise à jour afin d'introduire de nouveaux astéroïdes dans le jeu, calculer leur distance par rapport au joueur, aux navettes et aux navires de guerre voisins. Le résultat est une boucle de longue durée pour une image que le gestionnaire de mise à jour n'a pas pu gérer. Et avec l'aide de coroutine, le moteur a retiré cette opération complexe de la mise à jour image par image et a amélioré les performances.

Le gestionnaire de co-routine effectue des opérations complexes en dehors des mises à jour image par image, ce qui simplifie le travail du moteur de jeu.


Protéger la mémoire de l'appareil des déchets et créer un pool d'astéroïdes



Astro Collapse a beaucoup d'astéroïdes. Ils apparaissent constamment, ils doivent être détruits. Les constructeurs standard du script Instantiate et Destroy échouent en effectuant ces opérations. Ils créent des déchets dans la mémoire de l'appareil, provoquant le gel du jeu. Nous l'avons donc fait différemment.



Les astéroïdes abattus ne sont pas détruits, mais se cachent dans l'espace de jeu. Lorsqu'un nouvel objet est requis, le script l'appelle à partir des objets cachés. Cette méthode s'appelle la mise en commun.



Avant de charger le monde du jeu, le script crée plusieurs dizaines d'astéroïdes. S'ils volent tous dans l'espace en même temps et qu'ils ne sont pas en mémoire, alors il produit un nouvel astéroïde et l'ajoute à la liste. Cela nous a donné un modèle de contrôle d'astéroïdes flexible et des performances de jeu améliorées.

Utilisez la méthode de mise en commun pour les objets du même type, qui sont souvent créés et détruits, mais dans le jeu lui-même, il n'y en a pas beaucoup en même temps.


Bugs mineurs après contrôle technique



Post-traitement des modèles dans le jeu: désactiver l'anti-aliasing



Anticrénelage - post-traitement d'une image en lissant les bords irréguliers. L'anticrénelage était défini par défaut dans Astro Collapse. Cela a surchargé le jeu et il n'y avait toujours pas d'anti-aliasing notable dans le jeu - la résolution du casque Gear VR est faible. Par conséquent, nous l'avons désactivé. Lors des tests, les joueurs n'ont remarqué aucun changement, mais les performances sont devenues plus élevées.

L'anti-crénelage ne produit pas d'images anticrénelées à basse résolution sur le Gear VR.


Explosions spectaculaires de sprites



Pour faire des explosions lumineuses, nous avons utilisé des sprites. Il s'agit d'une image d'explosion qui change sa taille, sa transparence et sa couleur du rouge-orange au noir. De cette façon, nous avons réussi à maintenir l'explosion dynamique et à améliorer les performances du jeu sans utiliser de systèmes complexes de nombreuses particules individuelles et d'animation.



Astéroïde détruit dans l'effondrement de l'Astro



Des explosions spectaculaires peuvent être faites avec des sprites.


Aucune ombre nécessaire



Nous avons désactivé les ombres parce que le jeu est toujours en mouvement - vous ne pouvez pas les voir. De plus, nous n'avions pas de gros objets sur lesquels projeter une ombre.

Désactivez les ombres pour les objets de jeu secondaires qui sont insignifiants pour les joueurs.


Problème avec le retour obligatoire au menu d'accueil d'Oculus



Le bouton de retour sur le casque devrait ramener le joueur à Oculus Home, pas au menu du jeu, comme ce fut le cas dans Astro Collapse. Pour résoudre ce problème, j'ai pris un script de plugin Oculus prêt à l' emploi et je l'ai appliqué dans le jeu.

Utilisez le script OVRPlatformMenu.cs pour que le bouton de retour du menu fonctionne correctement.


Éliminer un bug lors de l'installation du jeu sur les anciennes versions d'Android





Une faille dans l'installation est facile à résoudre. Vous devez spécifier l'ancienne version d'Android prise en charge dans la configuration du projet.

N'oubliez pas de spécifier le niveau d'API Android 4.1 minimum requis dans les paramètres du jeu.


Résultats après la publication du jeu



Nous avons corrigé nos lacunes et envoyé le jeu pour la troisième fois. La réponse a été positive - le jeu a été publié une semaine plus tard:

image

Félicitations de Maria du support technique d'Oculus avec un message sur la date de publication du jeu



2 semaines après la publication, Astro Collapse a été téléchargé plus de 7000 fois. Pour les jeux VR sur la plateforme Gear VR, c'est un excellent résultat: il est entré dans le top 50 des jeux gratuits et s'est classé 24ème sur la liste.



Conseils pour publier un jeu sur Oculus



Il y a quelques règles à suivre pour éviter nos problèmes lors de la publication de votre jeu sur l'Oculus Store:

  • Consultez les recommandations et les problèmes les plus courants sur le site officiel d'Oculus avant de télécharger un jeu.
  • Pensez à améliorer les performances dès le début du développement, pour ne pas refaire tout le jeu en phase finale.
  • Ne compliquez pas les graphismes du jeu en détaillant tous les objets, beaucoup de textures ou d'ombres. Il fonctionnera sur les téléphones mobiles et aura des spécifications limitées. Pensez à ce qui peut être supprimé sans perdre la qualité du jeu.
  • Contactez le support technique Oculus. Ils répondront et aideront rapidement.
  • N'oubliez pas que l'amélioration des performances de chaque jeu nécessite une approche de développeur individuelle. Vous ne trouverez pas de solution universelle au problème.




Consultez nos conseils pour vous aider à être vérifié sur Oculus plus rapidement.



Jouez au jeu Astro Collapse et appréciez les graphismes. Pour ce faire, vous avez besoin de lunettes Samsung Gear VR. Ils fonctionnent avec les smartphones: Samsung Galaxy Note 4, 5, 7, S6 / S6 Edge / S6 Edge +, S7 / S7 Edge, S8 / S8 +.



Développements réussis!



All Articles