YAML 클래스 ID 레퍼런스
스크립팅으로 소스 에셋 수정

캐시 서버

Unity는 완전한 자동 에셋 파이프 라인을 가지고 있습니다. .psd 파일이나 .fbx 파일과 같은 에셋 소스가 변경되면 Unity는 변경사항을 감지하고 자동으로 다시 파일을 임포트합니다. 파일에서 임포트된 데이터는 즉시 내부 형식으로 변환되어 저장됩니다.

이 정렬 방식은 각 사용자 작업의 흐름을 최대한 효율적이고 유연하게 만들기 위해서 설계되었습니다. 그러나 팀으로 작업할 때는 다른 사용자들이 계속 변경하는 에셋을 임포트해야 하는 상황을 맞이하게 됩니다. 거기에 더해서 데스크탑에서 모바일 빌드 타겟 플랫폼으로 전환 시 에셋을 다시 임포트해야 합니다. 이러한 전환은 큰 프로젝트일 수록 더 많은 시간을 소모합니다.

임포트한 에셋 데이터를 캐시 서버 에 캐시하는 것은 에셋을 임포트하는 시간을 현저하게 줄입니다.

Unity caches each Asset import based on:

  • 에셋 파일 자체
  • 임포트 설정
  • 에셋 임포터 버전
  • 현재 플랫폼

If any of the above change, Unity re-imports the Asset. Otherwise, Unity downloads it from the Cache Server.

When you use a Cache Server, you can even share Asset imports across multiple projects (that is, the work of importing is done on one computer and the results are shared with others).

Note: Once the Cache Server is set up and enabled, this process is completely automatic, so there are no additional workflow requirements. It reduces the time it takes to import projects without further intervention from the user.

Enabling a Cache Server

To enable a Cache Server:

  1. Open the Unity Preferences window (from the main menu: Unity > Preferences on MacOS or Edit > Preferences on Windows and Linux).
  2. Select Cache Server from the category list on the left. The Cache Server settings appear in the details pane on the right.
  3. Choose Remote or Local from the Cache Server Mode drop-down box. The properties unique to the selected mode appear.
  4. Set the Cache Server preferences for the mode you selected.

Tip: It is better to host the Cache Server on a separate computer if possible because of hard drive size limitations.

Note: If you have a local Cache Server with a custom location, and that location becomes unavailable, Unity displays the following warning:

로컬 캐시 디렉토리가 존재하지 않습니다 - 캐시 폴더에 접속할 수 있으며 쓰기 권한이 있는지 확인하시기 바랍니다.

Setting up a Cache Server as an administrator

Administrators need to set up the Cache Server computer that hosts the cached Assets.

To set up the Cache Server on a remote server:

  1. Download the Cache Server:
    • Open Unity’s Download Archive page.
    • Locate the Unity version you are using and click the Downloads button for your target server’s operating system.
    • Click the Cache Server link to start the download.
  2. Unzip the file, which looks like this:
  3. Run the command script that matches your operating system. A terminal window appears, indicating that the Cache Server is running in the background:

Important: The Cache Server needs to be on a reliable computer with very large storage (much larger than the size of the project itself, as there will be multiple versions of imported resources stored). If the hard disk becomes full the Cache Server could perform slowly.

서비스로 캐시 서버 설치

제공된 .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에서는 발생하지 않으며 문제를 일으킬 수 있습니다.

캐시 서버 FAQ

더 많은 리소스를 임포트하고 저장할 때마다 캐시 서버의 데이터베이스 크기는 무한히 커지게 됩니까?

캐시 서버는 자동으로 일정기간 사용되지 않는 에셋을 제거합니다(물론 해당 에셋이 다시 필요해지면 다음에 사용할 때 다시 만들어 집니다).

캐시 서버는 에셋 서버에서만 작동합니까?

캐시 서버는 소스​/버전 관리 시스템에서 쉽게 볼 수 있도록 설계되었기 때문에 Unity의 에셋 서버만 사용하도록 제한되지 않습니다.

어떤 것을 변경하면 임포트된 파일이 재생성됩니까?

Unity가 에셋을 임포트하려고 할 때 모든 소스 데이터의 MD5 해시를 생성합니다.

