Patch Builder — что, зачем, и как пользоваться?

UpNova - PatchBuilder

В данном посте постараюсь подробно рассказать про наш билдер для файлов, зачем он нужен, и как собрать патч для своего апдейтера.

Принцип работы билдера

Билдер — это программа которая подготавливает файлы к тому чтобы с ними мог работать апдейтер. Подготовка происходит в несколько основных этапов:

  1. Считывание информации о файлах и папках.
  2. Синхронизация с созданным ранее патчем.
  3. Построение карты файлов для апдейтера.
  4. Удаление из патча не участвующих файлов.
  5. Запаковка всех файлов по отдельности.

Сбор информации

Для того чтобы гарантировать правильно скаченные при апдейте файлы в билдере мы собираем информацию о файлах которая включает имя, размер и самое главное Hash сумму.

Hash сумма — это специфичный идентификатор файла, который высчитывается математическими алгоритмами на основе информации которая содержится в нем. В данный момент мы используем алгоритм CRC32 с точки зрения оптимизации и ускорения процесса сбора информации. При любом изменении файла его хеш-сумма изменится даже если размер останется прежним.

Пример строки с информацией о файле, где 4144 это размер в байтах, а dbc44dcf это хеш сумма: L2.ini 4144 dbc44dcf

Синхронизация.

Если вы уже создали патч для своего клиента не спешите его удалять. В нашем билдере присутствует система синхронизации которая сравнивает прошлый патч с новыми файлами. Магия происходит после сравнения виртуального дерева файлов нового патча с картой файлов ранее созданного патча (UpdateInfo.xml). Результат синхронизации отображается на виртуальном дереве файлов цветовыми индикаторами:

  • Зеленый — новый файл.
  • Синий — измененный файл.
  • Черный — нетронутый файл.
  • Красный — удаленный файл.

 

Сборка

Сборка начинается с превращения виртуального дерева файлов в плоский вид тестового файлика формата xml, назовем ее картой файлов апдейта. В этом файлике содержится вся информация которая потребуется апдейтеру для успешного обновления. Подробнее можно узнать в посте про Updater.

После чего сначала удаляются файлы которые уже не участвуют в новом патче. И наконец происходит запаковка каждого файла в архив с помощью Zip алгоритма с параметром best compression.

После сборки результат билда откроется автоматически.

Как же пользоваться?

Запустите UpdateBuilder.exe. В левой части выберите или перетащите папку с новым патчем. После выбора начнет загружаться информация о файлах. Подробная информация о происходящем пишется в окно логирования.

После построения виртуальной карты файлов пора выбрать папку в которую сохранять результат патча. Если вы уже делали билд выбирайте ту же папку для синхронизации файлов. Если делаете патч в первый раз выбирайте пустую папку.

Синхронизация прошла, и мы получили полную информацию о файлах, что же дальше? А дальше мы можем приступить к настройке параметров файлов в обновлении. В нашей системе есть два вида параметров:

  1. Участвует ли файл в быстрой (критической) проверке.
  2. Требуется ли проверять файл на размер и хеш-сумму при обновлении.

Данным параметрам соответствуют два переключателя у каждого файла. Те же переключатели на папках меняют у всех зависимых элементов.

Подробнее про быстрое\критическое обновление

При запаковке одного патча вы можете указать какие файлы из всех требуется обновить при быстрой проверке в апдейтере. И здесь мы развязываем вам руки, вам доступна как сборка простого патча с добавлением папки system в быструю проверку, так и вариант собрать весь клиент игры и выделить файлы патча для быстрого обновления. Таким образом вы сможете раздавать и обновлять всю игру своим пользователям. На стороне апдейтера можно обыгрывать эту возможность разными кнопками быстрого и полного обновления, а так же запускать быстрое обновление при старте апдейтера.

Подробнее про проверку на размер и Hash

Иногда требуется не проверять файлы на изменения а только на наличие, но такие файлы должны лежать в файлах патча, как быть? Просто отключить проверку таких файлов на этапе сборки патча. Примерами файлов могут быть любые пользовательские настройки: «Option.ini», «WindowsInfo.ini», «chatfilter.ini», «User.ini» . Файлы с отключенным флагом будут скачиваться только если отсутствуют у игрока.

Все настройки по умолчанию включены.

После того как все синхронизовано и настроено остается нажать на кнопку «Начать упаковку» и запусть сборку. Вся информация так же отображается в логе, а папка с результатом откроется автоматически.

Останется только скопировать файлы на хост и дать ссылку мне.

В заключении

Напомню всем что исходники билдера находятся в общем доступе на GitHub, буду раз любой активности.

Что ж на этом все, спасибо за внимание! Надеюсь вопросов не осталось, но если все же есть — welcome на форму связи.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заказать проект

Вы можете связаться с нами удобным для вас способом. Здесь вы можете оставить заявку и мы свяжемся сами уже скоро, главное укажите контакты чтобы мы вас не потеряли