Epic Gamesが大容量バイナリに強いバージョン管理システム「Lore」を公開、ゲーム制作のコードと素材をまとめて管理

Epic Gamesがゲームやエンターテインメント制作向けのオープンソースのバージョン管理システム「Lore」を公開しました。Loreはソースコードだけでなく画像や音声、3Dモデルといった大容量のバイナリファイルを扱うことを前提に設計されており、MITライセンスで利用できます。
Lore | 次世代オープン ソース バージョン管理 - Lore
https://lore.org/
バージョン管理システムとしてはGitが有名ですが、Gitはソースコードを主な対象として発展してきたため、巨大なバイナリファイルを扱う際にGit Large File Storage(Git LFS)などの追加機構を必要とします。一方で大容量素材に強い集中型のバージョン管理システムには、日常的な操作でもサーバーとの通信が必要になったり、通信方式や実装が公開されていなかったりするものがあります。コードと巨大な素材を同じプロジェクトで扱うゲーム制作では、両者の長所をまとめた仕組みが求められるというわけ。
Epic Gamesが今回発表したLoreは、データの内容から計算したハッシュ値でデータを識別するGitのような方式と、集中型システムによるアクセス制御やデータ保全を組み合わせたバージョン管理システムです。
Loreはファイルを小さな断片に分割して保存します。変更前と変更後で共通する断片を再利用することで、数GBのファイルを少し修正しただけでファイル全体を保存し直す事態を避けられ、保存や転送に必要なデータ量を削減できます。

また、巨大なリポジトリを最初から丸ごとダウンロードせずに済むよう、必要な範囲だけを取得する仕組みも用意されています。開発者はソースコード周辺だけを取得し、アーティストは担当する素材だけを扱うといった運用が可能です。さらにステージングやコミット、ブランチ作成、差分確認といった普段の編集操作はサーバーへの通信なしで実行できるとのこと。
変更履歴の信頼性を確保するため、Loreはファイルやディレクトリの状態からハッシュ値を計算するマークルツリーを採用しています。各リビジョンには親となるリビジョンのハッシュ値も含まれるため、過去のデータが書き換えられた場合は後続の履歴との不一致を検出できます。
Loreの全機能はコマンドラインから操作できるほか、C、C++、C#、Rust、Go、Python、JavaScript向けのAPIやSDKも公開されています。Windows、macOS、Linuxに対応し、手元のPCだけで動かすローカルモードから始めることが可能。チームの規模に応じてサーバー構成を拡張できます。

なお、Loreは完全な新規開発として突然登場したわけではなく、以前よりUnreal Editor for Fortnite(UEFN)の組み込みバージョン管理システム「Unreal Revision Control」として利用されてきたとのこと。今回の発表ではLoreのライブラリやサーバー、コマンドラインツールなどがオープンソースとして公開されています。
記事作成時点ではLoreのバージョンがまだ0.x系となっていて「プレ安定版」という扱いのため、APIや通信プロトコルが変更される可能性があるとのこと。ファイルを編集中であることを他の利用者に知らせる基本的なロック機能も搭載されていますが、他の利用者による編集を強制的に禁止する機能や大規模環境向けのロック管理は開発途中です。Epic Gamesも既存のバージョン管理システムをすぐに置き換える段階ではなく、開発者が試験導入してワークフローを検証する段階だと説明しています。
Epic Gamesは今後、数百万ファイルに対応するロック機能や仮想ファイルシステム、Visual Studio Code向けプラグインを整備し、デスクトップクライアントやウェブクライアントのソースコードも公開する方針です。ロードマップの時期や優先順位は確約ではなく、利用者から寄せられる要望や開発参加者の提案を反映しながら更新していくと述べています。
