「Lore」:スケーラビリティを追求した次世代のオープンソース・バージョン管理システム
Lore – Open source version control system designed for scalability
Lore – Open source version control system designed for scalability
「Lore」は、大規模な開発環境でも高いスケーラビリティを発揮するように設計された、新しいオープンソースのバージョン管理システムです。
もしプロジェクト名が「Data」だったら、もう少し信頼できたかもしれない。
ちょうど今日GitHubに修正をプッシュした時に、GitのUIがいかにユーザーフレンドリーじゃないか考えていたところだよ:
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 10 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 290 bytes | 290.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
熱心なGitユーザーならこれらが何を意味しているか分かるんだろうけど、ほとんどの人(Gitを使っている人の大半でさえ、多分)にとっては全くの暗号だよ。「デルタ圧縮」って一体何?なぜスレッド数を気にする必要があるの?「オブジェクト」って何だし、それが「ローカル」だとなぜ重要なの?「パック再利用」って何さ?
ドキュメントを見る限り、Loreはこの点でもう少しマシに見えるね:
Pushing 1 fragment(s)
Pushed 1 fragment(s), 124.00 bytes
Pushing a3f8c2d1... to branch main
Pushed revision 1 -> a3f8c2d1... to branch main
文脈補足として。HNの多くの人はゲーム開発に関わったことがないかもしれないけど、これは一般的なソフトウェア開発用としてGitと競合させるためのものじゃないよ。これはゲーム開発におけるPerforceの競合製品だ。
Gitはコードのようなテキストベースのファイルには良いけど、テクスチャや3Dモデル、オーディオファイルなど、ゲーム開発者が共同作業する必要がある非テキストファイルには本当に向いていない。例えば、アーティストがアセットを編集している間は排他的ロックをかける必要がある。なぜなら、二人のアーティストが非同期で編集した内容をマージする賢い方法なんて存在しないからね。
この分野の現時点での最高峰(SOTA)は、プロプライエタリなシステムであるPerforce(https://www.perforce.com/products/helix-core )だ。ゲーム開発の友人に聞く限り、Perforceは動いている時は最高だけど、たまに発生するトラブルの対処にツールエンジニアを配置して手動で直す必要があるくらい厄介なこともある。Git LFSという選択肢もあるけど、3~4人以上のチームプロジェクトで作業する時は、みんなPerforceの方を好むね。
前提として、Git-LFSがダメだからRustでゼロから新しいデータバージョン管理システムを作る必要がある、という話だね。その前提には概ね同意するけど、既に同じような仕組みを持った成熟したデータバージョン管理システムはたくさんあるよ。
AIのおかげで、最近は誰でもコンテンツ指向でチャンクレベルの重複排除を行うバージョン管理システムをRustでサクッと書けるようになったみたいだね…
冗談はさておき、Loreはすごくクールに見える!面白いのは、異なるドメインや業界が同じような課題を抱えているにもかかわらず、知見が共有されていないように見える点だ。このケースでは、AIとゲーム業界の両方が、巨大なバイナリファイルを大規模にバージョン管理できるストレージシステムを必要としている。ここにはアイデアを共有するチャンスがたくさんあると思うけど、現状ではその欠如が逆に新しい機会を生んでいるのかもね。
「Full-surface API」については、ここの誰も触れていない機能だね。これはGitが意図的にリンク可能なライブラリを提供していないことへの皮肉かな?前にこれを見たよ:https://news.ycombinator.com/item?id=48470604
これは特にUnrealエンジンでのゲーム開発において、非常に期待できる発表だね。他の目的だったらそこまで気にならないかもしれない。
Perforceには間違いなく挑戦者が必要だ。Perforceが今の地位にいるのは、使い方が簡単だからでも管理が楽だからでもない。例えばブランチ操作なんかで見れば、Gitの方がずっとシンプルだよ。
ゲーム開発でp4が好まれる理由は他のコメントでも言及されている通り、大規模プロジェクトへの対応、権限管理、ファイルロック機能などだ。
もう一つ、Unreal開発においてp4が王様である決定的な理由は、エンジン内でのサポートの手厚さだ。完璧とは言わないまでも、Epicが使っているからこそ最も手厚くサポートされているVCSなんだ。Gitプラグインでさえひどく未完成なのは、Epicが内部でGitを使っていないからだ。だからLoreには、ファーストクラスなサポートを期待したい。Unreal内でのサポートがもっと良ければ、もっとGitを推奨するんだけどな。
(背景:私はゲーム開発歴20年弱で、2人から200人規模の会社、あらゆるエンジンやバージョン管理システムを経験してきた。使えるならGit派だ。Unrealで使うなら、小規模プロジェクトか、技術に精通したチームメンバーがいる場合だね。仕事とチームに適したツールを選ぶべきさ。)
どうやら「新しい」ものではなく、今回オープンソース化しただけみたいだね。FQAから引用するよ。
Lore(旧名: Unreal Revision Control)は、UEFN(Unreal Editor for Fortnite)に組み込まれているバージョン管理システムであり、クリエイターたちはこれで自身の島をバージョン管理してきた。また、Epic内部のチームでも段階的に採用が進んでおり、UEFNのクックパイプラインのバックエンドストアとして実装されている。これにより、冗長なファイル転送が排除され、変更を公開してから実際にプレイ可能になるまでの時間が劇的に短縮された。
EpicのC++やVerseではなくRustで書かれているのは驚きだ。なぜなんだろう。
前回のゲームスタジオではPerforce (Helix Core Cloud) を使わなきゃいけなかった。クリエイター職のスタッフのほとんどがすでに慣れ親しんでいる、業界の事実上の標準だね。プログラマーはあまり好きじゃないみたいだけど、ゲーム開発の決定権は彼らだけで持っているわけじゃない。Unreal Engine 5で作業する際の安全で確実なデフォルトでもあるしね。
とはいえ、古さを感じさせる部分は確かにある。私たちはPerforceのクラウドサービスを初期から使っていたユーザーの一つだったんだけど、小規模で自分たちでホストしたくなかったからね。でも、不安定な面もあった。サービスにアクセスするにはAzureアカウントを登録する必要があったし、トリガーのような設定変更にはサポートに依頼しなきゃいけなかった。GitHubや他のSaaS製品の世界から来ると、古いモデルを新しい皮で包み直そうとした感が否めないんだ。
Git LFSにも非公式なサポートはあるけど、いざという時は完全に自己責任だし、Epicもそこにはあまり手を貸してくれない。
この分野の競争は大歓迎だ。特に、エンジン側から公式にフルサポートする計画があるならなおさらね。
テキストの世界から来た人向けに、なぜゲーム開発でファイルの「マージ」が一般的じゃないのか、以前ブログに書いたよ:https://www.kuril.in/blog/why-game-devs-dont-merge-files/
この分野にはPlasticSCMという非常に優れた競合がいたし、今もいるよ。数年前にUnityに買収されたんだけど、Unityの舵取りは上手くいっていないね。Epicがやっているようにオープンソース化すべきだったんだ。でも彼らは損益責任を押し付ける道を選んだ。彼らの財務にどう貢献しているのか気になるところだ。
2年後とかに、実際に企業がこのシステムを導入すると思う?
HelixやPerforceなら、何十年もこのビジネスをやっていて、それが彼らのコアビジネスだから信頼できる。これからも製品のメンテナンスを続けてくれると分かるからね。
でもEpicの場合、明日突然このプロジェクトを捨てたとしても、彼らのビジネスには何の影響もない。むしろ開発リソースが浮いて、本業の助けにすらなるかもしれない。
Cloudflareが長期にわたってEmDashに投資し続けると信じる人がいるのと似ているね。CloudflareはCMSに関心があるわけじゃない。彼らのビジネスは、読者や著者、サイト所有者に最高の体験を提供することじゃないんだ。彼らにとって、それはビジネスとはほとんど関係のないサイドハッスルに過ぎないよ。