버전 제어를 위해 소스 코드뿐만 아니라 모든 자산, 텍스처, 아트, 문서 파일 등을 git 저장소에서 관리하는 것이 일반적입니까? 예를 들어 구 버전의 텍스처를 되찾고 싶습니다. 아주 나쁜 연습이라면 자산과 다른 것들의 버전 관리를 위해 어떤 도구를 사용합니까?
버전 제어를 위해 소스 코드뿐만 아니라 모든 자산, 텍스처, 아트, 문서 파일 등을 git 저장소에서 관리하는 것이 일반적입니까? 예를 들어 구 버전의 텍스처를 되찾고 싶습니다. 아주 나쁜 연습이라면 자산과 다른 것들의 버전 관리를 위해 어떤 도구를 사용합니까?
답변:
나는 이것이 좋은 습관이라고 말한다. 소스 및 자산에 소스 제어를 사용해야합니다. 당신은 그것을 백업처럼 생각할 수 있으며, 게임을 만드는 데 필요한 모든 것을 소스 제어에서 복원 할 수 있기를 원합니다.
나는 질문 링크 된 저장소에 자산을 저장하기에 관하여이다. 예술을 저장하는 데 다른 저장소보다 더 잘 작동하는 저장소가 있습니다. 그들은 당신이 예술을 "발산"하고 무엇이 바뀌 었는지 볼 수 있습니다. 다른 사람들은 자산을 이진 데이터로 취급하므로 다른 점을 확인하려면 자산을 확인해야합니다. 또한 리포지토리에서 버전간에 변경된 내용을 "알고"(파싱) 할 수 없으므로 자산이 변경 될 때 전체 자산을 업로드해야합니다.
나는 모든 것을 저장소에 저장합니다. 새 랩톱을 구입하면 다른 곳에서 자산을 복사 할 필요없이 저장소를 확인하고 게임을 빌드 할 수있었습니다. 즉, 타사 라이브러리, 자산 및 소스 제어도 내 저장소에 저장합니다.
Git은 텍스트가 아닌 파일에는 적합하지 않습니다. git repo를 복제하려면 큰 파일 확장자 (비표준, GUI에서 종종 지원하지 않는) 또는 특수 명령 (git 전문가가 필요)을 사용하지 않는 한 모든 히스토리 버전 파일을 다운로드해야합니다. 대부분의 DVCS 시스템에서도 마찬가지입니다. 텍스처, 모델 또는 오디오 클립의 경우 이는 매우 큰 파일의 많은 사본을 가져 오는 것을 의미합니다. 1GB의 자산은 200GB의 과거 개정 데이터 일 수 있으며, git을 사용하면 새 저장소를 복제 할 때 모든 데이터를 다운로드하고 최신 저장소를 가져올 때 모든 중간 개정을 다운로드 할 수 있습니다. 이것은 생산 지연을 최소한으로 견딜 수있을 때 도로에 큰 병목 현상이 발생합니다.
Subversion, Perforce 등은 원하는 개정판 (일반적으로 최신 버전) 만 다운로드하면되므로 자산을 선택하는 것이 좋습니다. 애셋에만 사용하고 git을 코드에 사용하거나 소스에도 사용할 수 있습니다. Perforce는 매우 복잡한 DVCS처럼 작동 할 수있는 몇 가지 기능을 가지고 있으며 내 경험에서 SVN 기능 (훨씬 더 복잡하지만)보다 우수하지만 비용은 Subversion을 사용할 가능성이 있음을 의미합니다.
대부분의 컨텐츠 전문가는 DVCS를 거의 필요로하지 않으며 일부는 클래식 VCS의 기본 사항까지도 문제가 있습니다. 자식으로 안장하지 마십시오. 또는 Mercurial, DARCS 등
프로젝트를 작업 할 때 아티스트로서 버전 제어, 파일 손상 또는 버그가 발생하는 경향이 있고 소스 제어 아티스트가 수정 저장을하지 않는 경향이있는 것은 좋은 습관입니다.
실제 사례는 Blender (Big Buck Bunny, Durian 등)로 만든 공개 영화 프로젝트입니다.
게임 자체의 아트 파이프 라인은 자산 자체가 텍스처 압축 및 모델 형식 변환과 같은 큰 지방 데이터에서 엔진 특정 형식으로 일부 변환을 수행 할 수있는 빌드 단계가 있다는 점을 제외하면 거의 동일합니다.
GitHub와 같은 일부 도구는 멋진 이미지 비교 도구를 제공하며 이진 얼룩을 비교하는 것보다 훨씬 좋습니다.
자산 저장소는 절대적으로 클 수 있기 때문에 저의 선호는 프로젝트 저장소의 하위 모듈 인 별도의 자산 저장소를 유지하는 것입니다. 예를 들어 소스를 분기하는 것만으로 기가 바이트의 자산을 풀고 싶지 않습니다.