[Perforce] 2. Unreal Project를 Perforce에 공유하기

5. Perforce 서버에 Unreal Project 공유하기

지난 포스팅에서 Perforce와 Unreal Engine간의 연동 과정까지 끝냈다.
오늘은 Perforce 서버에 프로젝트와 작업물을 올리고 내려받는 방법과 프로젝트에서 관리해야할 디렉토리에 대해서 알아보도록 하겠다.

● 프로젝트 내에서 공유해야할 디렉토리

Perforce에 프로젝트를 공유하기 전 언리얼엔진의 프로젝트 파일이 어떤 구성으로 이루어져 있는지 알아야 좋다.
처음 블루프린트로 프로젝트를 생성 시 언리얼엔진 프로젝트 파일의 디렉토리는 다음과 같다.

이 중에서 필수적으로 공유되어야 할 파일이 제대로 공유되지 않거나 개개인의 임시저장파일이 공유될 경우, 상대방은 정상적으로 프로젝트를 공유받지 못한다.
또한 파일 디렉토리 구조에 대해 알아야 효율적으로 프로젝트를 주고받고 협업이 원할해진다.
따라서 언리얼엔진 프로젝트의 전체 파일 디렉토리의 구조에 대해서 알아보자.

● 블루프린트 기반의 프로젝트
    ○ Config                    : 프로젝트의 세팅, 환경설정 관련 파일
    ○ Content                   : 프로젝트 내 콘텐츠(uasset)
    ○ DrivedDataCache           : 파생 데이터 캐시 저장
    ○ Intermediate              : 임시 파일들 저장
    ○ Saved                     : 자동 저장, 로그, 스크린샷 등 저장
    ○ "Project Name".uproject   : 언리얼 에디터를 구동시키는 실행(연결) 파일
    ○ Build                     : 빌드/패키징 시 생기는 파일
    ○ Plugins(optional)         : 외부/자체제작 플러그인 사용 시 존재
● C++코드 기반의 프로젝트
    ○ Config                    : 프로젝트의 세팅, 환경설정 관련 파일
    ○ Content                   : 프로젝트 내 콘텐츠(uasset) 
    ○ DrivedDataCache           : 파생 데이터 캐시 저장
    ○ Intermediate              : 임시 파일들 저장
    ○ Saved                     : 자동 저장, 로그, 스크린샷 등
    ○ Source                    : C++ 코드 파일
    ○ Binaries                  : C++ 코드 컴파일/빌드 시 생성된 .dll 저장
    ○ .vs                       : Visual Studio 실행시 솔루션 파일 불러오기 단축 용도
    ○ "project Name".sln        : Visual Studio Solution 파일
    ○ "Project Name".uproject   : 언리얼 에디터를 구동시키는 실행(연결) 파일
    ○ Build                     : 빌드/패키징 시 생기는 파일
    ○ Plugins(optional)         : 외부/자체제작 플러그인 사용 시 존재

이 중에서 필수적으로 공유되어야하는 파일들을 알아보자.

● 블루프린트 기반의 프로젝트
    ○ Config                    : 프로젝트의 세팅, 환경설정 관련 파일
    ○ Content                   : 프로젝트 내 콘텐츠(uasset)
    ○ "Project Name".uproject   : 언리얼 에디터를 구동시키는 실행(연결) 파일
    ○ Plugins(optional)         : 외부/자체제작 플러그인 사용 시 존재
● C++코드 기반의 프로젝트
    ○ Config                    : 프로젝트의 세팅, 환경설정 관련 파일
    ○ Content                   : 프로젝트 내 콘텐츠(uasset) 
    ○ Source                    : C++ 코드 파일
    ○ Binaries                  : C++ 코드 컴파일/빌드 시 생성된 .dll 저장
    ○ "project Name".sln        : Visual Studio Solution 파일
    ○ "Project Name".uproject   : 언리얼 에디터를 구동시키는 실행(연결) 파일
    ○ Plugins(optional)         : 외부/자체제작 플러그인 사용 시 존재


● 프로젝트를 Perforce에 올리기

프로젝트를 Perforce에 올리는 방법은 두 가지가 있다.

