Git не подходит для игр… поэтому Epic создала Lore

BBetter Stack
컴퓨터/소프트웨어창업/스타트업게임/e스포츠

스크립트

00:00:00Компания Epic Games создала собственную систему контроля версий, потому что её перестала устраивать Git.
00:00:05Они написали её на Rust и выпустили в открытый доступ. Она называется Lore. Так что да,
00:00:10компания, создавшая Fortnite, построила альтернативу Git. Но Git всё ещё отличная система,
00:00:15очевидно. Однако Git создавался для кода. В основном это текстовые файлы, много мелких файлов,
00:00:21изменения в которых обычно ограничиваются парой строк. С играми всё практически с точностью до наоборот. Итак,
00:00:26как Lore соотносится с Git и как вообще с ней работать? Давайте выясним.
00:00:35К этому моменту у нас накопились огромные текстуры, аудиофайлы, видео, 3D-модели
00:00:41и всевозможные бинарные ассеты, которые могут весить по сотни мегабайт или даже несколько гигабайт каждый. И
00:00:47как только такие файлы начинают меняться, всё становится по-настоящему запутанно. Репозиторий разрастается, клонирование замедляется,
00:00:53история становится огромной. И в конечном итоге кто-то говорит: “Ладно, может, стоит использовать Git LFS?” Git LFS помогает,
00:01:01но это также ощущается как костыль, прикрученный к системе, которая никогда не проектировалась для таких данных.
00:01:06К тому же появляются квоты, ограничения пропускной способности и старые ассеты, загромождающие историю. Поэтому
00:01:12многие студии используют Perforce. И, справедливости ради, Perforce работает. Не зря так много игровых
00:01:18студий выбирают его, но он дорогой. Он может быть сложным. И как только ваш проект становится достаточно большим,
00:01:24обычно появляется человек, который отвечает за поддержание всего этого в рабочем состоянии. Это то, что Lore
00:01:29была призвана исправить. Если вам нравится инструменты для кодинга, ускоряющие рабочий процесс, обязательно подпишитесь.
00:01:35У нас постоянно выходят новые видео. Что ж. Теперь, вместо того чтобы просто обсуждать Lore,
00:01:39это круто. Дайте я запущу её. Позвольте показать, как она работает. Демо начинается с одной команды установки
00:01:44и флага “demo”, который мы сейчас выполним. И всё. Через пару секунд
00:01:51сервер Lore запущен локально. Никаких облачных аккаунтов, ключей или настройки сертификатов. Он работает здесь
00:01:57на этих портах. И чтобы доказать, что он действительно активен, я могу просто отправить запрос к health-эндпоинту вот
00:02:03здесь. И я сделаю это в этом терминале. И вот, пожалуйста. Он жив. Он работает.
00:02:08Нет никаких фоновых служб, которые нужно вручную связывать. Не нужно генерировать токены аутентификации. Нет
00:02:14никаких мастеров настройки. Она просто запускается. Теперь давайте создам репозиторий. Так что я создам папку,
00:02:22верно? И мы создадим этот репозиторий. А теперь я создам большой бинарный файл
00:02:27и закоммичу его, хорошо? Это просто тестовый файл. Но давайте создадим файл покрупнее. Я запускаю
00:02:32DD для дублирования данных. Теперь вместо того, чтобы обрабатывать этот 100-мегабайтный файл как один огромный объект,
00:02:40Lore разбивает его на более мелкие фрагменты. Эти фрагменты хешируются, сжимаются с помощью Zstandard и хранятся в
00:02:47дереве Меркла с контентной адресацией. Если большая часть файла остаётся прежней, Lore не нужно сохранять ещё одну полную
00:02:52копию всего файла. Она может повторно использовать уже имеющиеся фрагменты и хранить только изменённые части.
00:02:58Это гораздо больше подходит для крупных бинарных ассетов. Сразу после завершения коммита вы можете увидеть
00:03:04локальное состояние, созданное на диске. Здесь появилась папка Lore с конфигурацией и
00:03:10метаданными. Хорошо, теперь, когда это у нас есть, давайте создадим ветку. Окей, я могу запустить “Lore branch create”
00:03:17и назвать ветку. Это работает почти как в Git. Давайте переключимся на неё. Давайте на самом деле внесём небольшое
00:03:24изменение здесь. Я создам быстрый текстовый файл и закоммичу его в эту ветку. Так что я вношу изменения, затем мы можем добавить их в индекс,
00:03:31а потом закоммитить, верно? Весь процесс примерно такой же, как в Git. Теперь я собираюсь переключиться
00:03:37обратно. И это произошло практически мгновенно. Другой важный момент заключается в том, что ничего из этого не требовало обращения
00:03:44к какому-либо серверу. Добавление в индекс, коммиты, создание веток, переключение, сравнение — всё это происходит локально. Так что
00:03:50несмотря на то, что у Lore есть центральный сервер, ваша обычная повседневная работа остаётся быстрой, и вы можете продолжать
00:03:56работать оффлайн. Это просто создаёт ощущение лёгкости. Теперь возникает вопрос: окей,
00:04:02куда деваются все данные? В этой демо-версии всё временно. Поэтому, когда я останавливаю сервер,
00:04:08данные исчезают. Это потому, что я просто использую демонстрационный режим. В реальной установке вы бы запускали сервер Lore
00:04:15с файлом конфигурации и постоянным хранилищем. Те же команды CLI и локальный рабочий процесс остаются абсолютно
00:04:21такими же. Вы просто указываете серверу на реальные директории или объектное хранилище, вместо того чтобы
00:04:27удалять ту временную папку. Теперь о Git: Git даёт вам историю снимков проекта. Хотя
00:04:34внутренне он выполняет множество умных оптимизаций, Lore с самого начала спроектирована вокруг разбиения на фрагменты и дедупликации.
00:04:40Поэтому для крупного проекта с большим количеством ассетов ей не нужно каждый раз воспринимать новую версию файла
00:04:47как полностью отдельный гигантский объект. Lore также может подгружать файлы по требованию, так что вы можете работать
00:04:53с репозиторием, содержащим огромное количество данных, не скачивая каждый отдельный ассет с самого начала.
00:04:59Вы загружаете только то, что вам действительно нужно для той части проекта, над которой вы работаете.
00:05:03Теперь один момент, который немного смутил людей при запуске Lore: централизованная она или
00:05:08распределённая? Она централизованная. Существует один основной сервер, но большая часть работы, которую мы делаем,
00:05:15происходит локально. Поэтому на практике она занимает место где-то между Perforce и Git. Вы получаете централизованный контроль
00:05:22и управление доступом, но локальные операции остаются быстрыми и не зависят от доступности сервера
00:05:28каждую секунду. Есть и другие приятные отличия. Lore лицензирована по MIT, протокол
00:05:34открыт, и есть SDK для множества языков, что значительно упрощает написание скриптов и
00:05:39создание инструментов вокруг неё. Пожалуй, сейчас самое время быть реалистами. Lore — это не то,
00:05:45чем я бы завтра заменил продакшн-установку Perforce. Она всё ещё версии ниже 1.0. Epic Games заявляет, что API могут измениться
00:05:52до первого стабильного релиза, и проект явно всё ещё развивается. Также сейчас нет
00:05:58совместимости с Git, и нельзя просто направить Lore на существующий Git-репозиторий и перенести всю
00:06:03историю. Она также требует собственного хостинга. Нет облачного сервиса, где можно создать аккаунт,
00:06:09запушить репозиторий и закончить на этом. И настольное приложение, которое вы могли где-то видеть, не включено в
00:06:15open-source релиз. Что вы получаете, так это основную библиотеку, сервер, CLI и SDK. Этот графический интерфейс — не
00:06:22часть этого. Затем, конечно, производительность. Как она работает? Epic заявляет, что Lore может обрабатывать огромные
00:06:28репозитории, не замедляясь, как это делают другие системы. И у Epic очевидно есть опыт работы с
00:06:33очень крупными проектами. Но сейчас большая часть этих утверждений исходит от самой Epic. Пока что
00:06:39нет действительно твёрдых независимых бенчмарков. Так что производительность выглядит многообещающе, но пока мы не начнём
00:06:45тестировать её по-настоящему, сложно понять, как она будет работать. Стоит ли её использовать? Ну, с ней интересно
00:06:50поиграться. Вы делаете игры? Вы строите масштабные проекты? Хорошо, для нового проекта, возможно.
00:06:56Если вы просто хотите увидеть, куда может двигаться контроль версий для больших бинарных ассетов, её стоит
00:07:01попробовать. Протестируйте на чём-то некритичном, поиграйте с ней, посмотрите, как она работает, как выглядит процесс.
00:07:07Главный момент здесь не в том, заменит ли Lore Git или Perforce в ближайшее время. Главный момент в том, что
00:07:14контроль версий перестал быть решённой проблемой, как только проекты стали поставляться с огромным количеством
00:07:19бинарных данных. Git победил в области текста и мелких файлов. Lore пытается решить то, что идёт вслед за этим.
00:07:27И честно говоря, победит она или нет, это всё равно очень крутое направление. Если вам нравятся советы по программированию
00:07:32и подобные фишки, обязательно подпишитесь на канал Betterstack. Увидимся в следующем видео.

