Я однажды реализовал это для ММО. Однажды на выходные, когда я пытался установить WOW для моей дочери, ушло 48 часов (исправления, ошибки загрузки и т. Д.), Поэтому я решил найти собственное лучшее решение.
Для запуска игры обычно требуется 10 ГБ данных. Не все файлы на самом деле нужны сразу, но игры привыкли ждать, пока все файлы не появятся локально. Мое решение состояло в том, чтобы игра работала локально, как обычно, но EXE обманом (используя минифильтр файлов Windows) решил, что все файлы уже присутствуют. Когда запрашиваемый файл не был локальным, файловая система загрузила его и сохранила. Игра медленно копировалась локально по мере необходимости. Когда была доступная полоса пропускания, другие, пока не нужные, файлы добавлялись в фоновом режиме. Это работало со ВСЕМИ играми без необходимости перекомпиляции, потому что мой драйвер минифильтра получил файлы при необходимости.
Худшим недостатком была задержка. Моим решением было создать небольшую модель цепочки Маркова, чтобы предсказать, какой файл может понадобиться дальше, и установить приоритет для фонового загрузчика. Это работало как чудо, и наша MMO могла работать почти НЕМЕДЛЕННО после того, как только EXE-файл и несколько файлов с экрана загрузки были локальными (~ 20 МБ). Мы смогли щелкнуть ссылку на веб-странице и запустить нашу игру объемом более 10 ГБ примерно за 30 секунд . У нас был коэффициент попадания 99%, то есть, когда игре понадобился новый файл, он уже был там!
Я был бы рад помочь кому-либо еще реализовать это.