Diablo 3 et StarCraft 2 ont une fonctionnalité intéressante: je peux commencer à jouer avant le téléchargement complet du jeu ou de la mise à jour.
J'imagine que Diablo 3 télécharge des fichiers obligatoires, tels que des ressources d'interface utilisateur, ainsi que des maillages et des textures utilisés à plusieurs niveaux. Cependant, lorsque je commence une partie, je peux choisir le niveau que je veux, en supposant que je dispose des sauvegardes appropriées. Je n'ai jamais connu de décalage de ce type lorsque je joue - le démarrage est toujours très facile.
Comment cela marche-t-il? Comment pourrais-je implémenter une fonctionnalité similaire?
user-experience
deployment
patching
nikitablack
la source
la source
Réponses:
Les éléments tels que le son, la vidéo, les modèles et les textures constituent la majorité du téléchargement. Il existe plusieurs versions pour chacun de ces éléments. Ces versions multiples doivent prendre en charge diverses options graphiques.
En envoyant d’abord les ressources nécessaires pour une option à faible graphique (qui sont aussi les plus petites). Vous avez tout ce dont vous avez besoin pour jouer au jeu, même si vous ne disposez que de 15% environ du total des ressources nécessaires pour prendre en charge toutes les options graphiques.
Vous pouvez le tester en réinstallant StarCraft 2. Jouez-le dès qu'il vous permettra d'accéder à l'écran des options graphiques. De nombreuses options et paramètres seront indisponibles.
la source
Une fois, j'ai implémenté ceci pour les MMO. Une fin de semaine alors que je tentais d’installer WOW pour ma fille prenait 48 heures (corrections, erreurs de téléchargement, etc.), j’ai donc décidé de créer ma propre meilleure solution.
Le jeu a généralement besoin de dire 10 Go de données avant de fonctionner. Tous les fichiers ne sont pas réellement nécessaires immédiatement, mais les jeux attendaient jusqu'à ce que tous les fichiers soient localement présents. Ma solution était de faire tourner le jeu localement comme d'habitude, mais l'EXE a été dupé (en utilisant un minifiltre de fichier Windows) en pensant que tous les fichiers étaient déjà présents. Lorsqu'un fichier demandé n'était pas local, le système de fichiers le téléchargeait et le sauvegardait. Le jeu a été lentement copié localement selon les besoins. Quand il y avait de la bande passante disponible, les autres fichiers non encore utilisés ont été ajoutés en arrière-plan. Cela fonctionnait avec TOUS les jeux sans avoir besoin de recompiler, car mon pilote de minifiltre recevait des fichiers en cas de besoin.
Le pire inconvénient était la latence. Ma solution à cela était de créer un petit modèle de chaîne de Markov pour prédire quel fichier serait nécessaire par la suite et de hiérarchiser le chargeur en arrière-plan. Cela a fonctionné à merveille, et notre MMO a été capable de fonctionner presque IMMÉDIATEMENT juste après l’EXE et que quelques fichiers d’écran de chargement étaient locaux (~ 20 Mo). Nous avons pu cliquer sur un lien sur une page Web et lancer notre jeu de 10+ Go en environ 30 secondes . Nous avons eu un taux de réussite de 99%, ce qui signifie que lorsque le jeu avait besoin d'un nouveau fichier pour la première fois, il était déjà là!
Je serais heureux d'aider quelqu'un d'autre à mettre cela en œuvre.
la source
De plus, dans certains jeux, les zones de jeu et les fichiers sont retardés, seules les zones obligatoires sont conservées et peuvent également être installées tout en continuant à jouer.
la source
Pour résumer ce que plusieurs personnes ont dit, et peut-être ajouter quelques informations:
Cela signifie une charge réseau plus importante pendant la lecture, jusqu'à ce que tout le contenu soit mis en cache localement, mais une charge en rafale initiale plus petite sur vos serveurs, ainsi qu'une attente plus courte et moins frustrante pour les utilisateurs pendant le téléchargement du jeu.
Bien sûr, si l'utilisateur a une connexion réseau lente, il peut toujours recevoir les messages "attendez, chargement du contenu" (indiquez-les) lors du changement de zone, ou vous pouvez vérifier la bande passante lors du démarrage initial du jeu et si le téléchargement est trop faible. de manière fiable à la volée, le faire attendre au moins pour le premier niveau au complet (et de nouveau lorsqu’il entre dans des zones qui n’ont pas encore été entièrement téléchargées).
Ceci afin d’empêcher l’utilisateur de rester à la traîne au beau milieu d’une partie de jeu réelle, car sa connexion réseau s’enlisait.
la source