핵심 요약

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

하이라이트

  • Epic Games разработала систему контроля версий Lore на языке Rust для управления крупными бинарными ассетами.

  • Lore разбивает файлы большого размера на фрагменты, которые хешируются и сжимаются с помощью алгоритма Zstandard.

  • Архитектура Lore использует дерево Меркла с контентной адресацией, что позволяет хранить только изменённые части файлов вместо создания полных копий.

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

  • Локальные операции, такие как создание коммитов, веток и сравнение версий, выполняются без обращения к центральному серверу.

  • Lore находится в стадии разработки (версия ниже 1.0) и пока не обладает совместимостью с историей Git-репозиториев.

타임라인

Ограничения Git и необходимость альтернативы

  • Git оптимизирован для работы с текстовыми файлами небольшого размера.
  • Игровые проекты содержат множество бинарных ассетов весом до нескольких гигабайт.
  • Git LFS функционирует как надстройка и не решает проблемы квот и загромождения истории репозиториев.
  • Perforce широко используется в индустрии, но требует значительных затрат и сложного обслуживания.

Игровые ассеты, такие как текстуры и 3D-модели, создают высокую нагрузку на Git, замедляя клонирование и раздувая историю коммитов. Хотя Git LFS частично исправляет ситуацию, он не был изначально спроектирован для подобных данных. Студии часто выбирают Perforce, несмотря на высокую стоимость и сложность настройки серверной части.

