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

Билдер – это программа которая подготавливает файлы к тому чтобы с ними мог работать апдейтер. Подготовка происходит в несколько основных этапов:
- Считывание информации о файлах и папках.
- Синхронизация с созданным ранее патчем.
- Построение карты файлов для апдейтера.
- Удаление из патча не участвующих файлов.
- Запаковка всех файлов по отдельности.
Сбор информации
Для того чтобы гарантировать правильно скаченные при апдейте файлы в билдере мы собираем информацию о файлах которая включает имя, размер и самое главное Hash сумму.
Hash сумма – это специфичный идентификатор файла, который высчитывается математическими алгоритмами на основе информации которая содержится в нем. В данный момент мы используем алгоритм CRC32 с точки зрения оптимизации и ускорения процесса сбора информации. При любом изменении файла его хеш-сумма изменится даже если размер останется прежним.
Пример строки с информацией о файле, где 4144 это размер в байтах, а dbc44dcf это хеш сумма: L2.ini 4144 dbc44dcf
Синхронизация

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

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

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

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

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

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

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

Все настройки по умолчанию включены.
После того как все синхронизовано и настроено остается нажать на кнопку “Начать упаковку” и запусть сборку. Вся информация так же отображается в логе, а папка с результатом откроется автоматически.
Останется только скопировать файлы на хост и дать ссылку мне.
В заключении
Напомню всем что исходники билдера находятся в общем доступе на GitHub, буду рад любой активности.
Что ж на этом все, спасибо за внимание! Теперь вы немного узнали как создать апдейтер л2 и как работает наш билдер файлов патча lineage 2 (и не только) . Надеюсь вопросов не осталось, но если все же есть – welcome на форму связи