Asset Server__는 레거시 제품이라는 점을 참고하십시오. Unity 프로젝트의 버전을 관리하기 위해서는 Plastic SCM__ 또는 __Perforce__를 사용하는 것을 권장합니다.
Unity 에셋 서버 는 Unity에 통합된 그래픽 사용자 인터페이스를 갖춘 에셋 및 버전 관리 시스템입니다. 팀원들이 각자 다른 컴퓨터로 직접 또는 원격으로 프로젝트 협업을 하도록 고안됐습니다. 에셋 서버는 몇 멀티 기가바이트 프로젝트 폴더에 대응하는 큰 바이너리 에셋을 처리하는 데 고도로 최적화됐습니다. 에셋을 업로드할 때 임포트 설정(Import Settings) 과 각 에셋의 기타 메타 데이터도 에셋 서버에 업로드됩니다. 이름 변경과 파일 이동이 시스템의 핵심이며 잘 지원됩니다.
에셋 서버는 팀 라이선스 사용자만 이용할 수 있습니다. (Unity Pro 사용자인데 팀 라이선스가 없을 경우) 팀 라이선스를 구입하려면 Unity 스토어 http://unity3d.com/store를 방문해야 합니다.
에셋 서버는 레거시 제품이며 더 이상 유지되지 않고 있으니 참고하시기 바랍니다.
소스 컨트롤을 전혀 사용해본 적이 없다면 버전 관리 시스템의 종류를 불문하고 시작에 약간의 어려움을 느낄 수 있습니다. 소스 컨트롤은 메시, 텍스처, 머티리얼, 스크립트 등 모든 에셋의 전체 컬렉션을 서버의 데이터베이스에 저장하는 작업입니다. 해당 서버는 (사용자의) 집(에서 사용하는) 컴퓨터일 수도 있고 Unity를 실행하는 데 사용하고 있는 동일 컴퓨터일 수도 있습니다. 아니면 세계의 다른 지역에 배치된 원격 컴퓨터일 수도 있습니다. 심지어 가상 컴퓨터일 수도 있습니다. 많은 옵션이 있지만 서버의 위치는 전혀 중요하지 않습니다. 중요한 것은 어떻게든 네트워크를 통해 서버에 액세스할 수 있고 그 서버에 게임 데이터를 저장한다는 것입니다.
어떤 의미에서 에셋 서버는 프로젝트 폴더의 백업 기능을 합니다. 개발하는 동안에는 에셋 서버의 콘텐츠를 직접 조작하지 않습니다. 로컬에서 프로젝트를 변경하여 완료했을 때 서버의 프로젝트에 Commit Changes 를 실행합니다. 이렇게 하면 로컬 프로젝트와 에셋 서버의 프로젝트는 완전히 동일해집니다.
동료 개발자에 의해 변경사항이 발생하면 에셋 서버가 동료의 프로젝트와는 완벽하게 동일하지만 다른 사람들과는 아닙니다. 로컬 프로젝트를 동기화하려면 Update from Server 를 실행합니다. 이제 다른 팀원들이 변경한 사항은 서버에서 로컬 Project로 다운로드 됩니다.
이것이 에셋 서버의 사용에 대한 기본적인 워크플로입니다. 기본적인 기능 이외에 에셋 서버는 과거 버전의 에셋으로 롤백, 자세한 파일 비교, 다른 스크립트의 병합, 충돌 해소, 삭제된 에셋의 복구 등의 기능을 제공합니다.
에셋 서버에는 한 차례의 서버 설정과 각 사용자별 클라이언트 설정이 필요합니다. 이 작업을 수행하는 자세한 내용은 에셋 서버 설정 페이지를 참조하십시오.
이 가이드의 나머지 부분에서는 에셋 서버를 배포, 관리하고 정기적으로 사용하는 방법을 설명합니다.
이 섹션에서는 에셋 서버를 일상적으로 사용할 때 공통 태스크, 워크플로 및 최상의 방법에 대해 설명합니다.
이미 에셋 서버에 상당한 작업이 저장된 팀에 합류하는 경우 준비와 올바른 실행을 할 수 있는 가장 빠른 방법은 다음과 같습니다.
구성원이 많은 팀에서 에셋 서버를 사용할 때는 일반적으로 작업을 시작하기 전에 서버에서 변경된 모든 에셋을 업데이트하는 것이 좋습니다. 또 일과나 작업이 끝나면 변경사항을 커밋합니다. 특히 진행에 중요한 변경이 있었다면 일과 중이라 하더라도 이를 커밋합니다. 변경 사항을 정기적으로, 자주 커밋할 것을 권장합니다.
서버 뷰(Server View) 는 연결돼 있는 에셋 서버로의 창입니다. 창(Window)->버전 관리(Version Control) 를 선택해서 서버 뷰를 열 수 있습니다.
서버 뷰는 다음의 탭으로 구성돼 있습니다. Overview Update, Commit. Overview 는 로컬 프로젝트와 서버의 최신 버전을 보여주고 로컬 변경사항을 신속하게 커밋하거나 최근 업데이트를 다운로드할 수 있는 옵션을 제시합니다. Update 는 서버에 일어난 최근의 원격 변경 사항을 보여주고 로컬 프로젝트에 다운로드 하도록 도와줍니다. Commit 은 Changeset 을 생성하고 이를 서버에 커밋해 다른 사람들이 다운로드 하게 해줍니다.
에셋 서버를 사용하기 전에 먼저 서버에 연결해야 합니다. Connection 버튼을 클릭하면 연결 화면이 표시됩니다.
다음 사항을 입력해야 합니다.
Show projects 를 클릭하면 에셋 서버에 저장된 프로젝트를 볼 수 있습니다. Connect 를 클릭해 연결하려는 프로젝트를 선택합니다. 사용자 이름과 패스워드는 시스템 관리자에게 받을 수 있습니다. 시스템 관리자는 에셋 서버를 설치할 때 계정을 생성합니다.
서버에서 모든 업데이트를 다운로드하려면 개요 탭에서 Update 탭을 선택합니다. 최근 커밋된 Changeset 리스트가 보입니다. 이 가운데 하나를 선택해보면 커밋 메시지 뿐만 아니라 프로젝트의 변경사항을 볼 수 있습니다. Update 를 클릭하면 Changeset의 모든 업데이트 다운로드가 시작됩니다.
로컬 프로젝트를 변경한 후 서버에 그 변경사항을 저장하려면 상단의 Commit 탭을 사용합니다.
이제 프로젝트에 마지막 업데이트 이후에 일어난 모든 로컬 변경을 볼 수 있습니다. 또 어떤 변경사항을 서버에 업로드할 지도 선택할 수 있습니다. 변경사항은 수동으로 드래그해서 체인지셋 필드에 넣거나 커밋 메시지 필드 아래에 있는 버튼을 사용해 체인지셋에 추가할 수 있습니다. 커밋 메시지를 입력하면 버전 비교를 하거나 나중에 과거 버전으로 되돌리는 데 도움이 된다는 사실을 잊지 마십시오. 이에 대해서는 아래에서 설명합니다.
여러 사람이 같은 데이터 컬렉션으로 작업을 하면 충돌이 일어날 수 밖에 없습니다. 하지만 당황할 필요는 전혀 없습니다! 충돌이 발생하면 프로젝트를 업데이트할 때 Conflict Resolution 다이얼로그가 나타납니다.
여기에서 각 충돌에 대한 정보를 파악할 수 있으며 해당 충돌을 각각 어떻게 해결할지 여러 옵션이 주어집니다. 각 충돌에 대해 (서버에서 에셋을 다운로드하지 않는) Skip Asset 을 선택하고 (에셋의 로컬 버전을 완전히 덮어쓰는) Discard My Changes 나 (다른 사람이 변경한 사항을 무시하고 이 업데이트 후 로컬 변경사항을 서버에 커밋할 수 있는) Ignore Server Changes 를 선택할 수 있습니다. 또한 스크립트 같은 텍스트 에셋의 서버 버전과 로컬 버전을 병합하려면 Merge 를 선택합니다.
주의: 혹시 변경사항을 폐기하기로 결정하면 에셋은 서버에서 최신 버전으로 업데이트 됩니다(즉, 작업 중에 다른 사용자가 변경한 사항을 받아들입니다). 만약 에셋을 작업을 시작하기 전 상태로 되돌리고 싶다면 확인된 특정 버전으로 되돌리기 해야 합니다(아래의 리비전 이력 탐색 또는 에셋 되돌리기 를 참조하십시오).
만약 로컬의 변경사항을 커밋하다 충돌이 발생하면 Unity는 커밋하지 않고 충돌이 생겼음을 알려줍니다. 충돌을 해결하려면 Update 를 선택하세요. 로컬의 변경 내용을 자동으로 덮어쓰지 않을 것입니다. 이 때 Conflict Resolution 다이얼로그가 뜨면 윗 단락의 지시를 따르십시오.
에셋 서버는 업로드 된 모든 버전의 에셋을 데이터베이스에 저장하고 있기 때문에 언제든지 로컬 버전을 이전 버전으로 되돌릴 수 있습니다. 프로젝트 전체를 복원할 수도, 파일 한 개만 복원할 수도 있습니다. 에셋이나 프로젝트를 과거 버전으로 되돌리려면 개요 탭을 선택해 에셋 서버 동작 아래에 리스트 표시된 Show History 를 클릭합니다. 이제 모든 커밋 리스트가 나타나며 파일 또는 프로젝트 전체를 옛 버전으로 복구할 수 있습니다.
여기서는 버전 번호 및 추가된 코멘트를 각 에셋 또는 프로젝트 버전과 함께 볼 수 있습니다. 적절한 코멘트가 도움이 되는 이유 중 하나가 이것입니다. 에셋 중 하나를 선택하여 그 이력을 확인하거나 Entire Project 를 선택하여 프로젝트에서 수행된 모든 변경 내용을 볼 수 있습니다. 필요한 리비전을 찾으세요. 리비전 전체를 선택하거나 리비전 중 특정 에셋을 선택할 수 있습니다. 다음에 Download Selected File 을 클릭해 로컬 에셋을 선택된 리버전으로 바꿉니다. 전체 프로젝트를 선택한 리비전으로 되돌리려면 Revert All Project 를 선택합니다.
되돌리기에 앞서 로컬 버전과 선택한 서버 버전 사이에 차이가 있다면 로컬에 변경된 사항은 손실됩니다.
만약 로컬 파일의 변경 내용만 삭제하고 싶은 경우에는 이 되돌리기 기능을 이용할 필요가 없습니다. 로컬 수정사항을 폐기하려면 메인 에셋 서버 창의 Discard Changes 을 선택합니다. 그러면 서버에 있는 프로젝트 최신 버전을 로컬 프로젝트로 즉시 다운로드합니다.
두 개의 특정 버전의 차이가 궁금한 경우 이를 명시적으로 비교할 수 있습니다. 먼저 History 창을 열어 비교하고자 하는 리비전과 에셋을 선택하고 Compare to Local Version 를 누르십시오. 에셋의 서로 다른 리비전을 비교하는 경우에는 오른쪽 클릭하여 컨텍스트 메뉴에서 Compare to Another Revision 을 선택한 후 비교하려는 리비전을 찾아 선택합니다.
참고: 이 기능을 수행하려면 지원되는 비교/병합 툴 중 하나가 설치돼있어야 합니다. 지원되는 툴은 다음과 같습니다.
로컬 에셋을 제거한 후 서버에 삭제를 커밋해도 에셋이 영구적으로 제거되는 것은 아닙니다. 모든 과거 버전의 에셋처럼 개요 탭에서 History 창을 통해 복구할 수 있습니다.
Deleted Assets 항목을 확장해 리스트에서 에셋을 고르고 Recover 를 누르면 선택된 에셋들이 다운로드 되어 로컬 프로젝트에 다시 추가됩니다. 만약 에셋이 제거되기 이전에 위치했던 폴더가 계속 남아있다면 에셋은 원래 위치에 복구됩니다. 폴더가 남아있지 않은 경우에는 로컬 프로젝트 Assets 폴더의 루트에 추가됩니다.
에셋 서버를 사용할 때 도움이 될 베스트 프랙티스와 문제 해결책을 모아 소개합니다.
패스워드 재설정은 셸, 콘솔 또는 커맨드 라인에서 다음 명령을 사용해 직접 재설정할 수 있습니다.
psql -U unitysrv -d template1 -c"alter role admin with password 'MYPASSWORD'"
ProgramFiles\Unity\AssetServer\log
/Library/UnityAssetServer/log
이제 에셋 서버를 효과적으로 사용하는 데 충분한 지식을 얻었을 것입니다. 작업을 수행하면서 훌륭한 워크플로의 기본을 명심하십시오. 변경사항은 수시로 커밋하고 뭔가를 잃는다는 것을 두려워하지 마십시오.