Принцип работы и функциональность Lore

  • Lore запускается локально без необходимости сложной настройки аутентификации.
  • Файлы разбиваются на мелкие фрагменты для эффективного хранения.
  • Изменения в файлах фиксируются через повторное использование существующих фрагментов.
  • Операции с индексом, коммиты и создание веток выполняются полностью локально.

При добавлении файлов в Lore, система разбивает крупные объекты на фрагменты и сжимает их через Zstandard. Это позволяет при обновлении 100-мегабайтного файла сохранять только изменённые части в дереве Меркла. Рабочий процесс максимально приближен к Git, но оптимизирован для бинарных данных, обеспечивая высокую скорость локальной разработки.

Архитектурные особенности и текущий статус

  • Lore является централизованной системой с быстрым локальным рабочим процессом.
  • Файлы подгружаются по мере необходимости, минимизируя трафик.
  • Проект распространяется с лицензией MIT и включает SDK для интеграции.
  • Текущая версия ниже 1.0 не гарантирует стабильность API и отсутствие совместимости с Git.

Хотя Lore централизована, она сочетает контроль доступа с быстродействием, характерным для распределённых систем. В настоящее время она не поддерживает импорт истории из Git и требует собственного сервера для хранения данных. Epic Games предоставила библиотеку, CLI и SDK, но графический интерфейс в открытый доступ не включен.

커뮤니티 글

모든 글 보기