Epic Games представила открытую систему контроля версий Lore для монорепозиториев и больших бинарных файлов
Компания Epic Games опубликовала в открытом доступе исходный код Lore — распределенной системы контроля версий нового поколения. Проект распространяется под свободной лицензией MIT и призван устранить фундаментальные архитектурные ограничения Git при работе с крупными монорепозиториями, в которых исходный код хранится бок о бок с гигабайтными бинарными ассетами: 3D-моделями, текстурами высокого разрешения, аудиофайлами и сериализованными ресурсами игровых движков.
Разработка медиапродуктов и современных gamedev-проектов на Unreal Engine требует одновременной работы сотен инженеров и художников с единым древом ресурсов. В этих условиях классические инструменты версиирования демонстрируют исчерпание своего масштабируемого ресурса, вынуждая команды искать альтернативные подходы к дедупликации и хранению.
Проблема масштабирования Git в gamedev и enterprise-монорепозиториях
Исторически система Git проектировалась для текстовых исходных файлов, где изменение одной строки выражается в виде компактного diff. При появлении крупных бинарных объектов стандартные механизмы Git оказываются малоэффективными: любое изменение текстуры на 2 ГБ приводит к созданию полного нового объекта в каталоге .git/objects, быстро раздувая репозиторий до сотен гигабайт.
Расширение Git LFS (Large File Storage) частично решает эту проблему путем выноса бинарников на отдельный сервер и замены их текстовыми указателями в рабочем дереве. Однако LFS имеет существенные архитектурные изъяны:
- Отсутствие межассетной дедупликации: если один и тот же текстурный пак дублируется в разных папках или ветках с незначительными изменениями, Git LFS сохранит файл целиком несколько раз.
- Выделенный сетевой накладной расход: каждый вызов
git checkoutили замена ветки требует обращения к LFS-серверу для скачивания бинарников по отдельному протоколу. - Блокировки и конфликты: отсутствие нативного механизма централизованного управления ревизиями с блокировкой бинарных файлов часто приводит к необходимости ручного разрешения конфликтов в несопоставимых бинарных ассетах.
Архитектура Lore: Меркл-деревья, дедупликация и чанкирование
В отличие от Git, Lore изначально проектировался с расчетом на бинарные данные как гражданина первого класса. В основе внутренней архитектуры системы лежат три ключевых компонента:
- Контентно-адресуемое хранилище (CAS): Все данные репозитория идентифицируются криптографическими хэшами их содержимого. Состояние проекта в любой момент времени описывается в виде дерева Меркла (Merkle tree). Это гарантирует мгновенное сравнение директорий, целостность данных и дедупликацию блоков между историей и ветками.
- Чанкирование крупных файлов (Chunked Storage): Файлы большого объема разрезаются на переменные или фиксированные блоки (чанки) с индексированным поиском. Если в 5-гигабайтном файле сцены изменился лишь небольшой блок данных, Lore сохранит и передаст по сети только обновленный чанк, повторно используя существующие блоки из CAS.
- Неизменяемая цепочка ревизий (Immutable Revision Chain): Ревизия представляет собой криптографически подписанный снимок хранилища. Хэш ревизии включает хэши родителей и содержащихся деревьев, формируя неразрывную цепочку аудита, устойчивую к фальсификации.
Организация ленивой загрузки и отложенной гидратации рабочих пространств
Одной из главных проблем Git в крупных проектах является необходимость полной локальной загрузки всей истории и всех файлов при первичном клонировании. Lore вводит концепцию разреженных рабочих пространств (Sparse Workspaces) с поддержкой ленивой гидратации на лету (On-demand Hydration).
При создании локального рабочего пространства разработчик или 3D-художник получает структуру каталогов и метаданные без немедленного скачивания бинарного содержимого. Фактические байты скачиваются с сервера только тогда, когда пользователь или инструмент (например, Unreal Editor) запрашивает доступ к конкретному файлу.
Серверная инфраструктура Lore (lore-server) использует многоуровневый кэширующий слой перед долговременным хранилищем. Это позволяет масштабировать пропускную способность для команд из тысяч разработчиков, не перегружая центральное хранилище повторяющимися запросами.
Ветвление в Lore реализовано как легковесные мутабельные указатели на вершины деревьев Меркла. Создание новой ветки или переключение между ними происходит мгновенно и без дублирования исходных данных на диске.
Практический стек SDK, серверный слой и быстрый старт
Ядро системы, серверный компонент и консольный клиент (lore CLI) написаны на языке Rust. Для интеграции в существующие пайплайны и редакторы Epic Games разрабатывает нативные SDK-клиенты:
- C/C++ & Rust: прямое встраивание в игровые движки и высоконагруженные сервисы.
- JavaScript & Python SDK: автоматизация сборки, CI/CD пайплайны и боты.
- C# & Go SDK: интеграция с инструментами разработки и enterprise-инфраструктурой.
Для ознакомления с возможностями системы разработчики могут запустить локальный демонстрационный сервер с помощью официальных скриптов установки:
Для систем macOS и Linux:
curl -fsSL https://raw.githubusercontent.com/EpicGames/lore/main/scripts/install.sh | bash -s -- --demo
Для PowerShell в Windows:
$env:LORE_DEMO=1; irm https://raw.githubusercontent.com/EpicGames/lore/main/scripts/install.ps1 | iex
Ограничения предрелизного состояния и интеграционные риски
Epic Games подчеркивает, что проект Lore находится в предрелизной стадии (Pre-1.0) и подлежит активной доработке. До официального релиза 1.0 надисковые форматы данных, сетевые протоколы и программные API могут меняться без сохранения обратной совместимости.
Кроме того, открытый репозиторий Lore пока не может напрямую взаимодействовать с билдом UEFN (Unreal Editor for Fortnite). Это связано с тем, что в UEFN используется закрытый формат сжатия данных. Команда Epic Games ведет работу по миграции UEFN на открытый алгоритм сжатия, применяемый в текущем open-source репозитории Lore, чтобы полностью устранить разрыв между внутренними и публичными инструментами.
Открытие Lore создает мощный прецедент на рынке систем контроля версий. Сочетание открытого кода под лицензией MIT, архитектуры на основе деревьев Меркла и нативной поддержки бинарных ассетов делает проект перспективным стандартом для игровой индустрии и enterprise-разработки.