예를 들어, 텍스처는 다음과 같이 구성되어 있습니다.

  • 소스 에셋: “myTexture.psd” 파일
  • 메타 파일: “myTexture.psd.meta”(모든 임포터 설정을 저장합니다.)
  • 텍스처 임포터의 내부 버전 번호
  • 모든 AssetPostprocessors 버전의 해시

캐시 서버에 저장되어있는 것과 다른 해시라면, 에셋이 다시 임포트됩니다. 그렇지 않으면 캐시된 버전이 다운로드됩니다. 클라이언트 Unity 에디터는 필요할 때만 서버에서 에셋을 가져옵니다. 에셋이 변경될 때마다 각각의 프로젝트로 보내지는 것은 아닙니다.

에셋 종속성은 어떻게 해야됩니까?

캐시 서버는 종속성에 관여하지 않습니다. Unity 에셋 파이프 라인은 종속성 개념을 다루지 않습니다. 그렇게 설계된 이유는 에셋간의 종속성 충돌 문제를 피하기 위해서입니다. AssetPostprocessor클래스는 에셋 임포터를 자신에 맞게 커스터마이징하는 일반적인 기법입니다. 예를 들어, .fbx 파일의 게임 오브젝트에 이름과 태그에 따라 MeshCollider를 추가할 수 있습니다.

또한, AssetPostprocessor를 사용하여 종속성을 쉽게 도입할 수 있습니다. 예를 들어, 에셋의 텍스트 파일 데이터를 사용해서 임포트된 게임 오브젝트에 추가적인 컴포넌트를 더할 수 있습니다. 이것은 캐시 서버에서 지원되지 않습니다. 캐시 서버를 사용하고 싶다면 프로젝트 폴더의 ​​다른 에셋에 대한 종속성을 제거해야 합니다. 캐시 서버는 포스트 프로세서의 종속성에 대해 아무것도 모르기 때문에 변경 사항을 전혀 모르고 캐시된 버전의 에셋을 사용하게 됩니다.

실제로, 캐시 서버에서 작업을 원활히 하기 위해 에셋 포스트프로세스를 실행할 수 있는 방법은 많이 있습니다. 다음을 사용할 수 있습니다.

  • 임포트된 에셋의 경로
  • 에셋의 모든 임포트 설정
  • 소스 에셋 자체 또는 에셋 포스트 프로세서에서 사용자에게 전달된 소스 에셋에서 생성된 모든 데이터.

머티리얼로 작업할 때 문제가 있습니까?

이미 존재하는 머티리얼을 변경하면 문제가 발생할 수 있습니다. 캐시 서버를 사용할 때 Unity는 머티리얼에 대한 레퍼런스가 유효한지 확인합니다. 그러나 포스트 프로세스가 호출되지 않기 때문에 캐시 서버를 통해 임포트되는 모델에서는 머티리얼의 내용이 변경될 수 없습니다. 따라서 캐시 서버에서 임포트하는 경우와 하지 않는 경우 다른 결과를 얻을 수 있습니다.

Don’t modify materials that already exist on disk from an Asset postprocessor because if you download an fbx file through the cache server, then there is no import process running for it. So if you rely on resetting the generated materials to some generated defaults every time the model importer runs, then this Asset postprocessor will not be run when importing a cached fbx file.

서버에서 캐시되지 않는 에셋의 종류가 있습니까?

서버에 캐시되지 않는 일부 에셋 데이터가 있습니다. 스크립트 파일을 캐시하는 것으로 얻을 수 있는 점이 없기 때문에 서버는 이를 무시합니다. 또한 3D 모델링 소프트웨어(Autodesk® Maya®, Autodesk® 3ds Max® 등)에서 사용되는 네이티브 파일은 어플리케이션 단에서 FBX로 변환됩니다. 현재 에셋 서버는 기본 파일과 임포트 프로세스에서 생성된 중간 FBX 파일 전부를 캐시하지 않습니다. 하지만 모델링 소프트웨어에서 FBX로 익스포트된 파일을 Unity 프로젝트에 추가함으로써 캐시할 수 있습니다.


  • 2018–11–09 일부 편집 리뷰를 거쳐 페이지 수정됨
YAML 클래스 ID 레퍼런스
스크립팅으로 소스 에셋 수정