Я одного разу реалізував це для ММО. Один з вихідних під час спроби встановити WOW для моєї дочки зайняв 48 минулих годин (патчі, помилки завантаження тощо), тому я вирішив зробити власне краще рішення.
Гра зазвичай вимагає сказати 10 Гб даних, перш ніж вона запуститься. Не всі файли насправді потрібні одразу, але ігри використовували, щоб чекати, поки всі файли не знайдуться локально. Моє рішення полягало в тому, щоб гра запускалася локально як нормально, але EXE надумав (використовуючи мініфільтр файлів Windows), думаючи, що всі файли вже присутні. Коли запитуваний файл був не локальним, файлова система завантажила його та зберегла. Гра повільно копіювалася локально за потребою. Коли була доступна пропускна здатність, інші ще не потрібні файли проскакували у фоновому режимі. Це працювало з ВСІМ іграми без необхідності перекомпілювати, тому що мій драйвер minifilter отримав файли, коли це було потрібно.
Найгіршим недоліком була затримка. Моє рішення для цього полягала в тому, щоб створити невелику модель ланцюга Маркова, щоб передбачити, який файл може знадобитися далі, та встановити пріоритет для фонового завантажувача. Це спрацьовувало як шарм, і наш MMO зміг запустити майже НЕМОВНО після того, як лише EXE і кілька файлів екранного завантаження були локальними (~ 20 Мб). Нам вдалося натиснути посилання на веб-сторінці і запустити нашу гру 10 Гб приблизно за 30 секунд . У нас 99% частота звернень, тобто коли для гри вперше потрібен новий файл, він уже був там!
Я був би радий допомогти будь-кому іншому здійснити це.