지난 이십 년 동안 Unity 프로젝트가 「Player 밖으로 내보내는 콘텐츠」를 기본적으로 나눌 수 없는 AssetBundle로 묶고, 레이아웃도 한 장만 틀려도 다운로드 용량·메모리 피크·로딩 대기를 한꺼번에 끌어올렸다면, 2026년 9월 22일 Unity 시니어 엔지니어링 매니저 George Ing의 공식 블로그는 그 이십 년치 청구서를 테이블 위에 펼치고 파트너 실측표 맨 아래를 빨간펜으로 동그라미 친 셈이다. 대상은 Monomi Park의 《Slime Rancher 2》. Editor는 Unity 6.6 Beta(6000.6.0b10), 기기는 MacBook Pro M5 Max. 같은 Addressables 프로젝트에서 백엔드를 AssetBundle에서 content directory로 전환했고, Unity는 코드 변경 제로라고 적었다. 증분 빌드는 삼십이 분 십육 초에서 삼 분 사 초로. 클린 빌드는 오십팔 분 육 초에서 삼십칠 분 십삼 초로. Player 용량은 4GB에서 2.88GB로, 대략 1.12GB가 줄었다. 부팅에서 메뉴, 플레이 진입까지 로딩은 사십오 초에서 삼십 초로.
공식 블로그, Unity 6.6 문서 도입부, 그날에도 돌고 있던 기술 요약을 맞춰 보았다. 아래 숫자와 메커니즘은 공개 자료에서 나왔다. 상대 프로젝트 소스에는 접근하지 않았고, 플레이테스트 보고인 척하지 않는다.
이 글을 관통하는 이미지는 그 삼십삼 분의 증분 청구서와 「나눌 수 없는 소포」다. 파일 형식 이야기처럼 들리지만, 제작 윤리로 내리면 레이아웃 맞히기에 계속 세금을 내는 일에 대한 거절이다. 먼저 아티팩트를 단독으로 싣고 내릴 수 있게 한 뒤, 그룹이 예쁜지 이야기한다. 아낀 분과 기가바이트에는 증거가 남아야 한다. 비싼 줄에는 이름이 붙여져야 한다. 「Addressables 그룹을 아직 못 그렸다」는 습관적 탓으로는 부족하다.

1. 이십 년의 기본값, 콘텐츠는 나눌 수 없는 소포
Unity 2.1부터 AssetBundle은 Player 바이너리 밖의 콘텐츠를 받쳐 왔다. 이십 년 동안 수많은 작품이 이를 데이터 표현으로 썼고, 대형 타이틀도 포함된다. 기본 명세는 단단하다. 각 Bundle은 배포·저장·로딩에서 나눌 수 없는 단위다. 의존성은 Bundle 단위로 추적되므로, 많은 에셋이 더 큰 덩어리로 용접되고, 효율을 위해 함께 내려받고 함께 로드·언로드되는 경우가 많다.
이 명세는 거의 도망칠 수 없는 제작 문법을 만든다. 타이틀이 Bundle 레이아웃을 어떻게 자르느냐가 런타임 성능과 다운로드 용량을 바로 누른다. AssetBundle을 직접 쓰든 Addressables를 거치든 같다. 팀은 에디터에서 그룹을 그리고, 공존을 맞히고, 텍스처 한 장으로 세계 절반이 끌려오는 일을 두려워한다. 플레이어와 개발자는 끊김과 패키지 용량을 같은 어휘로 읽는다. 그룹이 거칠다, 의존 사슬이 길다, 핫업데이트 한 번에 너무 많이 내려온다. 그 공유 이해가 「더 좋은 그룹 지도를 계속 그리면 된다」를 용서받을 수 있는 제작 관성으로 만든다.
《Slime Rancher 2》처럼 이미 출시됐고 Addressables를 쓰는 작품은 그 관성 비용을 구체로 올린다. 콘텐츠는 이미 크다. 증분 빌드는 흔히 삼십 분을 넘긴다. Player는 이미 4GB대다. 부팅에서 진짜 플레이까지 로딩은 사십오 초 전후다. 기본 질문은 그룹을 더 잘게 자르고 공존을 더 잘 맞히는 방법이다. 그들이 바꾼 질문은 이렇다. 로컬로 Player와 함께 가는 콘텐츠가 이미 이만큼일 때, 나눌 수 없는 단위 자체가 매 빌드와 매 플레이 진입에서 세금을 걷고 있지는 않은가. 런타임에 진짜 들어가야 할 것은 단독으로 식별 가능한 아티팩트뿐 아닌가.
갈림길은 여기다. Bundle 레이아웃을 계속 다듬는 일은 시민세 안에서 더 싼 자리를 찾는 일이다. 적재 단위를 바꾸는 일은 세금 항목이 잘못 적혀 있었다고 인정하는 일이다.

