Le rêve sans faille : tuer l’écran de chargement VR

Dans les jeux, rien ne interrompt le flux du joueur comme un écran de chargement, et dans la réalité virtuelle ce problème est décuplé. La « présence » ou « l’immersion », le sentiment magique mais fragile d’« être là », est ce qui rend la réalité virtuelle si spéciale. Lorsqu’un joueur est soudainement téléporté hors d’un monde fantastique et dans une étendue noire et froide avec une seule barre de chargement, l’illusion est instantanément brisée. Pire encore, des mini-charges non comptabilisées peuvent provoquer des bégaiements de fréquence d’images et un mal de réalité virtuelle qui en résulte. Dans cet article invité, le développeur VR Charlie Cochrane explore toute une gamme de techniques de conception autour d’écrans de chargement qui brisent l’immersion.

Article invité de Charlie Cochrane

Charlie Cochrane est un développeur VR solo qui dirige le studio Crooks Peak. Avec une formation en robotique, en programmation et dans une entreprise de livraison de cookies, il a commencé à créer des jeux VR de loisir en 2016 et s’est lancé à temps plein en 2021. Son jeu d’action et d’horreur de science-fiction « By Grit Alone » est sorti à l’hiver 2024, et la prochaine simulation de train zombie victorien « Full Steam Undead » est prévue pour le printemps 2026, tous deux disponibles sur Meta Quest et Steam.

Une barre de chargement en VR ne met pas seulement le jeu en pause ; il téléporte le joueur dans un vide noir désorientant, brisant complètement le sentiment de « présence ».

C’est un problème que j’ai pris comme pilier de conception de mon jeu précédent, Par le courage seulet mon prochain titre Mort-vivant à pleine vapeur. Les deux proposent une campagne d’environ 4 heures avec une règle stricte : zéro écran de chargement et pas de bégaiement de framerate.

Dans cet article, je partagerai certaines des techniques de haut niveau, de la magie technique aux astuces trompeuses, que les développeurs utilisent pour minimiser ou masquer entièrement le chargement. Le lecteur devrait repartir avec une nouvelle appréciation de ces systèmes invisibles et une meilleure compréhension de la raison pour laquelle il existe des systèmes invisibles. donc de nombreuses scènes d’ascenseur dans les jeux.

La charge en arrière-plan (Streaming)

Les meilleurs chargements sont ceux que les joueurs ne réalisent même pas. Entrez « Streaming d’actifs » ; le but ici est de charger les ressources du jeu (modèles, textures, sons) en petits morceaux en arrière-plan avant qu’ils ne soient nécessaires, plutôt que d’un seul coup dans un seul bloc qui arrête le jeu.

Cela peut être délicat, car le jeu doit prédire ce qui doit être chargé et quand, afin qu’il soit prêt et préchargé au moment où cela est nécessaire. C’est un exercice d’équilibre minutieux ; si vous préchargez trop, vous consommerez toute la mémoire, mais pas assez et vous pourriez vous retrouver avec des ressources déchargées. Cela peut être très délicat en VR, où la mémoire et la puissance de traitement peuvent être limitées sur les systèmes autonomes et où même la charge de blocage la plus courte peut provoquer un bégaiement notable.

Le streaming d’actifs peut être aussi simple que de charger un fichier audio MP3 quelques secondes avant sa lecture. Dans Par le courage seulchaque fois que vous recevez un message radio de PNJ, je diffuse un petit buzz radio statique au début de l’appel. Ce clip de deux secondes encadre bien l’appel, mais me donne également deux secondes pour charger le message lui-même en arrière-plan !

Un exemple plus complexe mais courant ; découper une grande carte du monde ouvert et charger/décharger ces morceaux en fonction de l’emplacement du joueur et de la direction de la vue. La colère d’Asgard 2 en est un bel exemple ; fait correctement, le joueur est capable de parcourir la carte massive sans barre de chargement en vue. Si c’est mal fait, le joueur verra des parties du monde ou des ennemis se téléporter dans et hors du jeu.

