Ich habe dies einmal für MMOs implementiert. An einem Wochenende, als ich versuchte, WOW für meine Tochter zu installieren, vergingen 48 Stunden (Patches, Download-Fehler usw.), und ich beschloss, meine eigene bessere Lösung zu entwickeln.
Das Spiel benötigt normalerweise etwa 10 GB Daten, bevor es ausgeführt werden kann. Nicht alle Dateien werden sofort benötigt, aber Spiele haben gewartet, bis alle Dateien lokal vorhanden waren. Meine Lösung bestand darin, das Spiel wie gewohnt lokal laufen zu lassen, aber die EXE-Datei wurde (unter Verwendung eines Windows-Dateiminifilters) dazu verleitet, zu glauben, dass alle Dateien bereits vorhanden waren. Wenn eine angeforderte Datei nicht lokal war, wurde sie vom Dateisystem heruntergeladen und gespeichert. Das Spiel wurde bei Bedarf langsam lokal kopiert. Wenn Bandbreite verfügbar war, wurden die anderen noch nicht benötigten Dateien im Hintergrund übertragen. Dies funktionierte mit ALLEN Spielen, ohne dass neu kompiliert werden musste, da mein Minifilter-Treiber bei Bedarf Dateien erhielt.
Der schlimmste Nachteil war die Latenz. Meine Lösung bestand darin, ein kleines Markov-Kettenmodell zu erstellen, um vorherzusagen, welche Datei als Nächstes benötigt wird, und den Hintergrundlader zu priorisieren. Dies funktionierte wie ein Zauber und unser MMO konnte fast SOFORT ausgeführt werden, nachdem nur die EXE-Datei und einige Ladebildschirmdateien lokal waren (~ 20 MB). Wir konnten auf einen Link auf einer Webseite klicken und unser Spiel mit mehr als 10 GB in ca. 30 Sekunden ausführen . Wir hatten eine Trefferquote von 99%, das heißt, als das Spiel zum ersten Mal eine neue Datei benötigte, war sie bereits da!
Ich würde gerne jemand anderem helfen, dies umzusetzen.