1) P4V에서 올리기

P4V를 실행하여 Perforce 서버에 접속한 뒤, Workspace로 들어가자.
공유하고자하는 프로젝트 내 폴더 중 위에서 설명한 필수적으로 공유되어야하는 파일들을 선택하고 상단의 Add 혹은 마우스 우클릭 후 Mark for add를 누른다.

그런 다음 Pending Changelist에 추가하기 위해 New를 선택하고 어떠한 변동 사항이 있는지 적는다. (Default를 사용해도 큰 문제는 없다.)

문제없이 펜딩리스트에 추가됐다면 아래 사진처럼 오른쪽 팬딩리스트에 선택된 파일들이 잘 들어간다.
만약 펜딩리스트에 추가가 되지 않는다면 Depot에 올라와있는 파일과 똑같은 경우거나 중복된 펜딩리스트가 존재하는 경우일 것이다.

펜딩리스트까지 무사히 추가했다면 상단의 Submit을 클릭하자.

그런다면 이러한 창이 뜰 것이다. 최종적으로 Submit을 누르고 정상적으로 제출이 된다면 Perforce 서버에 반영된다.


아마 해당 방법으로 프로젝트를 올리다보면 작업한 파일 외에 변동사항이 없는 파일들까지 항상 같이 올라가 불편함을 겪을 수 있다.
그럴 때는 펜딩리스트에서 Unchanged Revert기능을 이용하면 변경된 내용이 있는 파일들만 골라서 펜딩리스트를 정리할 수 있다.


2) 언리얼 에디터 내에서 직접 Perforce에 올리기

언리얼엔진과 Perforce가 정상적으로 연동되어있고 Perforce 서버 내에 동기화가 가능한 프로젝트가 있다면 언리얼 에디터에서 자동적으로 변동사항이 생기면 파일 체크아웃 여부와 펜딩리스트 추가 여부를 묻는다.
그러고나서 오른쪽 하단의 소스 컨트롤 탭에서도 Perforce 서버에 작업물을 제출할 수 있기는 하다.

그러나 이 방식은 추천은 하지 않는다. 왠만하면 Submit은 P4V를 실행하여 직접 하도록 하자.
그리고 왠만하면 Changelist 설명도 영어로 적도록 하자.


● Perforce에서 프로젝트 내려받기

Perforce 서버에서 프로젝트를 내려받는 방법은 간단하다.

1) P4V에서 내려받기

P4V를 실행하여 Depot에 들어가 내려받고 싶은 파일을 선택한 후, 상단의 Get Latest Rivision이나 마우스 우클릭 후 Revision을 클릭하면 된다.
그러면 Workspace로 지정한 폴더에 해당 파일이 내려받아진다.

만약 과거 버전의 파일로 되돌아가거나 필요한 경우 File History 탭에서 필요한 파일을 선택하여 받을 수 있다.


2) 언리얼 에디터 내에서 내려받기

언리얼엔진과 Perforce가 정상적으로 연동되어있고 Perforce 서버 내에 동기화가 가능한 프로젝트가 있다면 에디터의 콘텐츠 브라우저 내에서도 최신 버전으로 내려받을 수 있다.

Perforce 서버에서 내려받기 시 Rivision, 말 그대로 Workspace내에 존재하는 파일이 Perforce 서버(Depot)에 존재하는 파일로 “갱신”되는 형태이다.
그래서 만약 공유가 잘못되어 내려받기를 진행했을 때 최악의 경우, 어떠한 작업이 덮어씌어져 내려받기 이전의 파일로 되돌릴 수 없는 경우가 생긴다.
따라서 현재 작업이 중요하다면 팀원이 공유한 작업물 혹은 프로젝트를 내려받기 전에 따로 백업을 해두고 내려받도록 하자.

이 문제때문에 여러번 팀원들과 작업물을 공유하다가 다시 만든 경험이 존재했다.
꼭 명심하도록 하자.

다음 포스팅에서는 Perforce를 통해 프로젝트 협업을 하면서 생겼던 문제나 자잘한 세팅들에 대한 경험과 팁을 적어보도록 하겠다.