Plastic SCM은 Unity 엔진에 특화된 Version Control System(VCS)이다.
공식 홈페이지에서는 Plastic SCM이 가지는 다른 VCS(ex. Git, Perforce)들과의 차별점을 다음과 같이 내세운다.
엄밀히 말하면 Plastic SCM은 Unity에서만 사용할 수 있는 SCM은 아니고 Unreal과 같은 다른 엔진과도 연동 가능한 standalone SCM이다.
그렇지만 공식 홈페이지에서도 Unity Plastic SCM이라고 소개하고 있고 현재 Unity Technologies에서 정식으로 인수하여 에디터에 plugin으로 자체 내장한 만큼 이 시리즈에서는 Unity 기준으로 Plastic SCM을 사용하는 방법 등을 소개하고자 한다.
Unity는 게임 엔진이다. 게임 개발의 특성 상 프로그래머 뿐만 아니라 아트, 디자인 등 직군과의 협업이 필수적인데, 이러한 특성에 맞게 Plastic SCM은 프로그래머 뿐만 아니라 다양한 직군의 협업을 지원하는 것을 강조한다.
다음은 Unite Seoul 2020에서 소개하는 Plastic SCM의 장점이다.
- 대규모 프로젝트와 대용량 파일에 적합
- 상황에 따른 유연한 환경 설정 가능
- 빠른 업로드 / 다운로드 속도
- Unity / Unreal 플러그인 지원
- Free To Start
- Gluon Mode 지원
게임 엔진에 특화된 SCM인 이유이기도 한데, 그 이유는 차차 알아가보도록 하겠다.
Gluon Mode는 아티스트 직군을 위해 제공되는 Plastic SCM 모드이다.
프로그래머가 아닌 사람도 쉽게 사용할 수 있도록 단순한 UI를 제공하여 타 직군과의 협업을 더욱 쉽고 간편하게 할 수 있도록 한다.
또한 에셋 파일을 다루는 아티스트 직군의 특성 상 대용량의 바이너리 파일을 다루는 경우가 많은데, Gluon Mode는 이에 특화되어 있다.
타인과의 작업이 겹치지 않게 하기 위해 파일을 잠글(lock) 수도 있으며, 전체 프로젝트의 로드 없이 실제로 필요한 파일만 불러오는 기능도 제공한다.
Plastic SCM의 Gluon 활용 가이드는 링크에서 확인할 수 있다.
정리하자면 아티스트는 Gluon workspace에서, 프로그래머는 Plastic workspace에서 각각 작업함을 통해 효율적으로 협업을 수행할 수 있다.
Cloud Edition은 최대 3명의 사용자에 대해 월 5GB 스토리지를 무료로 이용가능하다.
인원이 추가되거나, 스토리지 사용량을 초과하면 추가로 요금이 부과된다.
기업용인 Enterprise Edition은 인당 월 23$를 부과한다.
더욱 자세한 사항은 공식 홈페이지를 참고하자.
Plastic SCM은 workspace에 대해 Centralized와 Distributed 중에서 관리 방식을 선택할 수 있도록 한다. 프로그래머의 필요에 맞게 선택할 수 있기 때문에 프로젝트 관리의 유연성을 높일 수 있다.
Git이 대표적인 Distributed System의 예시이다.
분산된 workspace들에서 작업한 내용들을 각각의 로컬 레포지토리에 commit하고 리모트 레포지토리에 push하는 형태를 지닌다.
리모트 레포지토리의 작업물을 더욱 stable하게 관리할 수 있다는 장점이 있다.
Centralized System을 사용하는 대표적인 VCS는 Perforce가 있다.
Distributed과 다르게 로컬 레포지토리를 사용하지 않으며 리모트 레포지토리와 다이렉트로 연결되어 작업하게 된다.
모든 팀원이 동일한 latest version을 공유하게 된다는 특징이 있다.
Distributed의 경우 팀원들이 개인 레포지토리에서 작업한 내용을 그때그때 push하지 않으면 타 팀원들 간 작업 내용에 차이가 발생할 수 있다.
https://www.plasticscm.com/download 에서 프로그램을 다운로드할 수 있다.
종류는 Cloud Edition과 Enterprise Edition으로 나뉘는데, 이 중 개인이나 소규모 팀이 사용하기에 적합한 Cloud Edition 버전을 기준으로 설명한다.
프로그램을 설치하면 Plastic workspace를 사용할지, Gluon workspace를 사용할지 선택하게 되는데 이는 추후에도 언제든 변경할 수 있다.
로그인을 위해서 Plastic SCM 계정을 만들어도 되지만 기존의 Unity ID를 사용할 수도 있다.
개인적으로는 Unity ID를 사용하는 방식이 나아보인다.
실행 창 우측 상단의 점 3개 버튼을 클릭하면 Gluon과 Plastic SCM으로 모드를 변경할 수 있다.
Plastic SCM Plugin Unity Docs에서 Plastic SCM 플러그인을 지원하는 Unity 에디터 버전을 확인할 수 있다. Docs ver. 2023.1 기준으로는 다음 버전 이상의 Unity 에디터에서 위와 같이 [Window] -> [Plasic SCM] 버튼을 통해 플러그인을 실행할 수 있다.
- 2019.4.29f1
- 2020.3.15f1
- 2021.1.15f1
- 2021.2.0b6
- 2022.1.0a4
실행 후 다음과 같은 panel이 나오면 주어지는 절차대로 Plastic SCM 계정을 만들고 프로젝트의 workspace를 생성하면 된다.
자신의 목적과 담당 파트에 맞게 Plastic workspace 혹은 Gluon workspace를 설정하여 레포지토리를 생성하면 된다.
Unity용 플러그인에서보다 Plastic SCM 어플리케이션에서 좀 더 다양하고 세분화된 기능을 제공하므로 만약 그러한 작업을 수행하기 위해서는 어플리케이션을 실행시키는 편이 낫다.
에디터 내에서 그림과 같이 톱니바퀴 버튼을 클릭하여 Plastic SCM을 실행하거나 혹은 Plastic SCM의 Project Settings를 수정할 수 있다.
설정 창은 [Project Settings] -> [Version Control] -> [Plastic SCM]을 통해서도 접근할 수 있다.
(UI가 한글로 나오는 경우)
Unity Editor에서 플러그인을 먼저 설치 후 Plastic SCM을 설치했는데 원래 영어로 나오던 플러그인의 UI가 한글로 변했다.
만약 영어 UI를 사용하고 싶다면 Windows 기준으로 C:\Users\{Username}\AppData\Local\plastic4 에서
client.conf
XML 파일의<Language>ko</Language>
부분을 ko -> en으로 수정해주고 에디터를 재시작하면 된다.
(플러그인뿐만 아니라 Plastic SCM에도 같이 적용된다.)
앞서 Plastic SCM이 게임 엔진에 특화된 SCM이라고 언급했다.
Unity에 대해 Plastic SCM이 가지는 장점들을 정리해 보았다.
Git의 경우 파일의 이동을 감지하지 못하고, 이를 파일의 삭제와 생성으로 간주한다.
반면 Plastic SCM에서는 파일의 이동을 감지하기 때문에, 파일의 히스토리를 관리하기 용이하다.
Unity에서는 모든 asset에 대해 meta 파일을 생성하여 asset의 metadata를 관리하는데, 이 때 빈 폴더에도 .meta 파일이 생성된다.
그러나 Git에서는 빈 폴더의 경우 commit이 불가능하므로 폴더의 .meta 파일은 commit되지만 정작 그 폴더는 commit이 되지 않는 상황이 발생한다. 만약 누군가가 폴더를 수정하는 경우 해당 .meta 파일은 존재하지 않는 폴더에 대한 메타데이터가 되어 버린다.
Plastic SCM에서는 폴더를 entity로 간주하여 처리하기 때문에 빈 폴더를 Checkin하는 것이 가능할 뿐만 아니라 히스토리 관리 역시도 가능하다.
에디터에 플러그인이 자체 내장되어 있어 접근 및 사용이 편리하다.
또한 Plastic SCM 어플리케이션을 설치하지 않아도 플러그인만으로도 충분히 작업이 가능한 것도 장점이다.
게임 개발의 특성 상 용량이 큰 asset들을 많이 사용하게 되는데 Git의 경우 대용량 파일을 처리하기 위해 Git LFS라는 별도의 기능을 사용해야 한다.
Plastic SCM에서는 그런 것 없이 그냥 바로 처리하면 되며, 속도도 빠르다.
아티스트가 간편하게 프로그래머와 협업할 수 있는 환경을 제공한다. (Gluon)
Unity 작업에 특화된 Merge 기능 및 Conflict 처리를 지원한다.