Je pense que les jeux modernes auraient dû pouvoir abandonner les écrans de chargement.
Je suppose que la vraie raison pour laquelle nous avons encore des écrans de chargement est que la plupart des jeux sont conçus pour fonctionner sur du matériel Xbox 360. En tant que tels, ils seront limités dans la quantité de RAM dans laquelle ils peuvent charger des trucs et combien de threads ils peuvent faire. Si vous n'avez pas assez de RAM, vous devrez supprimer beaucoup de choses de la mémoire, puis le recharger à partir du disque. Il est également plus facile de tout charger en même temps.
Il y a aussi des moments où des choses comme le disque dur peuvent se bloquer. Que se passe-t-il si l'utilisateur exécute un antivirus en arrière-plan. Si vous ne préchargez pas le contenu, vous devrez peut-être interrompre le jeu pendant qu'il attend que le maillage se charge ou que les choses apparaissent spontanément.
Des jeux comme Skyrim peuvent vous offrir un monde ouvert que vous pouvez parcourir autant que vous le souhaitez, mais dès que vous ouvrez une porte pour charger un donjon relativement petit, vous êtes coincé avec un écran de chargement.
La seule raison pour laquelle je pouvais voir que l'écran de chargement du donjon était nécessaire était s'il utilisait un éclairage précuit très lourd utilisé pour les scènes d'intérieur qui, s'il était assez grand à charger (fabriqué à partir d'un maillage géant ou a des cartes lumineuses détaillées) ou nécessitait des calculs à faire lors de l'exécution. Je crois que les donjons de Skyrim sont juste construits à partir de mailles modulaires plutôt que d'un maillage géant (du moins je pense qu'Oblivion est où).
Il n'y a pas vraiment de raison de charger plus que ce que vous pouvez réellement voir en entrant dans le niveau. De la même manière que les jeux ne rendent pas les choses que vous pouvez voir, vous pouvez sélectionner immédiatement ce dont vous avez besoin pour être chargé. Vous pouvez également coller de nombreux objets fictifs de marque-place. Ensuite, vous pouvez utiliser le filetage pour charger de manière asynchrone des objets dans les zones environnantes, leurs maillages, les textures, etc. lorsque le joueur se déplace dans l'environnement.
La façon dont je voudrais abandonner les écrans de chargement est la suivante:
Chargez les propriétés de base du monde du jeu. Scripts globaux.
Chargez la position du joueur.
Chargez le nœud gridcell / BSP de cette position.
Chargez uniquement les boîtes englobantes des objets dans cette cellule.
Déterminer ce qui serait réellement rendu (tests sur les boîtes englobantes, peut-être des tests de rendu d'occlusion)
Chargez les maillages du contenu rendu.
Chargez les matériaux les textures des mailles.
Effectuez plus de tests pour voir si plus de régions sont visibles et doivent être chargées (c'est-à-dire interroger un rendu d'une cellule de grille entière comme un cube géant).
Une fois que tout ce qui est visible est chargé, commencez le rendu.
Chargez le reste des trucs dans les cellules et chargez plus de trucs au besoin. Chargez les régions voisines et faites des prédictions de base sur les mouvements des joueurs pour choisir les régions qui doivent être chargées en premier. Continuez jusqu'à ce que la mémoire se remplisse.
Il y a d'autres choses à prendre en compte. Par exemple, certaines choses doivent être chargées même si elles ne sont pas visibles. Par exemple, un ennemi qui se tient derrière le joueur à l'extérieur de la région devrait être actif pour pouvoir courir vers le joueur et l'attaquer. Peut-être que le test d'occlusion n'est pas essentiel car vous voudrez immédiatement charger quoi que ce soit à proximité de sorte qu'il soit là lorsque le joueur se déplace et il devient visible, mais il pourrait se raser une seconde pour aller directement au rendu (mais si le temps est si proche, vous êtes susceptibles d’obtenir des problèmes d’apparition).
Si possible, ces étapes doivent être démarrées avant qu'elles ne soient nécessaires, rejetées en arrière-plan. Par exemple, si vous êtes dans le menu principal du jeu, il devrait commencer à précharger la zone de départ des charges après avoir choisi "Nouveau jeu" (ou dès que le menu apparaît) et la dernière sauvegarde pour continuer. D'autres sauvegardes peuvent être préchargées lorsque vous déplacez la souris dessus. Lorsque vous approchez d'une porte de donjon, elle devrait commencer à charger le niveau suivant (bien que si vous pouvez le faire, vous n'avez pas besoin d'une porte de donjon spéciale car elles ne servent vraiment qu'à déclencher un écran de chargement). Chargez en arrière-plan pendant la lecture de la vidéo. De cette façon, vous n'auriez même pas besoin d'un court écran de chargement initial.
Vous pouvez ignorer une grande partie de cela si cela ne vous dérange pas de «surgir» des choses. Quelque chose comme Second Life vous laisse juste des choses apparaissant, car étant récupéré sur Internet, vous ne pouvez pas faire grand-chose à ce sujet. Assassin's creed a cet effet où des trucs entrent en scène afin que vous puissiez vous en sortir avec des raisons artistiques.