실감 심화편 ICVFX에서의 협업 및 버전 관리
GCC 사관학교
안녕하세요 오늘 ICVFX 협업과 버전 관리에 대한
강의를 진행하게 될 박지용입니다
이번 강의에서는 ICVFX 프로젝트에서
협업과 버전 관리가 왜 중요한지
그리고 이를 효율적으로 관리할 수 있는
Purforce에 대해 알아보겠습니다
이론 부분에 대해 설명한 뒤 실습을 통해
Perforce를 실제로 설정하고
사용하는 방법을 학습해보려고 합니다
Perforce 소개
버츄얼 프로덕션에서 Perforce는 중요한 역할을 합니다
빠르게 변하는 제작 환경에서
디지털 자산을 효율적으로 관리하는 것은 필수적인데요
여러 팀원이 원격 또는 서로 다른 위치에서 작업을 할 때
여러 대의 ICVFX용 랜덤 머신이 데이터 동기화를 할 때
Perforce와 같은 소스 제어 도구는
모든 기기가 동기화 상태를 유지하고
버전 충돌을 방지하는 데 도움이 됩니다
먼저 중요한 개념을 짚고 넘어가겠습니다
많은 분들이 이 도구를 Perforce라고 부르는데
실제 이름은 Helix Core입니다
이제는 Perforce라는 회사가 여러 제품을 내놓고 있지만
Helix Core가 그 중에서도 버전 관리 기능을
수행하고 있는 소프트웨어라고 보시면 됩니다
쉽게 말해 Perforce는 회사 이름이고
Helix Core는 우리가 사용하는 버전 관리 소프트웨어입니다
두번째로 알아야 할 점은 Helix Core는
중앙 집중식 버전 관리 시스템이라는 것입니다
중앙 집중식 버전 관리 시스템에는
파일의 실제 원본이 되는 서버가 어딘가에 있습니다
이 서버가 모든 파일의 버전과 히스토리를 보관합니다
여러분이 작업할 때는
서버에서 직접 파일을 수정하는 것이 아니라
로컬 컴퓨터로 파일을 내려받아 작업한 후
수정 사항을 다시 서버에 제출하는 방식입니다
즉 서버에서 직접 파일을 편집하는 것이 아니라
로컬에서 작업하고 그 이후에
이를 서버에 반영하는 형태로 진행됩니다
다른 사람이 제출한 변경 상황도
같은 방식으로 서버에 반영되어
최신 버전을 함께 공유할 수 있습니다
그럼 Helix Core와 관련된 주요 작동 개념과
용어에 대해 설명드리겠습니다
Perforce를 처음 접하는 분들에게는
매우 낯선 용어가 많은데요
하지만 이 용어들의 의미와 역할을 이해하면
Helix Core를 조금 더 효율적으로 사용할 수 있으니
좀 더 집중해 보시면 좋을 것 같습니다
크게 먼저 살펴보면 Helix Core에는
실제 작업이 중앙 서버에서 이뤄지지 않습니다
대신 서버 Depot에 저장된 파일을
로컬 컴퓨터 Workspace로 다운로드 한 뒤에
Sync를 진행한 다음에 변경 사항을 작업합니다
작업이 끝난 파일은 다시 서버로 제출
Submit하여 최신 상태를 유지할 수 있습니다
용어 하나씩 조금 더 살펴보겠습니다
먼저 Depot입니다
Depot은 중앙 저장소 역할을 하는 공간입니다
모든 파일의 원본이 저장되는 장소라고 생각하시면 됩니다
관리자의 관리하에 접근 가능한 팀원을 설정하여
작업에 필요한 인원이 접근할 수 있게 되는 공간입니다
여기에는 프로젝트 전체 히스토리도 함께 보관됩니다
쉽게 말해 모든 작업의 중앙 거점이라 생각하시면 됩니다
그 다음으로는 Workspace입니다
Workspace는 팀원 각각이 개인 컴퓨터 내에서
작업할 수 있는 공간입니다
Depot에 있는 파일들을 Workspace로 동기화하여
로컬 환경에서 파일을 수정할 수 있습니다
각 작업자가 개별 Workspace에서 작업하며
필요할 때마다 Depot과 동기화합니다
그 다음은 Sync입니다
Sync는 Depot에 저장된 최신 파일을
자신의 Workspace에 다운로드하는 작업입니다
즉 서버의 최신 상태와 내 로컬 환경을 맞추는 과정입니다
협업 환경에서 매우 중요한 작업으로
이를 통해 팀원은 항상 최신 버전의 파일을 기반으로
작업할 수 있습니다
Perforce에서는 Get Latest와
Get Revision을 통해 Sync를 합니다
그 다음은 Submit, 제출입니다
Submit은 로컬 환경에서 수정한 파일을
Depot에 업로드하여 다른 팀원들도 수정 내용을
반영할 수 있도록 하는 과정입니다
한 팀원이 변경한 파일이 다른 팀원에게도 반영되려면
반드시 Submit을 해야 합니다
그 다음은 Change List입니다
Change List는 하나의 작업이 포함된
변경사항 목록이라 생각하시면 됩니다
Helix Core에서 파일을 수정하고 Submit할 때
이 수정 사항들이 Change List로 묶여 관리됩니다
Change List는 수정한 파일을 묶음으로 추후
변경사항을 추적하거나 관리할 때 유용하게 활용됩니다
마지막으로 Revision입니다
Revision은 파일을 버전으로 나타냅니다
파일이 수정될 때마다 새로운 Revision이 생성되며
이전 버전으로 돌아가야 할 때 유용하게 활용됩니다
최신 버전은 Head Revision으로 불리며
각 파일의 히스토리를 추적할 수 있습니다
Helix Core에서 컴포넌트는 여러가지가 있습니다
컴포넌트는 간단히 말해서 Helix Core 기능을
목적과 역할에 따라 별도로 나눈
소프트웨어라고 생각하시면 됩니다
이번에는 가장 중요한 3가지 컴포넌트
P4D, P4V, P4admin에 대해 알아보겠습니다
P4D는 Perforce Helix Core 서버 역할을 하며
Perforce Depot의 줄임말입니다
역할은 모든 버전과 데이터의 중앙 저장소
역할을 하는 서버를 구축하는 컴포넌트입니다
P4D를 서버로 구축하고 싶은 컴퓨터에
설치 및 경로 매핑을 추가하게 되면
해당 컴퓨터의 해당 경로를
Helix Core의 서버 역할로 하게 됩니다
그 다음은 P4V입니다
P4V는 Perforce Visual Client의 줄임말입니다
역할은 Helix Core 서버에 연결하여
파일을 관리하는 사용자 인터페이스입니다
직관적인 GUI를 통해 팀원들과 쉽게
작업 및 협업을 가능하게 합니다
이를 통해서 사용자들은 파일을 Submit, 체크, Sync 등
기본적인 버전 관리 작업을 수행하게 됩니다
그 다음은 P4admin입니다
P4admin은 Helix Core 서버의 관리 도구이며
서버 설정 및 사용자 권한 관리 담당을 합니다
이를 통해 서버 설정,
프로젝트 전반의 환경을 제어하고 최적화합니다
보통 관리자들이 사용하며
서버, Depot, 사용자 권한 백업 등을 관리합니다
앞에서 이야기했던 Helix Core를 활용해
데이터를 동기화하고 협업하는 기능들을 사용하기에
더욱 유용하고 쉬운 방법이 있습니다
바로 언리얼 엔진에서 제공하는 Source Control 기능입니다
해당 기능을 사용하게 되면 프로젝트 종료 후
P4V에서 별도로 Submit하는 과정이 없이
언리얼 엔진 내에서 바로 Submit할 수 있게 됩니다
이는 언리얼 엔진 콘텐츠 폴더 내에서
내가 수정한 데이터만 자동적으로 파악해서 올리기 때문에
업로드 및 동기화 시간 자체가 매우 혁신적으로 줄어듭니다
만약 Source Control을 사용하지 않는다면
어떤 파일이 수정됐는지 찾아서
그 파일만 Submit하거나
전체 파일을 체크아웃 후 Submit해야 합니다
하지만 Source Control은
기존 파일에서 내가 수정한 데이터만 자동으로 체크아웃 후
Submit할 수 있기 때문에 매우 효율적입니다
사실 Source Control에 사용 가능한
버전 관리 소프트웨어는
Perforce만 있는 것이 아닙니다
Perforce 이외에도 GIT, Subversion,
Plastic SCM이 있습니다
각각의 장단점이 있는데요
GIT과 같은 경우 무료로 공개된 오픈 소스이지만
엔지니어가 아니면 사용이 꽤 어렵고
대규모 프로젝트에는 부적합하거나 하는 장점이 있습니다
Subversion도 GIT과 비슷하지만
더 복잡한 워크플로우를 가지고 있습니다
또한 대규모 팀에는 맞지 않습니다
Plastic SCM은 비교적 최근에 등장한 소프트웨어이고
대규모 프로젝트에서도 효율적인 버전 관리가 된다고 하지만
아직까지 사용자가 많은 편은 아닙니다
Perforce는 다른 소프트웨어에 비해 장점이 많고
확장성이 뛰어나며 대형 파일 처리에도 탁월합니다
공동작업에 있어 중요한 부분
예를 들어 작업자 간 충돌을 방지할 수 있는
잠금 기능이 있고
특히 언리얼 엔진이나 Maya 같은
VFX 툴과의 통합이 강력하기 때문에
저희는 Perforce를 가지고 작업하고 있습니다
서버 및 P4V Client 구축 방법
그러면 이제부터 Perforce에 대한
실습 강의를 진행하도록 하겠습니다
저는 두 대의 컴퓨터가 있다고 가정하고
한 대는 서버, 다른 한 대는 유저 입장에서
구축을 해보도록 하겠습니다
우선 서버 구축을 하는 방법을 먼저 살펴보겠습니다
우선 서버 설치를 하기 위한 설치 파일을
다운로드 먼저 해야 합니다
크롬에 먼저 들어가서 구글 검색에서
perforce p4d download를 입력합니다
이렇게 입력하시면 맨 상단에 노출되는
P4D Download를 클릭해 줍니다
여기 들어오셔서 FAMILY, 즉 Windows OS가 있는데
여기서 Windows를 클릭하시고요
그 다음에 플랫폼은 64비트 운영체제인지
86비트 운영체제인지 확인할 수 있습니다
여기서 저희는 64비트를 사용할 예정입니다
이거를 기준을 알 수 있는 방법은 시스템 들어가셔서
여기서 시스템 종류를 보시면 아실 수 있습니다
여기서 DOWNLOAD를 클릭하십니다
아주 적은 용량으로 바로 다운로드가 되었죠
다운로드가 완료되었고 한번 설치를 진행하도록 해보겠습니다
설치는 관리자 권한으로 실행해서 진행하도록 하겠습니다
누르시면 이렇게 Helix Server (P4D)와
Helix Command Line (P4)가 있습니다
P4D는 말 그대로 Depot 서버를 관장하는 컴포넌트고요
이 P4 같은 경우는 커맨드 라인
즉 cmd로 명령어를 실행하고
진행할 수 있도록 하는 컴포넌트 입니다
Next를 누르시면
여기서 기본적으로 제일 중요한 Port Number
그리고 P4ROOT 두 개 설정하실 수 있습니다
기본적인 디폴트 값은 1666 입니다
1666 이대로 사용하면 되는데
만약에 한 컴퓨터에서 여러 서버를 구축할 경우
Port Number를 변경하여
여러 개의 서버로 분할하여 사용할 수도 있습니다
P4ROOT 같은 경우는 보시면
Helix Core 서버의 데이터베이스와
버전 파일들이 저장되는 곳입니다
저 같은 경우는 D드라이브의
특정 폴더 경로를 지정하겠습니다
이렇게 하고 Next를 누르시면
서버의 IP와 User Name을 지정하실 수 있습니다
서버 같은 경우는 앞서 설정했던 포트 넘버가 있는데
추가적으로 앞에 :를 넣고
저희 IP를 입력해야 합니다
만약 포트 넘버만 기입하게 되면
자동적으로 본인 컴퓨터의 IP 주소로 설정됩니다
다만 제 컴퓨터의 NIC 카드가 여러 개이기 때문에
별도로 지정해 줘야지만 올바르게
제가 원하는 대로 서버를 구축할 수 있습니다
User Name 같은 경우는 이제 기본적으로
admin 그냥 사용하도록 하겠습니다
이제 제 IP를 어떻게 확인하는지를 알아보도록 하겠습니다
윈도우 키를 누르시고 cmd를 실행하겠습니다
여기서 ipconfig를 기입합니다
이렇게 하면 제 컴퓨터에 총 2개의
2단의 포트가 있는 걸 확인할 수 있습니다
IPv6, IPv4 주소, 서브넷 마스크, 기본 게이트웨이
이런 식으로 설정된 부분이 나오고요
저 같은 경우는 지금 위에 있는 것은 외부망
하단에 있는 것은 사설 IP로
내부 IP로 제가 임의로 지정해서 구축해 놓은 시스템입니다
전 내부 안에서만 쓸 거기 때문에 지금은
해당 IP를 입력할 예정입니다
그러면 다시 넘어와서 저는 IP를 입력하고
Next를 누릅니다
그리고 Install 버튼을 누릅니다
네, 이렇게 설치가 완료가 되었습니다
아까 설정해 두었던 p4_test 폴더에 와 있습니다
여기에 서버 역할을 하기 위한 준비가 되어 있습니다
그 다음 제가 이 컴퓨터를 서버 역할 뿐만 아니라
클라이언트 역할을 할 수 있도록
한번 세팅해 보도록 하겠습니다
perforce P4V를 설치해 보겠습니다
이제 여기는 빠르게 진행해 보겠습니다
Windows, PLATFORM은 64,
VERSION은 EXE 버전으로 하겠습니다
DOWNLOAD, 설치를 해 보겠습니다
이것도 마찬가지로 관리자 권한으로 실행하겠습니다
아까처럼 여러가지가 나왔는데 이번에는
P4V, P4Merge, P4Admin, P4 이렇게 되어 있습니다
P4는 아까 설치되어 있긴 했지만 한 번 더 그냥
덮어서 설치하도록 하겠습니다
저의 UI 쪽을 사용하는 것은 사실상
P4V랑 P4Admin이라고 보시면 되고요
설치 경로는 그대로 해서 진행하도록 하겠습니다
이 Server IP는 아까 제가 기입했던 주소랑
동일하게 기입하시면 됩니다
만약에 나 혼자 쓰는 거면 이런 식으로
포트 넘버만 기입하셔도 됩니다
이 상태로 admin은 그대로 사용하고
Install 진행하겠습니다
네, 설치가 완료되었습니다
Start P4V를 클릭한 상태에서
종료를 하면 바로 실행되게 됩니다
엄청 간단하고 쉽게 되어있죠
제가 만든 서버의 IP를 전 이미 알고 있기 때문에
정확히 기입을 해주시고
User를 만들겠습니다
보통 저는 이제 기본적으로 처음 만드는 계정의 이름은
admin으로 설정을 하고요
저는 제 이름을 넣고
Password는 꼭 입력하지 않아도 되기 때문에
저는 입력하지 않겠습니다
이거를 만약에 입력하면 12시간마다
재입력을 해야 되는 번거로움이 조금 있긴 합니다
혼자 사용하는 경우는 괜찮은데
만약에 제가 가지고 있는 머신을
수많은 사람들이 사용하거나
이 Perforce 시스템 구성을
여러 팀원이 같이 사용했을 때는
관리자가 admin 계정에 대한 비밀번호를
필수적으로 설정을 해줘야 됩니다
그리고 이메일 주소를 입력하고 Save를 누르겠습니다
이제 P4V의 기본 인터페이스를 설명드리겠습니다
먼저 상단 메뉴창부터 보시면 여러가지 주요 메뉴가 있는데요
여기에는 File, Edit, Search 등이 있습니다
먼저 File 메뉴에는 브런치, 라벨 생성,
그리고 작업관련 기능 등을 진행할 수가 있고요
그리고 Edit
작업을 되돌리거나 앞으로 진행할 수 있는 옵션이 있습니다
그리고 Preferences 설정이 포함되어 있습니다
Search 메뉴는 데이터가 많아졌을 때 필터를 걸어
특정 데이터를 검색하고 작업할 수도 있도록 도와줍니다
View 메뉴는 여러 창을 띄울 수 있는 기능이 제공됩니다
자주 사용하는 창으로는 Depot Tree, Workspace Tree,
History, Pending Change List,
Submitted Change List 등이 있습니다
특히 Workspace 창은 항상 열어두는 것이 기본입니다
이렇게 별도의 창으로 화면에 표시됩니다
Action 메뉴에는 파일에 대한
Check Out, 되돌리기와 같은 Workspace 관리 기능과
서버에 있는 파일 제어 등이 있습니다
Connection은 P4V가 한 컴퓨터에서
다수의 연결을 동시에
처리할 수 있도록 도와주는 기능입니다
그리고 Tools이나 Window 메뉴는
나중에 한번씩 살펴보시면 좋을 것 같습니다
화면에 보이는 여러 기능들은
각자 고유한 역할을 가지고 있지만
현재는 활성화된 것이 없습니다
파일이 생성된 후에는 사용할 수가 있습니다
위에는 간단히 말해 자주 사용하는 기능들이
아이콘으로 배치되어 있고요
하단에 보시면
Depot, Workspace 등이 있습니다
오른쪽 패널에서는 파일 내용을 보거나
원하는 정보, Pending 데이터나
Workspace 정보 등을 볼 수 있는 창이 있습니다
이제 추가적으로 저희가 항상 사용하게 될
P4admin이라는 컴포넌트에 대해서 설명해 드리겠습니다
검색을 해서 실행했을 때 마찬가지로
서버와 유저 이름을 기입할 수 있습니다
기입을 하고 실행해 보도록 하겠습니다
기본적인 UI를 설명드리면 여기에 보시면
제가 연결되어 있는 서버들 관련돼서
모든 리스트가 뜨게 될 거고요
Home에서는 기본적으로 제가 사용하게 되는
서버의 정보들을 확인할 수가 있고
Users는 제가 아까 만들었던 유저 정보가 뜨게 됩니다
Permissions는 이제 나중에 Depot을 만들게 되면
Depot에 대한 Access level을 설정할 수가 있습니다
지금 만들어진 Depot이 아예 없기 때문에 이렇게 나오고요
Depot 들어가면 이 Depot 하위에
제가 만든 생성된 Depot들이 나오게 되고요
여기 전반적인 Depot을 삭제하거나
편집하고 관리할 수가 있습니다
그리고 추가적으로 많이 쓰는 것들은 여기에서 New입니다
User를 새로 만들거나 Group을 새로 만들거나
Depot을 새로 만들 수 있습니다
그래서 이제 P4V에서는
Depot과 Workspace 연결을 하는게 가능하지만
Perforce 자체의 Depot을 만드는 것은 불가능합니다
그래서 처음 초반에 작업할 때는
P4admin에서 Depot을 만들어줘야 됩니다
일반적으로 혼자 할 때는 당연히
Depot을 스스로 만들고 사용하겠지만
팀 단위로 진행할 경우는 관리자가 Depot을 만들고
User를 만들고
그 Depot에 대한 Permissions을 관리하면서
전반적인 데이터를 관리한다고 보시면 됩니다
우선 테스트 목적으로 한번 Depot을 만들 텐데요
이 모든 것에 제일 중요한 것은
폴더 네임, Depot 네임 등입니다
글자 하나가 틀리면 진행이 되지 않기 때문에
제가 임의로
perforce_test라는 폴더를 D드라이브 하위에
지금 만든 상태입니다
이제 이거 자체가
Depot 서버 구성에서 해당 부분의 하위에
구축을 할 예정이고요
여기 하위에 있는 폴더를 만들어 보겠습니다
test_folder_depot
폴더명은 이렇게 짓고, 임의로 짓고 폴더명을 복사합니다
admin에서 Depot을 만들어 보겠습니다
방금은 제 로컬 머신에 이제
Depot과 연결할 폴더를 만든 거고요
이제 동일하게 동일한 이름을 가진
Depot을 만들 예정입니다
보시면 이런 식으로 뜨게 되는데
여기에 Depot 타입이 정말 다양하게 있습니다
이제 Depot 타입 같은 경우는 예를 들어서 만약에
꾸러미나 바구니의 성향이라 보면 되는데요
어떤 특성을 가지고 있는 임의의 바구니라 보시면 됩니다
가장 많이 쓰는 것 중 하나는 local과 stream입니다
우선 오늘은 간단하게만 해볼 예정이기 때문에
local로 진행해 보겠습니다
Apply 클릭하시고 OK를 눌러줍니다
이제 이렇게 되면 사실 Depot을 만든 순간부터
admin에 들어올 일은 없습니다
다시 P4V로 가보겠습니다
Refresh를 누르면
제가 방금 만든 Depot을 확인할 수가 있는데
이건 제 서버 내에 있는 Depot이 만들어진 거고요
여기는 제가 아직 Workspace를 할당하지 않았기 때문에
이렇게 빈 칸이 나오게 됩니다
이제 서버에는 Depot이 생성이 되었고
제 로컬에 Workspace 설정을 해야 되는데요
여기에서 New Workspace를 클릭하시면
여기서 이름 및 루트를 설정해 줄 수 있습니다
이름 같은 경우는 정말 다양하게 할 수 있는데
저 같은 경우는 기본적으로
이 컴퓨터의 목적에 따라 설정하게 됩니다
main 또는 render_node_
아니면 뭐 tracking 컴퓨터다 약간 이런 식으로
아니면 Edit 컴퓨터다 이런 식으로
Workspace 이름을 할당을 하거나
아니면 담당자 이름을 토대로 진행합니다
근데 뭐가 되었든 결과적으로 끝에는 언더바를 한 다음에
IP의 끝자리를 입력해주고 있습니다
이래야지 상대방의 IP를
확실히 확인하고 진행할 수가 있고요
Workspace root 같은 경우는 Depot과 연결해서
제 컴퓨터에 있는 서버를 구축하는 건데요
이거는 제가 방금 만든 폴더
이 perforce_test라는 폴더를
최상위로 해서 만들겠습니다
그러면 이제 기본적으로 Workspace Mappings라고 해서
이제 이런 식으로 매핑이 되는데요
이 체크가 되는건 매핑이 되겠습니다
근데 저는 항상 이 모든 걸 끊고 시작합니다 그 이유는
지금이야 만들어진 Depot이 없기 때문에
이렇게 간단하게 나와있지만 Depot이 좀 많을 경우는
전체를 매핑했을 경우
굳이 저희가 필요없는 곳까지 매핑이 되기 때문에
이렇게 삭제를 하게 됩니다
이걸 눌러 삭제를 하시거나 아니면 여기 들어오셔서
전체 삭제를 하시면 매핑이 삭제되게 됩니다
OK 눌러주시고요
이 폴더가 지금 비어있지 않다고 하는데
이거는 No라고 눌러주겠습니다
이제 여기까지 되면 제 Depot과
제 로컬 스페이스가 해당 폴더 이름으로
연결된 걸 알 수 있습니다
보시면
예시로 하나 만들어 보겠습니다
텍스트 파일을 하나 만들고
version1이라는 내용을 기입한 다음에 저장해 보겠습니다
여기 저장을 했을 때 다시 Refresh 누르시면
제 로컬에 파일이 생성된 것을 확인할 수 있습니다
보시면 test1_version_1
근데 아직 되어 있지는 않죠
제 로컬에 추가한다고 하더라도
자동으로 업로드 되는 건 아니고요
이제 이거를 임의로 올려주는 과정이 필요합니다
이 올리는 과정은 한번 시도해 볼 텐데
안 되는 경우를 먼저 보여드릴게요
얘를 추가하고 싶을 때 두 가지 방법 중 하나입니다
Add를 누르거나 우클릭해서 Mark for Add를 누릅니다
지금 누를 경우에 이런 식으로
오류가 나게 됩니다
이걸 해결하기 위해서는
어떤 문제가 발생한 거냐면
얘를 어디 경로로 올릴지에 대한
매핑이 되어있지 않기 때문에 오류가 된 겁니다
이걸 하기 위해서 우클릭
Edit 해서 이제 제가 올리고 싶은 폴더
test_folder_depot을 선택
체크하시면 이런 식으로 매핑이 되게 되고
Apply, OK
이렇게 되면 기본적인 매핑은 된 거고요 다시 한번
Add를 눌러보면 아까와 다르게 이런 식으로
Add가 된 걸 확인할 수 있습니다
이 상태에서 보시면 이런 식으로 연결된 거고요
다만 이 상태에서 감안하셔야 될 게
이 플러스가 있는 상태라고 하면
완벽하게 올라간 상태가 아니고
이것을 올릴 준비를 했다는 표시입니다
최종적으로 올리려면 이 Add를 누른 상태에서
Add가 추가된 상태에서 Submit을 눌러주게 됩니다
Submit을 누르게 되면 이런 식으로
어떤 파일을 Submit 할지
설명드렸던 것처럼 이거는
Change List라는 이름 아래에 묶이게 되는데요
기본적으로 이게 어떤 수정을 했는지 설명을 써줘야 됩니다
이 설명을 쓰는 이유는 이 버전이
이 Change List가 어떤 행위를 했는지
기입을 해놔야 나중에 역으로 옛날 버전을 복원한다든지
확인할 때 정확히 알 수 있습니다
text file
이런 식으로 기입해서 Submit 해보겠습니다
네 이렇게 되면 하단에 Submitted change 1
파일 하나가 추가 되었다는걸 확인할 수가 있고
이 표기가 빨간색 [+]가 아닌
우측 하단에 초록색 점이 생겼고
Depot에도 동일하게 생긴 것을 확인할 수 있습니다
이걸 더블 클릭하게 되면 실행할 수가 있는데
이런 식으로 version1의 텍스트 파일을
확인할 수 있습니다
이제 여기까지가 올리는 과정이고요
만약에 이거를 수정을 한번 해보겠습니다
기본적으로 이 파일은
이 perforce에 엮여있는 파일이기 때문에
속성에 들어가시면 읽기 전용에 체크되어 있습니다
이걸 해제한 상태에서 한번 테스트 해보겠습니다
얘를 version1이 아니라 version2로
내용을 수정했습니다
이 상태에서 저장을 했으면 이런 식으로 되어 있고요
다시 Refresh 눌러보면 이게 흰색에서
파란색으로 변경되었다는 표시가 뜹니다
이 표기의 의미는 이 파일이 기존과 다르게
데이터가 수정되었다는 것을 의미합니다
수정이 되었기 때문에
이걸 다시 올려주는 과정이 필요한데요
이제 수정된 걸 다시 올릴 때는, 버전을 올릴 때는
Checkout을 해야 됩니다
Checkout을 클릭하시고
Submit을 다시 눌러주게 됩니다
이제 description도 다시 써줘야 되는데요
이런 식으로 다시 Submit을 해보겠습니다
이렇게 되면 Submitted change 2가 되었고요
file 하나가 Edit 되었다는 것을 확인할 수 있습니다
이렇게 되면 얘를 다시 서버 실행해봐도
version2라는 걸로 내용이 수정된 걸 확인할 수 있습니다
다만 이제 주의 깊게 보신 분은 아마 아시겠지만
여기서 달라진 게 하나 있는데요
여기 우측에 2/2 이게 달라졌습니다
이게 의미하는 게 뭐냐면
왼쪽은 현재 버전, 오른쪽은 최종 버전입니다
이게 무슨 말이냐면 총 2개의 버전이 있는 파일이고요
이거는 현재 있는 파일은 두 번째 버전이라는 의미입니다
예를 들어서 이 친구를 version1로 돌리고 싶다 하면
우클릭해서 Get Revision을 눌러봤을 때
이런 식으로 특정 버전으로 돌아갈 수 있는게 나옵니다
저는 이거 버전을 1버전으로 돌리고 싶고요
Force Operation을 누르면 강제로 돌리게 됩니다
이렇게 되면 이런 식으로 총 2개의 버전 중
첫 번째 버전으로 돌아간 것을 의미합니다
서버도 마찬가지로 동일하게 적용되고요
이거 다시 클릭했을 때 그 메모장 파일이 version1
아까 맨 처음 만들었던 버전으로 돌아간 걸 알 수 있습니다
이런 식으로 Perforce는
제가 Submit을 하고 Change List를 쌓아간다고 하면
예전 버전으로 돌아가고 관리할 수가
편하게 관리할 수가 있습니다
이 의미는 결과적으로 데이터에 에러가 발생을 했을 때나
옛날 버전 돌아가고 싶을 때
어떤 것보다 쉽게 돌아가거나
다시 되돌아 오거나 이 모든 것을 할 수 있습니다
여기서 만약 최종 버전 다시 돌아가고 싶다 하면
이 친구를 누른 상태에서
Get Latest을 누르시면 바로
맨 마지막 버전으로 돌아오게 됩니다
다시 클릭해 보면 버전이
추가가 된 것을 확인할 수가 있습니다
지금 언리얼을 켜봤는데요
이제 언리얼을 기본적으로 제공하는 프로젝트입니다
이제 이 프로젝트를 Source Control에 연결하면서
버전 관리를 한번 해 보려고 하는데요
현재 제 로컬에는 프로젝트가 존재하지만
아직 Depot에 업로드 된 상태는 아닙니다
앞서 말씀드린 것처럼 Perforce의 기본 작업 방식은
Depot에서 데이터를 받아와 로컬에 수정하고
다시 업로드하는 흐름으로 이루어집니다
그러나 현재 상태에서는 프로젝트가 로컬에만 있고
Depot에는 없기 때문에 수정한 데이터를
업로드할 대상이 없는 상태입니다
따라서 이 프로젝트를 Depot에 올리는 과정이 필요합니다
지금부터 이 프로젝트를 업로드 해 보겠습니다
이제 프로젝트를 업로드 할 텐데
여기서 중요한 핵심 요소를 짚고 넘어가야 합니다
제가 언리얼 엔진을 Perforce와 함께
사용하는 주요 목적 중 하나는
ICVFX 작업을 수행하기 위해서입니다
이를 위해 Config, Content, uproject 3개만
반드시 업로드 하는 것이 가장 중요합니다
반대로 Cache나 Saved와 같은 폴더는
업로드하지 않는 것이 매우 중요합니다
만약 플러그인 폴더나 다른 유용한 폴더가 있다면
그런 폴더는 업로드 하는 것이 맞습니다
P4Admin에서 Depot을 만들어 줘야 됩니다
Depot 이름은 아까 말씀드렸던 것처럼
동일한 로컬과 동일한 폴더 이름으로 해줘야 됩니다
test_ue_project
네, Depot이 생성이 되었고요
다시 Refresh 눌러서 연결되었죠
이 상태에서 다시 Edit
매핑을 해줍니다
Apply, 여기서 항상 보면 이런 식으로
최근 버전을 모든 파일에 대해서
너의 workspace view에 할 건지 물어보는데
항상 Don't를 눌러주셔야 됩니다
이 상태에서 제가 원하는 파일만
선택을 해서 Add을 눌러주시고
총 489개의 파일이
Edit 되었다는 것을 확인한 상태에서
Submit을 눌러줍니다
네, 업로드가 됐습니다
보시면 제 로컬에는 이런 식으로 확인이 되었고
Depot에도 이렇게 업로드 된 것을 확인할 수 있습니다
다시 프로젝트를 실행해 보겠습니다
여기서
네 이제 연결된 것을 확인할 수가 있고요
레벨을 저희가 수정을 한 다음에 Check Out을 하고
이제 이렇게 되면 어떤 게 체크아웃을 한 것인지
확인할 수가 있고요
이제 다 수정을 원하는 것들은 선택하신 다음에
Changelist Description이 뜨게 됩니다
이거는 아까 Perforce에서 Description을 썼던 칸이랑
동일한 목적이라고 보시면 되고요
이런 식으로 설명을 기입한 다음에
Submit을 해주면 됩니다
이렇게 되면 제 로컬에서 맵에서 움직였던 이 친구랑
서버 안에 있는 데이터랑 동일하게
연동된다고 보시면 됩니다
이런 식으로 Submitted changelist 5
이렇게 뜨게 됩니다
여기는 애니메이션을 제가 수정을 한 다음에
여기서 개별로 이 친구는 수정을 하였다고 해서
Check Out을 시킨 다음에
네, 이렇게 Check Out을 하면
Perforce처럼 똑같이 체크가 되면서
이 친구는 수정이 되었다는 걸 표기하는 방법이고요
이 상태에서 업로드를 해보겠습니다
업로드는 Check In 서버에 올리는 과정을 하고요
이런 식으로 서버에 올라가게 되면서
체크되었던 표시가 사라지게 됩니다
이거를 만약에 Perforce에 가서 본다고 하면
Perforce 한번 보겠습니다
방금 제가 언리얼에서 Submit한 Changelist를
여기서 동일하게 확인할 수 있습니다
이거를 좀 더 통으로 오픈해보면
제가 어떠한 파일을 어떻게 수정했는지에 대한
간략한 정보를 볼 수가 있습니다
이런 방식을 통해서 언리얼과 함께
진행한다고 보시면 될 것 같습니다
이렇게 해서 오늘 ICVFX 협업과
버전 관리에 대한 강의를 마무리 하겠습니다
오늘 배운 협업과 버전 관리 방식이
여러분의 프로젝트에 큰 도움이 되기를 바랍니다
프로젝트의 복잡성이 커질수록 이러한 관리가 더 중요합니다
협업할 때 서로의 작업을 안전하게 통합하고
과거 버전으로 쉽게 돌아갈 수 있는 기능들이
큰 역할을 합니다
추가적으로 ICVFX를 하기 위한
랜덤 머신의 기간 데이터 동기화를 위해 필수적입니다
앞으로도 스스로 다양한 실습을 진행하여
적극적으로 활용해 보시길 바랍니다
그럼 이번 시간 학습한 내용을 정리하면서
마무리 하겠습니다, 감사합니다
Perforce 소개 Helix Core Perforce사의 여러 제품 중 버전 관리 기능을 수행하는 소프트웨어 중앙집중식 버전 관리 시스템
Helix Core의 주요 용어 및 개념 Depot: 모든 파일의 원본이 저장되는 중앙 저장소 Workspace: 개인 컴퓨터 내의 작업 공간
Sync: Depot에 저장된 최신 파일을 자신의 워크스페이스에 다운로드하는 작업 Submit: 로컬에서 수정한 파일을 Depot에 업로드해 다른 팀원도
수정 내용을 반영할 수 있게 하는 과정 Change List: Helix Core에서 파일 수정 후 Submit 시 수정 사항이 Change List로 묶여 관리됨
Revision: 파일의 버전을 나타내며 파일 수정 시마다 새로운 리비전이 생성됨
Helix Core의 주요 컴포넌트 P4D (Perforce Depot): 모든 버전과 데이터의 중앙 저장소 역할을 하는 서버를 구축하는 컴포넌트
P4V (Perforce Visual Client): Helix Core 서버에 연결하여 파일을 관리하는 사용자 인터페이스
P4admin (Perforce Administration Tool): Helix Core 서버 관리 도구로, 서버 설정 및 사용자 권한 관리를 담당함
언리얼 엔진 Source Control 프로젝트 종료 후 P4V에서 별도 과정 없이 언리얼 엔진 내에서 바로 Submit할 수 있음
언리얼 엔진 콘텐츠 폴더 내 수정 데이터만 자동 파악해 올리므로 업로드 및 동기화 시간 자체가 혁신적으로 줄어듦
기존 파일에서 수정한 데이터만 자동으로 체크아웃 후 Submit 할 수 있어 효율적임
서버 및 P4V Client 구축 방법 서버 구축 크롬 검색창에 Perforce p4d download 입력 후 Download Helix Core(P4D) Server 선택
Family, Platform 항목 설정하고 다운로드 후 관리자 권한으로 실행 선택 P4ROOT 저장 경로 설정 및 cmd 실행 후 ipconfig 입력
Server에 IP 주소 입력 후 Next > Install 선택
클라이언트 세팅 크롬 검색창에 Perforce p4v download 입력 후 선택
Family, Platform, Version 항목 설정하고 다운로드 후 관리자 권한으로 실행 선택
Server P4D 설치 시 입력한 IP 주소 입력 및 User 옵션 입력 후 저장
P4V 기본 인터페이스 File: 브런치, 라벨 생성, 작업 관련 기능 등 Edit: 작업 되돌리기, 앞으로 진행, Preferences 설정 등
Search: 특정 데이터 검색 및 작업 기능 등 View: 여러 창을 띄울 수 있는 기능 등 Connection: P4V가 다수의 연결을 동시에 처리하도록 도와주는 기능
화면 좌측에 Depot, Workspace 창, 화면 우측에 Files, Pending, Workspaces 창 제시
P4admin 컴포넌트 화면 좌측 Connections 창에 연결된 서버 관련 리스트가 제시됨 Permissions에서 Depot에 대한 Access level을 설정할 수 있음
Depots에서 Depot 삭제, 편집 등을 관리함 File > New 메뉴에서 User, Group, Depot을 새로 생성할 수 있음
서버 및 P4V Client 구축 방법 Depot 생성 perforce_test 폴더 생성 후 하위에 test_folder_depot 생성
File > New > Depot 선택 후 동일한 이름의 test_folder_depot 생성 및 local로 Depot type 설정
로컬 Workspace 설정 Workspace > New Workspace 선택 후 perforce_test 폴더를 최상위 폴더로 지정
test_folder_depot 폴더에 텍스트 파일 생성 Workspaces 패널에서 main_30 마우스 우클릭 후 Edit Workspace 'main_30' 선택
test_folder_depot을 체크해 매핑한 후 Apply함 업로드할 파일 선택 후 Submit를 클릭 Changelist Description 입력 후 Submit 선택
버전 수정 파일 속성에서 읽기 전용 체크를 해제함 텍스트 파일 수정 후 Checkout하고, Changelist Description 기입 후 Submit 선택
프로젝트 업로드 Config, Content, project 3개만 업로드 함 P4admin에서 로컬과 동일한 이름의 Depot 생성
Workspaces 패널에서 main_30 마우스 우클릭 후 Edit Workspace 'main_30' 선택 test_ue_project를 체크해 매핑 후 Apply 선택
원하는 파일만 선택한 후 Add 버튼 클릭 파일 추가 확인 후 Submit 버튼 클릭해 Changelist Description 입력하고 Submit 선택