2. 단독으로 싣고 내릴 수 있는 아티팩트, stable id, 콘텐츠 해시 대조표
Unity 6.6은 content directories를 Player와 함께 로컬로 배달되는 AssetBundle의 대체 경로로 적는다. 표현을 못 박는다. 대체 경로이지, AssetBundles 퇴역 선언이 아니다. 문서는 content directory 빌드가 현재 로컬만 지원하고 원격 배포는 지원하지 않는다고 분명히 한다. 세분 OTA는 Unity 7 세대로 미룬다. 원격 장면에서는 AssetBundles를 계속 쓸 수 있다.
메커니즘상으로는 에셋을 큰 로드 단위에 계속 구워 넣는 일을 거부한다. 런타임은 메시·텍스처 같은 개별 아티팩트를 독립적으로 식별·로드·언로드할 수 있고, 암묵적 중복 제거도 붙는다. Addressables로 Player 동봉 콘텐츠를 이미 관리하는 프로젝트에 대해, 공식은 content directory 백엔드로 코드 변경 없이 전환할 수 있다고 말한다. 《Slime Rancher 2》 파트너 실측도 이 경로다.
빌드 쪽은 에셋 임포터 프레임을 탄다. 각 에셋은 importer가 단독 구축하고, 샌드박스·프로세스 밖·결정성·에셋 DB 캐시·멀티코어 포화·accelerator 공유 캐시가 붙는다. George Ing는 단도직입이다. 이는 Unity 2023.1에서 예고한 멀티프로세스 빌드와 같은 기반이다. 산출은 세분 아티팩트의 느슨한 집합, 의존을 추적하는 작은 매니페스트, 더 읽기 쉬운 진단 파일이다.
어드레싱은 git을 닮았다. 빌드 산출을 열면 파일명은 콘텐츠 해시다. `c0152db4dd710be51b2decb997325f34.cf` 같은 이름은 내용 주소이지 난수가 아니다. 런타임은 동일 내용을 암묵적으로 중복 제거할 수 있다. 다만 아티팩트가 서로 콘텐츠 해시로 참조하면 B를 갱신할 때 B의 해시가 바뀌고, A가 B를 참조하면 A의 해시도 흔들리며 연쇄가 위로 기어 오른다. Content directories의 해법은 아티팩트 사이를 stable id로 참조하는 것이다. 매니페스트에 작은 대조표를 두고 stable id를 콘텐츠 해시로 매핑한다. 안정된 신원과 내용 지문을 가르고, 연쇄 흔들림을 끊는다.
로드 쪽은 먼저 디렉터리를 마운트하고, 매니페스트를 읽고, 아티팩트 사이의 stable id 의존을 푼 뒤 각 아티팩트를 독립적으로 싣고 내린다. 비동기 읽기와 역직렬화가 병렬로 돌며 플랫폼 비동기 읽기 API를 쓴다. 하위 포맷은 DOTS 세대 콘텐츠 파일 포맷의 다음 세대이며, Entities용 멀티스레드 로딩을 더 넓은 에셋 종류로 펼친다. 엔진에는 새 로드 가능 참조 타입 `Loadable<T>`도 들어온다. 예시는 짧다.
`Loadable<Mesh> bodyMesh;``bodyMesh.Load();`
Loadable은 객체를 빌드에 끌어들이지만, 명시적 Load 전까지 메모리에 올리지 않는다. 익숙한 ScriptableObject 구성과 맞물리면 동적 콘텐츠가 Bundle 레이아웃도에 묶일 필요가 없다. 캐릭터 크리에이터의 부품도, 스트리밍 지형의 덩어리도 독립 적재 단위가 될 수 있다.

