들어가기 전에
먼저 확실히 해둘 게 있다. 이 글에서 말하는 프로젝트는 '개발 과정'을 의미하는 것이 아니라, 언리얼 엔진으로 만드는 '작업물'이다. 정확히 말하면 프로젝트 폴더 안에 있는 Config, Content, Source, Plugins 폴더와 .uproject 파일이다.
그리고 또 한가지. 이 포스팅 시리즈는 반말로 진행된다. 그 이유는.. 그냥 시작을 그렇게 했기 때문이다. (처음에는 나만 볼 목적으로 썼던 글이라서 그렇다.)
Why. 왜 파일을 관리할까?
관리하는 이유는 간단한다. 첫째, 데이터가 유실될까봐. 둘째, 한 프로젝트 안에서 이것 저것 시도해보고 싶어서. 셋째, 다른 사람이랑 협업하려고.
What. 어떤 파일을 관리할까?
맨 처음에 말했듯이 특정 폴더와 파일만을 관리하면 된다. 그 이유는 나머지 폴더&파일은 자동으로 생성되는 것이라서 그렇다. 관리 목록과 내용은 아래와 같다.
이름 |
구분 |
내용 |
Config |
폴더 |
프로젝트에 관한 환경설정 파일이 들어있는 폴더 |
Content |
폴더 |
게임을 만드는 재료인 에셋들이 담겨진 폴더 |
Source |
폴더 |
소스코드(C++)가 들어있는 폴더 |
Plugins |
폴더 |
플러그인 코드가 들어있는 폴더 |
.uproject |
파일 |
프로젝트 정보를 담고있는 파일 + 프로젝트 실행파일 |
위 표에 있는 폴더/파일만 있으면 프로젝트는 유지된다. 비주얼 스튜디오 프로젝트 파일인 .sln도 얘네만 있으면 생성 가능하기 때문에 필수 항목이 아니다.
How. 어떻게 관리하지?
일단 프로젝트가 저장된 장치가 망가졌을 때를 대비해야한다. 복사본을 다른곳에 저장해 놓는 방법이 가장 간단하다. 하지만 매번 새로운 파일들로 덮어쓰기를 해줘야하는 수고를 해야한다. 클라우드에 자동 동기화 시키는 방법도 있는데, 이건 해본 적 없어서 잘되는지 모르겠다.
또 이런 상황도 대비해야 한다. 기능을 구현했는데 막상 만들고 나니까 별로라서 이전 상태로 돌아가고 싶은 상황. 일일히 변경사항을 찾아다니면서 원상태로 복구시켜야할까? 아니다. 이런 상황에 쓰라고 나온 멋쟁이 도구들이 있다. Git, Perforce, SVN, Plastic SCM.
마지막은 다른 사람들과 함께 공동작업을 하는 상황을 대비해야 한다. 이 때도 Git, Perforce 등을 쓴다.
이 포스팅 시리즈에서 다룰 내용
Perforce를 이용한 언리얼 프로젝트 버전관리를 다룬다. Perforce를 이용하면 위 How에 나온 세 가지 상황에 모두 대비할 수 있다. 나도 처음 써보는 도구라서 딥하게는 못다룬다. 영어를 할 줄 안다면 공식문서, 유튜브, 구글링으로 쉽게 찾을 수 있는 정도의 내용일 것이다. 언제나 그렇듯, 나의 포스팅은 가르치면서 배우는 것의 실천이다.
주저리
원래 나는 Git/Github빠인데, 언리얼 엔진은 아직 Git 플러그인 기능이 불완전하다. Git LFS 2 플러그인도 마찬가지고. 그래서 외장하드에 복사본 넣는거 외에는 프로젝트 관리를 안하고 있었다. 그러다가 이번에 부산에 있는 AmazingVR 측과 공포게임 프로젝트를 같이 진행하면서 Perforce를 쓰게 됐다. 예전부터 쓰고 싶었지만 그러지 못했던 것이라서 그런지 밀린 숙제 한것마냥 속이 후련하다.