- Published on
리얼드로우의 언리얼 에셋 관리, 어떻게 다를까요?
- Authors
- Name
- Beni
- Tech Lead
안녕하세요, 리얼드로우 테크 리드 베니입니다. 언리얼 엔진은 실사 같은 그래픽과 강력한 툴셋으로 게임 개발은 물론 건축 시각화, 영화 등 다양한 분야에서 활용되고 있습니다. 하지만 저희 리얼드로우처럼 웹툰 제작이라는 특수한 환경에서는 언리얼 에셋을 관리하는 방식에 기존과는 다른 접근이 필요했습니다.
저희는 웹툰 배경을 위해 작은 단위의 공간을 제작하고, 이를 새로운 프로젝트에서 지속적으로 활용합니다. 이러한 작업 흐름은 언리얼 에셋 관리에 다음과 같은 특별한 요구사항을 부여했습니다.
리얼드로우의 에셋 관리 핵심 요구사항
- 에셋을 활용해 새로운 프로젝트를 계속 생성한다: 웹툰 에피소드마다, 혹은 시놉시스에 따라 다양한 공간이 필요합니다. 이때 기존에 제작된 에셋들을 조합하여 빠르게 새로운 공간 프로젝트를 만들 수 있어야 합니다. 이는 개발 속도와 직결되는 부분이죠.
- 에셋을 활용한 공간의 크기는 너무 커지지 않는다 (에셋 중복 관리 방지): 수많은 웹툰 프로젝트를 생성하면서 매번 에셋을 복사하고 붙여 넣는다면, 프로젝트 용량은 기하급수적으로 늘어날 것이고 관리 또한 불가능해집니다. 에셋의 중복을 최소화하고, 하나의 에셋이 여러 프로젝트에서 효율적으로 참조될 수 있는 구조가 필수적입니다.
- 프로젝트 내에서 에셋 관리가 잘되어야 한다: 웹툰 배경 작업은 여러 아티스트와 협업하며 진행됩니다. 어떤 에셋이 어떤 공간에서 어떻게 사용되는지, 에셋 간의 의존성은 어떻게 되는지 한눈에 파악하고 관리할 수 있어야 합니다. 이는 작업 효율성뿐만 아니라 오류를 줄이는 데도 중요합니다.
이러한 요구사항을 충족하기 위해 저희 리얼드로우는 언리얼 에셋 관리의 새로운 접근법을 모색해야만 했습니다.
저희가 언리얼 에셋을 어떻게 관리하고 있는지 자세히 설명해 드리겠습니다.
언리얼 에셋, Git으로 관리하기로 결정한 이유
이러한 요구사항을 충족하기 위해 저희 리얼드로우는 언리얼 에셋 관리의 새로운 접근법을 모색해야 했습니다. 특히, 기본적인 프로젝트를 공유하고 관리하기 위한 버전 컨트롤 시스템 선정에 많은 고민이 있었습니다.
일반적으로 대규모 언리얼 프로젝트에서는 Perforce를 많이 사용하지만, 저희는 Perforce와 Git을 면밀히 검토한 결과, Git이 리얼드로우의 프로젝트 환경과 회사 내 프로젝트 관리 툴로서 더 적합하다는 결론을 내렸습니다. Git은 분산 버전 관리 시스템으로 유연하며, 특히 저희 회사의 기존 프로젝트 관리 워크플로우와 통합하기에 이점이 많다고 판단했기 때문입니다.

- 그림 1: 기존 언리얼 프로젝트의 에셋 관리 방식
리얼드로우의 독자적인 에셋 라이브러리 구축 방법: Git과 심볼릭 링크의 조합
이제 저희가 앞서 언급한 요구사항들을 Git과 함께 어떻게 충족하고 있는지 구체적으로 설명해 드릴 차례입니다. 저희는 에셋 중복을 최소화하고 효율적인 관리를 위해 다음과 같은 분산형 메인 에셋 라이브러리 시스템을 구축했습니다.
저희는 메인 에셋 라이브러리를 각각 카테고리별로 분산된 Git 저장소(Repository)에 저장합니다. 예를 들어, Props_GitRepo
, Architecture_GitRepo
, Vegetation_GitRepo
와 같이 에셋 종류별로 별도의 Git 저장소를 두는 방식입니다.
이렇게 분리된 Git 저장소에 에셋 원본이 관리되면, 각 웹툰 프로젝트를 생성할 때 필요한 에셋이 담긴 Git 저장소들을 클론(Clone) 합니다. 그리고 클론된 각 에셋 저장소의 특정 폴더들을 언리얼 프로젝트의 'Content' 폴더 내부에 심볼릭 링크(Symbolic Link)를 걸어서 마치 같은 프로젝트 폴더인 것처럼 인식하도록 만들었습니다.
이 방식의 장점은 명확합니다.
- 에셋 중복 관리 방지: 각 에셋은 자신의 전용 Git 저장소에 단일 버전으로 존재하며, 프로젝트에서는 이를 참조만 합니다. 에셋을 복사해 넣는 것이 아니므로 프로젝트 용량이 비대해지는 것을 막을 수 있습니다.
- 모듈화된 관리: 에셋이 카테고리별로 분산 저장되어 있어 특정 에셋군에 대한 업데이트나 관리가 용이합니다.
- 빠른 프로젝트 생성: 필요한 에셋 저장소만 클론하고 심볼릭 링크를 걸면 되므로, 새로운 웹툰 프로젝트를 생성하는 시간이 대폭 단축됩니다.
- Git 워크플로우와의 시너지: Git의 강력한 버전 관리 기능을 에셋 레벨에서 활용할 수 있게 되어, 에셋의 변경 이력 추적 및 충돌 해결이 용이해집니다.

