Une raison courante est qu'il n'est pas toujours aussi facile de déterminer si une ressource sera nécessaire dans un avenir proche.
Puisque vous avez utilisé la pagination du terrain comme exemple, je vais continuer avec cela.
Il est parfaitement raisonnable si vous êtes dans une grille de carte donnée de charger toutes les grilles de carte adjacentes en arrière-plan. Vous savez que l'utilisateur peut, au mieux, en saisir un. Quand ils le font, vous pouvez décharger ceux qui ne sont plus adjacents et charger ceux qui le sont maintenant. Vous l'avez noté.
Imaginez maintenant un voyage rapide. Il n'y a absolument aucun moyen de prédire où l'utilisateur peut choisir d'aller. Ils ont (généralement) presque toute la carte à choisir. Le préchargement de tous les emplacements de voyage rapide possibles prendrait beaucoup trop de mémoire (vous pourriez aussi bien charger toute la carte en mémoire en premier lieu) et beaucoup trop de temps (en supposant que vous n'aviez pas la carte entière préchargée). Quand cela arriverait-il? Quand ils ouvrent la boîte de dialogue de voyage rapide? Le problème ne ferait qu'empirer plusieurs fois!
C'est pourquoi même la plupart des jeux avec une pagination de terrain "sans charge" ont toujours des écrans de chargement pour les déplacements rapides. C'est aussi pourquoi, si vous vous déplacez assez vite, vous pouvez parfois déclencher des écrans de chargement même dans des jeux avec des cartes sans charge (je me souviens l'avoir fait dans TES Oblivion).
Imaginez maintenant que cela s'applique aux ressources de jeu en général, où les relations ne sont souvent pas évidentes. Vous finirez par devoir soit charger toutes les options possibles, soit commencer à deviner ce que l'utilisateur va faire. Deviner est coûteux (à la fois en développement et en CPU) et compliqué à programmer. Exemples spécifiques:
- Fichiers de sauvegarde: vous devez charger chaque fichier de sauvegarde avant que l'utilisateur n'atteigne l'écran de sauvegarde, ou deviner quel fichier il pourrait charger (5 derniers, etc.).
- UI: De nombreux jeux de stratégie changent leur UI en fonction de votre faction. Vous devez charger chaque conception d'interface utilisateur possible avant que l'utilisateur ne commence sa partie.
- Monde du jeu: dans les jeux générés de manière procédurale, comme Minecraft ou les jeux RTS comme Civilization, le monde n'existe pas tant qu'il n'est pas vu, à des degrés divers. Le préchargement est impossible car ils n'existaient pas au départ; leur précalcul pourrait au mieux se faire de la même manière que le préchargement et n'est pas applicable dans le cas RTS.
Il pourrait y avoir des moyens de contourner certains de ces problèmes, mais cela coûte de l'argent dans la vie réelle à comprendre. La plupart des joueurs acceptent des écrans de chargement raisonnables et, le cas échéant, ont tendance à vouloir dépenser plus en matériel pour les atténuer. Il est considéré comme un problème matériel , pas un problème de jeu , sauf s'il est inhabituellement excessif ou perturbateur (comme le chargement au milieu des niveaux).
Et gardez à l'esprit que le chargement en arrière-plan n'est pas gratuit. L'utilisation moderne du terrain à chargement en arrière-plan et de certains fichiers de modèle a généralement un impact minimal, mais si vous devinez soudainement de nombreuses ressources différentes, en particulier si vous ne disposez pas de mesures fiables et devez décharger de nombreuses ressources et charger des ressources superflues , vous pouvez transformer le système en poussière.
L'idée du chargement en arrière-plan est d'utiliser les cycles morts pour une meilleure utilisation, mais il n'y a que peu de cycles morts à utiliser. Il en va de même pour la mémoire - le préchargement peut augmenter considérablement l'utilisation de la mémoire d'un jeu. Avec un écran de chargement, vous pouvez vider les ressources existantes. Aucun luxe de ce type avec un chargement en arrière-plan, ce qui signifie qu'il pourrait doubler les besoins en mémoire du jeu sur ce seul plan.