Regroupement / mise en cache de grands niveaux dans une partie solo

8

Est-il judicieux d'essayer de décharger un grand niveau non linéaire en morceaux basés sur des fichiers et de les charger à la demande? Nous avons implémenté la segmentation de niveau pour améliorer les performances de rendu, mais tous les objets de niveau sont toujours persistants dans la RAM.

Si oui, alors comment garder l'illusion d'un monde vivant / changeant? Étant donné que le niveau n'est pas linéaire, mais plutôt comme un monde en soi, nous ne pouvons pas simplement prétendre que tout ce que nous avons traversé a disparu pour toujours.

Est-ce une meilleure idée de rendre les niveaux suffisamment complexes, mais aussi suffisamment optimisés pour être toujours persistants en mémoire, mais implémenter des points de saut micro / macro qui permettent de sauter à un point totalement éloigné (c'est-à-dire un tout nouveau niveau), oubliant ainsi sur la cohérence du monde et l'illusion d'un monde en mutation. De plus, cela nous permettrait de suivre une histoire légèrement linéaire dans un monde apparemment non linéaire. Il serait possible d'appliquer simplement un nouvel état à l'état existant d'un niveau "distant", si nous voulons y ramener le joueur.

user802232
la source

Réponses:

6

La création de morceaux est vraiment une bonne idée, mais vous devez l'utiliser à bon escient. il y a beaucoup de grands titres qui utilisent la même idée pour donner l'illusion d'un très grand monde. par exemple vous, je peux mentionner Spore ou Oblivion.

Parlons d'abord des spores car dans sa phase galactique, vous pouvez facilement voir comment les choses fonctionnent:

il y a beaucoup de planètes dans la galaxie mais toutes ne sont pas en mémoire en même temps. chaque fois que vous approchez d'une planète, le jeu charge automatiquement une texture pour cette planète à partir du disque dur. Ensuite, si vous vous approchez suffisamment, vous pouvez entrer sur la planète et apporter des modifications. lorsque vous êtes à l'intérieur d'une planète, presque toutes les données sur l'espace sont désallouées. Et vous pouvez faire n'importe quel changement sur la planète que vous aimez. vous pouvez ensuite revenir à la vue de l'espace. cette fois, le jeu recharge les données d'autres planètes et enregistre les changements que vous avez effectués sur cette planète. par exemple, si vous y avez créé une montagne, tous les changements de maillage et de texture sont à nouveau enregistrés dans des fichiers. certains événements sont également enregistrés dans des fichiers. comme lorsque vous mettez l'appareil qui aide les créatures à évoluer sur des planètes. ces événements restent actifs jusqu'à ce que vous soyez vraiment loin de la planète qui les déclenche.

Dans l'oubli, les choses sont un peu différentes, bien que l'idée de base soit la même. lorsque vous marchez dans la nature, le jeu charge et décharge constamment les zones. si vous avez essayé de jouer à l'oubli sur PS3, ce processus a produit quelques décalages mineurs dans la zone de transition (ou du moins j'ai entendu dire qu'ils le faisaient). il y a aussi des zones qui arrêtent complètement le jeu et vous voyez un écran de chargement comme lorsque vous entrez dans les grottes de vos maisons. en utilisant cette méthode, ils ont facilement réduit la complexité et l'utilisation de la mémoire dans les villes. il suffit de penser au nombre de maisons qu'il y a dans une ville et à la quantité de mémoire qu'elles consommeraient si elles voulaient les charger. notez également que s'ils voulaient utiliser le même système de chargement et de déchargement chaque fois que vous vous approchez des maisons, ils avaient besoin de presque toute la bande passante du disque dur, ce qui pourrait endommager le disque dur.

Pour conclure ma réponse, je vous suggère d'utiliser la même méthode dans votre jeu pour les zones étendues. vous devez également enregistrer toutes les modifications apportées par ce joueur dans une zone lors du déchargement. Cette méthode offre aux joueurs une expérience très agréable d'exploration d'un monde réel. Mais pour les zones où il y a beaucoup d'objets et vous pensez que vous pourriez avoir besoin de la plus grande bande passante de stockage pour la transmission de données, utilisez simplement une méthode traditionnelle avec un écran de chargement.

Ali1S232
la source