- 그림 2: 리얼드로우의 언리얼 에셋 관리 방식
requirements_prop.txt
심볼릭 링크 관리의 복잡성 해결: PowerShell 스크립트와 물론, 이 방식은 심볼릭 링크 관리의 복잡성이라는 도전 과제를 안고 있습니다. 특히 저희 작업 환경이 대부분 윈도우 기반이기 때문에, 이를 효율적으로 자동화하는 것이 중요했습니다.
저희는 이 문제를 해결하기 위해 간단한 PowerShell 스크립트를 활용했습니다. 각 프로젝트의 루트 폴더에 requirements_prop.txt라는 텍스트 파일을 만들고, 이 파일 안에 해당 프로젝트에서 심볼릭 링크를 걸어야 할 에셋 라이브러리 폴더의 이름을 정의합니다.
예를 들어, requirements_prop.txt
파일은 다음과 같은 형식으로 작성될 수 있습니다.
Buildings
Vegetation
Walls
이 목록을 기반으로, PowerShell 스크립트가 실행되면 저희가 미리 정해놓은 고정된 위치(예: C:\rd_blog_unreal_asset_example)에 클론된 Git 저장소들을 찾아 해당 폴더들을 언리얼 프로젝트의 'Content' 폴더 내부에 심볼릭 링크로 자동으로 연결합니다. 예를 들어, requirements_prop.txt에 Buildings가 있다면, 스크립트는 D:\RealDraw_Assets\prop\Buildings (실제 에셋이 있는 곳)를 현재 언리얼 프로젝트의 Content/ExternalAssets/Buildings로 링크하는 식입니다.
아래는 저희 프로젝트의 예시 폴더 구조입니다.
workspace/
prop/
Buildings/
Content/
Buildings/ (실제 에셋 파일들이 있는 곳)
scene/
RD_SCENE_0001/
requirements_prop.bat (관리자 권한으로 실행하는 PowerShell 스크립트)
requirements_prop.ps1 (실제 심볼릭 링크를 생성하는 PowerShell 스크립트)
requirements_prop.txt (심볼릭 링크를 걸어야 할 에셋 라이브러리 폴더의 이름을 정의)
Content/
ExternalAssets/ (여기에 심볼릭 링크가 생성됩니다)
Buildings -> workspace/prop/Buildings/Content/Buildings (실제 링크)
위와 같은 구조로 scene 에서 prop 에 있는 어셋을 심볼릭 링크로 연결하여 사용합니다. 참고.rd_blog_unreal_asset_example 저장소
이 자동화된 스크립트 덕분에, 작업자들은 복잡한 심볼릭 링크 명령어를 직접 입력할 필요 없이, requirements_prop.txt
만 관리함으로써 필요한 에셋 라이브러리를 쉽고 빠르게 자신의 프로젝트에 연결할 수 있게 되었습니다. 이는 휴먼 에러를 줄이고, 프로젝트 설정 시간을 획기적으로 단축하는 데 크게 기여했습니다.

- 그림 3: 심볼릭 링크 걸린 아이콘
리얼드로우와 함께 웹툰의 미래를 만들어갈 당신을 찾습니다!
저희의 프로젝트는 이처럼 효율적인 에셋 관리 시스템 덕분에 웹툰 공간을 매우 빠르게 제작할 수 있는 기반이 되고 있습니다. 기술적인 도전을 통해 창의적인 콘텐츠 제작의 한계를 넓혀가는 것이 바로 리얼드로우가 추구하는 방향입니다.
만약 이 글을 읽으면서 나도 저런 고민을 했었는데!, 이런 방식이라면 더 좋은 아이디어를 낼 수 있을 것 같은데? 라고 생각하셨거나, 언리얼 엔진과 웹툰이라는 두 가지 분야의 교차점에서 새로운 가치를 창출하고 싶은 열정적인 개발자, 아티스트를 찾고 있습니다.
리얼드로우는 기술로 웹툰 산업을 혁신하고, 아티스트들이 최고의 창작물을 만들 수 있도록 돕는 데 진심입니다. 저희의 문화와 기술 스택에 관심이 있다면, 주저하지 말고 리얼드로우의 문을 두드려 주세요!