La charge cachée (tromperie)

Asset Steaming est génial, mais même dans ce cas, le moteur a parfois simplement besoin de plus de temps ou de mémoire. Par exemple : le joueur se déplace d’une zone massive à une autre, et la nouvelle zone est trop grande pour être diffusée de manière « invisible » sans d’abord supprimer l’ancienne.

Entrez « L’ascenseur ». Le joueur intervient, appuie sur un bouton et est obligé d’attendre pendant qu’il monte ou descend lentement, peut-être pendant que les PNJ discutent ou qu’une musique étouffante d’ascenseur joue. Ce trajet (souvent incontournable) est un écran de chargement déguisé. En plaçant le joueur dans un petit espace, le moteur peut décharger la scène précédente, libérer de la mémoire puis charger la nouvelle scène, tandis que le trajet donne au moteur le temps de le faire en arrière-plan.

Ce long trajet en ascenseur n’est pas seulement destiné à une tension dramatique. C’est l’un des moyens les plus courants et les plus efficaces de « masquer » le chargement d’un environnement complexe entièrement nouveau.

Bien sûr, l’ascenseur n’est qu’un exemple, mais une fois que vous savez quoi chercher, vous verrez ces charges cachées partout :

  • La pression serrée : Le joueur doit se faufiler à travers une étroite crevasse rocheuse ou entre deux murs.
  • La porte à ouverture lente : Un personnage a du mal à ouvrir une lourde porte à portique ou attend un scan de « décontamination » de haute technologie avant que la porte ne s’ouvre.
  • Le vide sanitaire : Forcer le joueur à entrer dans un évent ou un tunnel bas, où le mouvement est lent et la vue restreinte.

Ce ne sont pas des conceptions paresseuses, ce sont des solutions non intrusives pour maintenir l’interactivité des joueurs dans le monde, tout en donnant au moteur le temps et les ressources nécessaires pour effectuer le chargement en arrière-plan.

La « Pause » comme charge (interfaces utilisateur diégétiques)

Alerte d’opinion : une bonne conception VR intègre l’interface utilisateur dans le monde comme élément essentiel du maintien de la présence. Pour moi, un menu pause qui vous téléporte inutilement hors du jeu est tout aussi mauvais qu’un autre écran de chargement. D’excellents exemples VR d’intégration de composants de menu dans le monde du jeu incluent :

Dans Cosmodread, une carte mise à jour du navire effrayant est montée au poignet et toujours visible :

Dans Le laboratoirevous chargez un niveau en tirant un orbe sur votre tête plutôt qu’en utilisant un menu de niveaux répertoriés :

Dans Dans le rayon, vous gérez votre inventaire en sortant les articles d’un sac à dos physique plutôt que d’un menu d’inventaire :

Tous ces éléments évitent la « pause » et maintiennent le joueur dans le monde. Mieux encore, en effectuant ces actions sans s’arrêter, le joueur peut regarder par-dessus son épaule, conscient que son environnement peut ne pas se soucier s’il s’arrête pour vérifier son sac ou sa carte.

La charge « Échec » (réinitialisations instantanées)

Il peut être très difficile de cacher un échec (désolé maman), mais cacher une charge en cas d’échec ? C’est ce que nous pouvons faire !

Dans un jeu VR exigeant et exigeant de nombreux redémarrages, l’échec peut faire partie de la boucle d’apprentissage. Pensez à Battre Sabre ou Fouet pistolet ; devoir attendre 10 secondes pour un « point de contrôle de rechargement » entre chaque réinitialisation tuerait complètement le flux.

Le redémarrage dans Beat Saber est instantané, pour ne pas punir le joueur