3. 파트너 표의 네 줄, 플레이 진입에서 사라진 십오 초
숫자가 수사를 누른다. Unity가 공개한 대조표는 네 줄뿐이지만 충분히 단단하다.
증분 빌드. Addressables가 AssetBundle 백엔드일 때 삼십이 분 십육 초, content directory로 바꾸면 삼 분 사 초. 대략 이십구 분을 아낀다. 클린 빌드는 오십팔 분 육 초에서 삼십칠 분 십삼 초. Player 용량은 4GB에서 2.88GB. 부팅에서 메뉴, 플레이 진입까지는 사십오 초에서 삼십 초. 사라진 십오 초는 플레이어가 만진다. 사라진 1.12GB는 상점과 디스크가 만진다. 사라진 이십구 분의 증분은 제작 일정이 만진다.
조건도 고정돼 있다. Unity Editor 6000.6.0b10, MacBook Pro M5 Max, 기존 Addressables 프로젝트 백엔드 전환, 코드 변경 제로. 적재 단위가 바뀌었고 같은 Addressables 표면은 여전히 말할 수 있는 대조다. 석 달짜리 콘텐츠 파이프라인 재작성 승리 서사가 아니다. 작은 팀에는 후자 읽기가 더 날카롭다. 프로듀서에게 석 달 개편 창을 설득하지 못해도, 백엔드 설정을 한 번 바꾸고 빌드 로그를 주간에 붙이라고 설득하는 일은 종종 가능하다.
경계도 분명히 해야 한다. 6.6의 이 칼은 로컬 동봉 콘텐츠를 겨냥한다. 원격 핫업데이트, CDN 차분, 필요 시 가져오기는 공식이 Unity 7 세대와 2027년으로 미룬다. 앞날의 스케치는 작은 해시 주도 매니페스트가 기기에 없는 아티팩트를 정확히 가리키고, 그것만 받아, 갱신도 개별 아티팩트 단위로 내리는 것이다. 지금 블로그를 「AssetBundles는 이미 버려도 된다」로 읽으면 어조이 기운다. 로컬 Player 동봉에는 대체 경로가 열렸다. 원격은 여전히 Bundle일 수 있다. 문서의 local only는 경계다.
맺음, 인디란 병목을 적재 단위에 못 박으려는 의지
이 구월 블로그를 2026년 가을 Unity 인디·중소 팀 현장으로 되돌리면, 먼저 치는 것은 잘 안 보이는 제작 관성이다. 콘텐츠는 나눌 수 없는 소포라고 여기고, 빌드 막힘·용량 막힘·플레이 진입 막힘은 Addressables 그룹을 못 그려서라고 여기고, 「레이아웃 회의 한 번 더」면 된다고 여기며 잘 묻지 않는다. 로컬이 이미 수 기가일 때 시민세가 그룹 미학보다 비싸지 않은가. 증분이 아직 삼십삼 분일 때 비싼 것은 기계 연산력인가, 소포 통째로 다시 계산하게 만드는 적재 단위인가.
작은 팀에게 이 재료는 특히 쓸모 있다. 《Slime Rancher 2》 규모의 목장도 M5 Max도 필요 없다. 「기본값으로 이미 충분하다」 목록은 반드시 있다. 동봉 콘텐츠가 아직 거친 Bundle 공존이다. 최적화 회의가 「그룹을 한 칼 더」로 열린다. 공존을 잘못 맞춰 핫업데이트가 세계 절반을 내려받는다. 증분 빌드가 삼십 분인데 백엔드 전환을 아무도 제안하지 않는다. 문서는 local only인데 주간에는 원격도 해결됐다고 쓴다. George Ing와 파트너 표는 비용을 흙냄새 나게 적는다. 코드 제로 전환. 네 줄 대조. stable id 대 콘텐츠 해시. Loadable 명시 로드. 비싼 것은 병목을 적재 단위로 되돌리려는 의지, 그리고 로컬 대체 경로는 이미 열렸고 원격 표는 따로 사야 한다고 영수증에 인정하려는 의지다.
실행 메모는 짧다.
- 통증이 로컬 동봉인지 원격 핫업데이트인지 먼저 가른다. 6.6 content directories가 덮는 것은 전자뿐이다.
- 이미 Addressables이고 콘텐츠가 Player와 함께라면, 공식 경로로 content directory 백엔드를 시험하고 전후 빌드 로그를 남긴다.
- 대조는 최소 네 줄. 증분 빌드, 클린 빌드, Player 용량, 부팅에서 플레이 진입. 숫자가 없으면 백엔드 전환은 분위기일 뿐이다.
- 빌드 산출을 열어 콘텐츠 해시 파일명과 stable id 대조표가 문서대로인지 확인한다. 연쇄 흔들림은 옛 세금, 대조표는 새 영수증이다.
- 신규는 `Loadable<T>` 명시 로드를 우선하고, 메모리 적재를 큰 단위에 용접하지 않는다.
- 주간에 「AssetBundles 퇴역」이라고 쓰지 않는다. 올바른 말은 로컬 대체 경로다. 원격 전략은 별도 티켓이다.
- Unity 7 / 2027의 세분 OTA는 전망으로 다루고, 현재 납품 약속으로 쓰지 않는다.
삼십이 분 십육 초의 증분, 나눌 수 없는 소포, stable id와 콘텐츠 해시 대조표, 사십오 초에서 사라진 십오 초의 플레이 진입. 상점 문구가 「더 빠르고 더 작게」를 슬로건으로 만들기 전에, 제작 측은 감사 기준을 공개 블로그에 이미 적어 두었다. 먼저 아티팩트를 단독 적재로 되돌리고, 그다음 죄명을 올바른 적재 단위에 못 박아라.

출처와 더 읽기
- George Ing, Unity Blog(2026-09-22), 제목 Content Directories Beyond the AssetBundle(https://unity.com/blog/content-directories-beyond-the-assetbundle)
Unity Manual 6.6 Introduction to content directories