중요: 캐시 서버는 에셋 임포트 파이프라인 버전 1을 지원합니다. 에셋 임포트 파이프라인 버전 2를 사용하는 경우에는 Unity 액셀러레이터를 대신 사용하십시오.
Unity는 완전한 자동 에셋 파이프 라인을 가지고 있습니다. .psd 파일이나 .fbx 파일과 같은 에셋 소스가 변경되면 Unity는 변경사항을 감지하고 자동으로 다시 파일을 임포트합니다. 파일에서 임포트된 데이터는 즉시 내부 형식으로 변환되어 저장됩니다.
이 정렬 방식은 각 사용자 작업의 흐름을 최대한 효율적이고 유연하게 만들기 위해서 설계되었습니다. 그러나 팀으로 작업할 때는 다른 사용자들이 계속 변경하는 에셋을 임포트해야 하는 상황을 맞이하게 됩니다. 거기에 더해서 데스크탑에서 모바일 빌드 타겟 플랫폼으로 전환 시 에셋을 다시 임포트해야 합니다. 이러한 전환은 큰 프로젝트일 수록 더 많은 시간을 소모합니다.
임포트한 에셋 데이터를 캐시 서버에 캐시하는 것은 에셋을 임포트하는 시간을 현저하게 줄입니다.
Unity는 다음에 기반하여 각 에셋 임포트를 캐싱합니다.
위 항목 중 하나가 변경되면 Unity는 에셋을 다시 임포트합니다. 아니면 Unity가 캐시 서버에서 다운로드할 수도 있습니다.
캐시 서버를 사용하는 경우 여러 프로젝트에서 에셋 임포트를 공유(즉, 임포트 작업은 하나의 컴퓨터에서 수행하고 그 결과를 다른 곳과 공유)할 수 있습니다.
참고: 일단 캐시 서버를 설정하고 활성화하면 이 과정은 완전히 자동으로 이루어지며 추가 워크플로가 요구되지 않습니다. 따라서 사용자의 추가 개입 없이도 프로젝트를 더욱 빠르게 임포트할 수 있습니다.
캐시 서버를 활성화하려면 다음 단계를 따르십시오.
팁: 하드 드라이브는 크기 제한이 따르므로 가능하면 별도의 컴퓨터에서 캐시 서버를 호스트하는 것이 좋습니다.
참고: 로컬 캐시 서버에 커스텀 위치가 있고 해당 위치를 이용할 수 없게 되면 Unity는 다음과 같은 경고를 표시합니다.
로컬 캐시 디렉토리가 존재하지 않습니다 - 캐시 폴더에 접속할 수 있으며 쓰기 권한이 있는지 확인하시기 바랍니다.
관리자는 캐싱된 에셋을 호스트하는 캐시 서버 컴퓨터를 설정해야 합니다.
원격 서버에 캐시 서버를 설정하려면 다음 단계를 따르십시오.
중요: 캐시 서버는 매우 큰 스토리지가 있는 안정적인 컴퓨터에 설치되어야 합니다. 여러 버전의 임포트된 리소스를 저장하기 위해 프로젝트 자체의 크기보다 훨씬 커야 합니다. 하드디스크 용량이 가득 차면 캐시 서버의 성능이 저하될 수 있습니다.
제공된 .sh
와 .cmd
스크립트는 서비스로 서버에 설치 되어야 합니다.
캐시 서버는 원자적 파일 연산을 사용하기 때문에 언제든지 안전하게 끄고 다시 시작할 수 있습니다.
기본적으로 두 캐시 서버 프로세스가 시작됩니다. 레거시 캐시 서버는 Unity 5.0 이전 버전에서 사용됩니다. 새 캐시 서버는 Unity 5.0 및 이후 버전에서 사용됩니다. 서로 다른 두 캐시 서버의 설정, 활성화, 비활성화에 관한 자세한 내용은 아래의 캐시 서버 설정을 참조하십시오.
간단하게 스크립트를 실행하여 시작하면 레거시 캐시 서버는 8125포트에, 새 캐시 서버는 8126포트에 실행합니다. 또한 스크립트와 같은 디렉토리에 “cache”와 “cache5.0” 디렉토리를 생성하고 같은 곳에 데이터를 저장합니다. 캐시 디렉토리는 기본적으로 50GB까지 커질 수 있도록 설정되어 있습니다. 데이터의 크기 또는 위치 설정은 아래와 같이 커맨드 라인 옵션을 사용하여 변경할 수 있습니다.
./RunOSX.command --path ~/mycachePath --size 2000000000
또는
./RunOSX.command --path ~/mycachePath --port 8199 --nolegacy
다음의 커맨드 라인 옵션을 사용하여 캐시 서버를 설정할 수 있습니다.
--port
를 사용해야 합니다. 새로운 캐시 서버에만 적용됩니다. 디폴트값은 8126
입니다.--path
를 사용해야 합니다. 새로운 캐시 서버에만 적용됩니다. 디폴트값은 ./cache5.0
입니다.--legacypath
를 사용해야 합니다. 레거시 캐시 서버에만 적용됩니다. 디폴트값은 ./cache
입니다.--size
를 사용해야 합니다. 최대 캐시 크기를 초과하게 되면 최근에 사용되지 않은 파일은 자동으로 폐기됩니다.--nolegacy
를 사용해야 합니다. 그렇지 않으면 레거시 캐시 서버는 8125
포트에서 시작합니다.최상의 성능을 얻기 위해 임포트된 프로젝트 폴더 전체를 망라할 수 있는 충분한 RAM이 필요합니다. 또한 빠른 하드 드라이브와 고속 이더넷 연결이 가능한 컴퓨터가 가장 좋습니다. 하드 드라이브는 충분한 여유 공간이 있는 것이 더 좋습니다. 한편, 캐시 서버의 CPU 점유율은 매우 낮습니다.
캐시 서버와 버전 관리의 주요 차이점은 캐시된 데이터가 항상 로컬 시스템에서 재구성될 수 있다는 점입니다. 이것은 퍼포먼스 개선을 위한 단순한 툴입니다. 이러한 이유로 인터넷을 통한 캐시 서버의 이용은 좋은 방법이 아닙니다. 팀이 분산되어 있다면 각 지점에 별도의 캐시 서버를 설치해야 합니다.
캐시 서버는 Linux 또는 Mac OS X 컴퓨터에서 가장 잘 실행됩니다. Windows 파일 시스템은 캐시 서버가 데이터를 저장하는 방식에 최적화되어 있지 않고 Windows의 파일 잠금 문제는 Linux 및 Mac OS X에서는 발생하지 않으며 문제를 일으킬 수 있습니다.
캐시 서버는 자동으로 일정기간 사용되지 않는 에셋을 제거합니다(물론 해당 에셋이 다시 필요해지면 다음에 사용할 때 다시 만들어 집니다).
캐시 서버는 소스/버전 관리 시스템에서 쉽게 볼 수 있도록 설계되었기 때문에 Unity의 에셋 서버만 사용하도록 제한되지 않습니다.
Unity가 에셋을 임포트하려고 할 때 모든 소스 데이터의 MD5 해시를 생성합니다.
예를 들어, 텍스처는 다음과 같이 구성되어 있습니다.
캐시 서버에 저장되어있는 것과 다른 해시라면, 에셋이 다시 임포트됩니다. 그렇지 않으면 캐시된 버전이 다운로드됩니다. 클라이언트 Unity 에디터는 필요할 때만 서버에서 에셋을 가져옵니다. 에셋이 변경될 때마다 각각의 프로젝트로 보내지는 것은 아닙니다.
캐시 서버는 종속성에 관여하지 않습니다. Unity 에셋 파이프 라인은 종속성 개념을 다루지 않습니다. 그렇게 설계된 이유는 에셋간의 종속성 충돌 문제를 피하기 위해서입니다. AssetPostprocessor클래스는 에셋 임포터를 자신에 맞게 커스터마이징하는 일반적인 기법입니다. 예를 들어, .fbx 파일의 게임 오브젝트에 이름과 태그에 따라 MeshCollider를 추가할 수 있습니다.
또한, AssetPostprocessor
를 사용하여 종속성을 쉽게 도입할 수 있습니다. 예를 들어, 에셋의 텍스트 파일 데이터를 사용해서 임포트된 게임 오브젝트에 추가적인 컴포넌트를 더할 수 있습니다. 이것은 캐시 서버에서 지원되지 않습니다. 캐시 서버를 사용하고 싶다면 프로젝트 폴더의 다른 에셋에 대한 종속성을 제거해야 합니다. 캐시 서버는 포스트 프로세서의 종속성에 대해 아무것도 모르기 때문에 변경 사항을 전혀 모르고 캐시된 버전의 에셋을 사용하게 됩니다.
실제로, 캐시 서버에서 작업을 원활히 하기 위해 에셋 포스트프로세스를 실행할 수 있는 방법은 많이 있습니다. 다음을 사용할 수 있습니다.
이미 존재하는 머티리얼을 변경하면 문제가 발생할 수 있습니다. 캐시 서버를 사용할 때 Unity는 머티리얼에 대한 레퍼런스가 유효한지 확인합니다. 그러나 포스트 프로세스가 호출되지 않기 때문에 캐시 서버를 통해 임포트되는 모델에서는 머티리얼의 내용이 변경될 수 없습니다. 따라서 캐시 서버에서 임포트하는 경우와 하지 않는 경우 다른 결과를 얻을 수 있습니다.
에셋 포스트프로세서의 디스크에 이미 존재하는 머티리얼은 수정하지 마십시오. 캐시 서버를 통해 fbx 파일을 다운로드하면 이를 임포트할 프로세스가 실행되지 않습니다. 따라서 모델 임포터가 실행될 때마다 생성된 머티리얼을 생성된 일부 기본값으로 재설정하면, 캐싱된 fbx 파일을 임포트할 때 이 에셋 포스트프로세서가 실행되지 않습니다.
서버에 캐시되지 않는 일부 에셋 데이터가 있습니다. 스크립트 파일을 캐시하는 것으로 얻을 수 있는 점이 없기 때문에 서버는 이를 무시합니다. 또한 3D 모델링 소프트웨어(Autodesk® Maya®, Autodesk® 3ds Max® 등)에서 사용되는 네이티브 파일은 어플리케이션 단에서 FBX로 변환됩니다. 현재 에셋 서버는 기본 파일과 임포트 프로세스에서 생성된 중간 FBX 파일 전부를 캐시하지 않습니다. 하지만 모델링 소프트웨어에서 FBX로 익스포트된 파일을 Unity 프로젝트에 추가함으로써 캐시할 수 있습니다.