Ces jeux utilisent la « réinitialisation instantanée ». La raison pour laquelle ils peuvent redémarrer en une fraction de seconde est qu’ils jamais décharger le niveau. Pensez-y comme à un spectacle sur scène : lorsqu’un acteur rate une réplique en répétition, l’équipe ne reconstruit pas l’ensemble du décor. Le réalisateur crie « De haut ! » et les acteurs se remettent simplement à leur position de départ.

Le jeu fait la même chose. Ce n’est pas rechargement le niveau ; il s’agit simplement d’appuyer sur un bouton géant de « rembobinage ». Il vous téléporte au début et réinitialise les ennemis et les objets à leur état initial. Les atouts du niveau ne quittent jamais la mémoire. Bien que plus complexe que de simplement recharger le niveau à partir de zéro, cela respecte le temps du joueur et le maintient dans la zone, transformant la frustration en un simple « Okay, encore ! »

Le chargement « première fois » (compilation de shaders)

Quand j’ai dit que mes jeux avaient Non les écrans de chargement, c’était un petit mensonge ; comme pour beaucoup de jeux, la toute première fois qu’un joueur démarre un de mes jeux, j’effectue un « premier chargement ».

La raison la plus courante en est la « compilation de shaders ». Un shader est un petit programme qui indique au GPU comment restituer une surface : ce feu, cette roche mouillée, cette fenêtre en verre. La première fois que le jeu doit vous montrer « feu », il devra peut-être compiler ce shader, provoquant un problème ou un bégaiement notable dans le casque, et cela peut se produire lorsqu’un nouveau type de surface est affiché pour la première fois.

Comme pour de nombreux jeux, Par le courage seul a opté pour un compromis simple : faire attendre le joueur une fois.

Le premier chargement par Grit Alone permet d’éviter les bégaiements de la compilation des shaders sur toute la ligne

Lorsque vous démarrez le jeu pour la première fois, il exécute une étape unique de compilation du shader. En échange, le joueur peut parcourir toute la campagne sans qu’un seul bégaiement d’un shader ne soit compilé à la volée. Il s’agit d’un problème classique de « payer maintenant ou payer plus tard », mais pour la VR, payer la charge plus tard pendant le jeu peut signifier un mal de VR induisant un bégaiement d’image.

Quand vous ne pouvez tout simplement pas le cacher (la charge « honnête »)

Parfois, il n’y a aucun moyen de contourner un écran de chargement, alors gardez-le aussi rapide que possible.

Il est également important de garder le suivi de la tête du joueur actif pendant le chargement (c’est-à-dire que s’il bouge la tête, la barre de chargement restera en place dans l’environnement suivi plutôt que de rester collée à la vue du joueur). Avoir une barre de chargement collée à votre vue est le pire rappel que vous avez un casque attaché à votre visage.

Cela peut aussi être le moment idéal pour un pourboire bien placé ; ajout d’une astuce sur les paramètres de difficulté sur Par le courage seulLe premier chargement de a évité beaucoup de frustration aux joueurs.

Encore mieux est un écran de chargement interactif. Est-il possible de réellement profiter d’un écran de chargement ? Noir et blanc 2L’écran de chargement interactif de était un petit jeu en soi :

– – – – –

En fin de compte, toutes ces techniques servent un seul objectif : offrir au joueur la meilleure expérience possible en réduisant ou en supprimant les écrans de chargement désagréables et les pauses inutiles. En combinant des décisions techniques intelligentes avec une conception intelligente et contextuelle, nous pouvons protéger l’état de flux du joueur et réaliser le rêve fluide de la réalité virtuelle. Ceci est primordial en VR en particulier, où un écran de chargement peut rendre le joueur complètement aveugle dans une étendue noire ou provoquer des bégaiements de fréquence d’images provoquant des nausées.

À mesure que le matériel s’accélère, ces techniques vont certainement évoluer, mais j’ai le sentiment que nous attendrons toujours dans les ascenseurs et accroupis devant les bouches d’aération dans le futur lointain du jeu VR.

L’article The Seamless Dream: Killing The VR Loading Screen est apparu en premier sur Road to VR.