Epic Games Lore 버전 관리 시스템
Epic Games, 대규모 바이너리 에셋 버전 관리를 위한 Lore 도입
Epic Games는 소스 코드와 대규모 바이너리 에셋이 결합된 프로젝트의 확장성 문제를 해결하기 위해 설계된 오픈 소스 버전 관리 시스템(VCS)인 Lore를 출시했습니다. Git은 텍스트 기반 파일에 최적화되어 있는 반면, Lore는 게임 개발 및 엔터테인먼트 분야의 높은 데이터 요구 사항을 충족하도록 설계되어 Perforce Helix Core와 같은 독점 시스템에 대한 확장 가능한 대안을 제공합니다.
Lore는 MIT 라이선스로 출시되었으며 라이브러리 세트, 서버 및 CLI로 제공되며, C/C++, C#, Rust, Go, Python, JavaScript를 위한 SDK가 제공됩니다.
기술 아키텍처: Merkle Trees 및 Chunked Storage
Lore는 데이터 무결성과 확장성을 보장하기 위해 Merkle trees와 불변의 리비전 체인을 결합하여 사용하는 중앙 집중식, 콘텐츠 주소 지정 방식의 VCS입니다.
콘텐츠 주소 지정 저장소 및 Merkle Trees
Lore는 Merkle tree 내의 콘텐츠 해시를 통해 저장소 데이터를 참조합니다. 이 아키텍처를 통해 시스템은 빠른 비교, 데이터 무결성 검증, 중복 없는 다양한 브랜치 및 히스토리 간의 데이터 재사용이 가능합니다.
불변의 리비전 체인
Lore의 모든 리비전은 암호학적으로 서명됩니다. 리비전의 해시는 그 상태로부터 유도되며, 여기에는 부모 리비전의 해시와 포함된 데이터의 해시가 포함됩니다. 이는 변조가 불가능한 불변의 진실 체인을 생성합니다.
바이너리 에셋을 위한 Chunked Storage
대규모 파일을 효율적으로적으로 처리하기 위해 Lore는 chunked storage를 사용합니다. 파일은 인덱싱된 조회를 위한 재사용 가능한 chunk로 분할되며, 이는 중복을 줄이고 파일의 수정된 부분만 업데이트함으로써 대규모 바이너리 에셋의 전송을 최적화합니다.
온디맨드 하이드레이션 (On-Demand Hydration)
Lore는 온디맨드 하이드레이션을 통해 희소 워크스페이스(sparse workspaces)를 지원합니다. 사용자는 전체 저장소 히스토리나 모든 에셋을 미리 다운로드할 필요가 없습니다. 대신, 시스템은 개발자나 아티스트가 특정 파일 데이터가 필요할할 때만 데이터를 가져옵니다.
Lore vs. Git 및 Perforce
Lore는 Git을 대체하는 일반적인 도구가 아닌, 게임 개발 분야에서 Perforce의 경쟁자로 자리매김하고 있습니다.
Git의 바이너리 한계점 해결
커뮤니티 논의에 따르면 Git은 코드에는 효과적이지만 텍스처, 3D 모델, 오디오 파일과 같은 파일에는 어려움을 겪습니다. Git LFS (Large File Storage)가 존재하지만, AAA 게임 개발에서의 대규모 팀 협업에는 종종 불충분하다고 간주됩니다.
Perforce 독점 체제에 대한 도전
Perforce Helix Core는 대규모 프로젝트를 처리하고 파일 잠금(file locking) 기능을 제공하기 때문에 현재 언리얼 엔진(Unreal Engine) 개발의 업계 표준입니다. Lore는 유사한 수준의 성능과 규모를 제공하되 오픈 소스 프레임워크 내에서 이를 구현하고자 합니다. 업계 전문가들은 Lore의 성공 여부가 Unreal Engine 내에서의 통합 수준에 달려 있을 것이라고 언급합니다. Epic의 내부 사용 사례가 일반적으로 엔진의 가장 잘 지원되는 VCS를 결정하기 때문입니다.
커뮤니티 인사이트 및 비판적 분석
발표 이후 많은 관심이 쏠리고 있지만, 기술 사용자들은 Lore의 현재 상태와 설계에 대해 몇 가지 사항을 제언합니다:
- 기원 및 출처: Lore는 이전에는 "Unreal Revision Control"로 알려졌으며 UEFN (Unreal Editor for Fortnite)의 백엔드 저장소 역할을 했습니다. Rust로 작성되었으며, 이는 Epic의 전통적인 C++ 또는 Verse 사용 방식과는 차이가 있습니다.
- 도구화 격차: 일부 사용자들은 초기 문서에서 바이너리 에셋을 병합할 수 없는 아티스트를 위한 핵심 기능인 가시적인 파일 잠금(file-locking) 워크플로우의 부재를 지약했습니다. 다른 사용자들은 코어는 오픈 소스이지만 데스크톱 클라이언트는 현재 바이너리로만 제공된다는 점을 지적했습니다.
- API 접근성: Lore는 "full-surface API"를 제공하며, 이는 다른 도구로의 통합이 더 쉬운 Git의 아키텍처와 달리 링크 가능한 라이브러리가 부족한 Git의 아키텍처에 비해 큰 장점으로 간주됩니다.
- 다른 데이터 버전 관리와의 비교: 일부 개발자들은 Lore의 chunking 및 콘텐츠 주소 지정 방식이 Pachyderm, LakeFS, Oxen과 같은 기존 데이터 버전 관리 시스템과 유사하다고 언급하며, 이는 AI/ML 데이터 관리와 게임 개발의 요구 사항이 수렴하고 있음을 시사합니다.
"Git은 코드와 같은 텍스트 기반 파일에는 괜찮지만, 텍스트가 아닌 게임 개발자가 협업할 수 있는 텍스처, 3D 모델, 오디오 파일 등에는 정말 형편합니다... 이 분야의 SOTA는 Perforce... 독점 시스템입니다."
"Lore, 이전에는 Unreal Revision Control이라 불렸던 것은 UEFN (Unreal Editor for Fortnite)의 내장장 버전 관리 시스템이며, 크리에이터들이 자신의 아일랜드를 버전 관리하기 위해 사용해 왔습니다."