1. Гость, мы просим Вас ознакомиться с Правилами Форума и Отказом от ответственности!

Последнее сообщение от HammerJade

  1. HammerJade
  2. HammerJade
  3. HammerJade
  4. HammerJade
  5. HammerJade
  6. HammerJade
  7. HammerJade
  8. HammerJade
  9. HammerJade
  10. HammerJade
  11. HammerJade
  12. HammerJade
    Сообщение

    Launcher-Updater для MMORPG

    те исходники апдейтера что удалось найти для примера, кривые У патчера вполне простой алгоритм. Опишу то, что сам пытался несколько раз делать: 1. скачивание файла version 2. если версия больше, чем в клиенте, то: 2.1.1. скачивание списков обновлений от следующей версии до последней - Например текущая == 2, новая == 5 -> качает списки 3, 4, 5 и т.п. 2.1.2. выделение файлов для обновления* 2.1.3. в цикле скачивание файла по http протоколу 2.1.4. распаковка локального файла в оперативку и рассчёт md5-суммы файла 2.1.5. если md5 локального и скачанного не совпали, то добавить новый файл в архив - md5 скачанного файла хранится в самом списке обновления, чтобы не тратить время на подсчёт - но с другой стороны доп. рассчёт md5 скачанного файла однозначно информирует, скачан ли файл корректно иначе 2.2. иначе очистка памяти, включение кнопки "играть" С полной проверкой тот же самый алгоритм, за исключеним того, что локальная версия форсированно передаётся "1" Чуть более стабильный алгоритм патчера: 1. скачивание файла version 2. если версия больше, то: 2.1.1. скачивание списков обновлений 2.1.2. выделение файлов для обновления* 2.1.3. в цикле по списку подсчитываются контрольные суммы локальных файлов с занесением файлов в список на скачивание, если md5 не совпали 2.1.4. в цикле скачивание файлов из списка на скачивание (тут же проверка md5 скачанного файла) 2.1.5. в цикле добавление всех скачанных файлов в игровые архивы 2.2. иначе очистка памяти, включение кнопки "играть" Есть ещё вариант написания сервера распределения файлов и прямого подключения патчера к нему. При грамотной реализации этот способ будет в несколько раз быстрее скачивать файлы. *Алгоритм выделения списка файлов для скачивания /!\ Achtung! Применяется только в случае непоследовательного обновления, если есть несколько патчей сразу: - Обратный цикл по спискам, начиная с предпоследнего до первого включительно**: - - Прямой цикл от первого до последнего файла в списка: - - - Если файл из последнего списка отсутствует в текущем списке, то добавляем его в последний список обновления **Почему с предпоследнего? Потому что в последний список мы будем собирать полный список файлов из нескольких списков. Так же к этому патчеру нужно будет написать билдер, который соберёт информацию о файлах и запишет её в списки для обновления. Решил не морочиться с билдером и взял существующий, тут появилась проблема(при чтении одного атрибута, качает, но когда пытается скачать 2 и больше файла по атрибутам, вылазит ошибка "удаленный сервер возвратил ошибку (403) запрещено"), не имеет значения, чтение патч листа идёт с локалки или сервере, ошибка та же, что может быть?
    Сообщение от: HammerJade, 2 авг 2017 в разделе: Услуги
  13. HammerJade
  14. HammerJade