💭 언리얼5로 진행하는 팀프로젝트에서 협업 툴로 조교님께서 추천해주신 'perforce'를 사용하기로 했다.
그런데 설치부터 한참을 헤맸다... 한글 자료 너무 없어😭
언리얼 공식 문서에 자세히 나와있긴 하지만 정작 설치에 관한 내용이 없다...그래서 '스스로 정리 + 정보 전달' 목적으로 작성하는 포스팅!
(정보가 정확하지 않을 수 있습니다...!)
중앙집중형 서버
서버 컴퓨터는 항상 켜져있어야 할 필요가 있다.
📌 추가
나는 서버 컴퓨터를 365일 24시간 켜놔야 한다는 의미로 이해했었는데, 나중에 알고보니 서버를 사용할 때만 켜져 있으면 되는 것 같다.
💭 현실적으로 우리 조원의 데스크탑이나 노트북을 24시간 켜놓는 것은 불가능하고, 마땅한 컴퓨터도 없었기 때문에 외부 서버를 구매해서 사용하기로 결정했다.
서버는 선배님께서 AWS EC2를 프리티어(1년동안 일정 사용량 무료 제공)로 사용하고 총 300원 나왔다는 얘기를 보고, 우리도 AWS EC2를 사용하기로 했다.
로컬
리모트
기본적으로 유료지만, 5인까지는 무료라고 한다.
📌 그런데 사실 어떤 부분에서 유료인지는 잘 모르겠다... 일단 기본적인 다운로드는 무료이다. 우리 팀은 4인 1조였지만, 중간에 오류로 인해 또는 다른 컴퓨터 장치를 사용하는 과정에서 5인이 초과되었던 것 같은데 추가적인 비용이 발생하지는 않았다. 외부 서버를 이용해서 였을까...? 아니면 워크스페이스만 초과되고, 사용자는 초과되지 않았는데 내가 잘못 기억하고 있을 수도...
(https://www.youtube.com/watch?v=7eVO0qXC3nk)
💭 나처럼 하나의 컴퓨터에서 작업하고 AWS 서버도 연결하려면 세 개 모두 설치하는 게 맞다. (참고로 외부 서버를 사용하든 아니든, P4D를 설치할 컴퓨터는 팀원 중 하나면 된다. 나는 내 컴퓨터에서 퍼포스 서버를 열거라 모두 설치한 거고, 만약 팀원 중 한 명이 서버를 열었다면 다른 팀원들은 클라이언트용만 설치하면 된다.)
putty
를 입력했을 때, putty가 실행된다. 아마존 계정 가입이 필요하고, 제한된 자원 내에서 무료로 이용하고 싶을 경우 요금제는 프리티어로 가입해야 한다.
인스턴스 시작
📌 단, 리소스가 리전별로 표시되는 것에 주의!!
나는 처음에는 도쿄에 만들었다가, 보안 그룹 설정에 문제가 있어서 버지니아에 새로 만들었는데, 알고보니 이전의 도쿄가 계속 돌아가고 있어서 요금 폭탄 맞았다...~ 다들 꼭 비용 관리를 자주 확인하시길...^^
설정
📌 당시의 나는 IPV4와 IPV6의 차이를 몰라서 둘 다 설정했다. 일반적으로는 IPV4로만 설정해도 문제 없을 것이다.
📌 보안 그룹을 꼭!! 제대로 설정해야 한다!!
그렇지 않을 경우 마지막에 아래 사진과 같은 포트 관련 에러가 발생할 수 있다.
어떻게 알았냐면요 저도 알고싶지 않았습니다.....check $P4PORT
라는 오류가 발생했다면 보안 그룹과 방화벽을 제대로 설정했는지 다시 확인하자!
(근데 지금 와서 생각한거지만... 위처럼 모든 곳에서 접근 가능하게 설정하면 보안 문제가 있다. 만약 보안이 중요하다면 팀원들이 사용하는 컴퓨터 IP 주소만으로 설정하는게 좋을 것 같다. 물론 사용하는 컴퓨터가 변경될 때마다 보안 그룹 규칙을 수정해줘야 하는 번거로움이 있지만, 아마존 서버를 해킹해서 불법으로 이용하는 사람들도 있다고 하니까... 다행히 우리는 그런 일은 없었다.)
나머진 기본 설정값 그대로 인스턴스 생성
성공😊
동영상에선 나중에(13:10) 나오는데 미리 설정해야 나중에 'sever ID를 찾을 수 없다'는 오류가 나지 않는다.
Sever엔 EC2 퍼블릭 DNS:1666
입력하고 user와 workspace 생성
💭 이때
check $P4PORT 1666 failed
는 EC2 인스턴스 생성시 보안 규칙 설정이 잘못됐거나, 컴퓨터(윈도우나 mcafee 등등)에서 퍼포스 서버가 접속하는 방화벽을 차단해서 발생하는 오류이다.
📌 사실 지금은 잘 기억나지 않는데 여기서 시행 착오가 엄청 많았던 것 같다. 잘 안돼서 허용되는 앱에 퍼포스 관련 앱을 모두 추가했었고, 인바운드와 아웃바운드 규칙에 포트 번호 22와 1666에 대해 모든 연결을 허용했었다. 마찬가지로 보안은 꽝이었겠지만... 잘 몰라서 그냥 다 했다 ㅎㅎ...
💭 이때 p4d 다운로드 파일인
helix-core-server.tgz
의 압축을 꼭!!!! 먼저 풀고 진행해야 한다! 나는 그냥 유튜브는 4년 전 영상이니까 파일명이 바뀐지 알고p4d
대신 다helix-core-server.tgz
입력했다가 마지막에 바이너리 파일로 변환할 수 없다는 에러 뜨고 태초마을 다녀왔다 🥲
📌 이때 지쳐서 여기서부턴 좀 대충 썼던 것 같다 ㅎ... 동영상 참고해주시고 만약 의문 사항 있으시면 물어보셔도 됩니당
(그리고 사진에서 서버가ec2-54~
랑ec2~107~
두 개가 있는데 이건 내가 한 번 태초마을 다녀오면서 사진들이 섞여서 그런 거다... 각자 DNS 서버로 진행하면 된다.)
💭 8시간 정도 걸렸다. 그치만 내가 무지해서 그런 거일듯...
📌 중간에 프로젝트에 문제가 생겨서 서버를 새로 파야했던 일이 있었는데, 다시 할 때는 2시간도 안 걸렸었다! 그 2시간도 이전 파일과 아마존 계정을 완전히 삭제하느라 조금 오래 걸렸다.
참고로 우리 팀 프로젝트에 생겼던 문제는 나도 정확히는 모르지만, 언리얼 내에서 파일들을 막 삭제하다가 레퍼런스가 꼬여서 발생했던 것 같다. 그래서 수정한 파일들을 서밋하는데 몇십 기가가 전송되구 ㅋㅋ... 남은 용량이 20KB도 안돼서 리버트도 안되고 딜리트도 안되고 워크스페이스 삭제도 안되고 접속조차 잘 안되고 그냥 난리가 났었다. 😭😭
만약 언리얼에서 파일들을 삭제할 때 '~ 아직 메모리에 참조되어 있습니다.'가 뜬다면 절대로 강제 삭제를 하지 말고!! 차근차근 순서대로 삭제해서 메모리 참조를 하나씩 해제해주도록 하자! 그래도 메모리 참조가 풀리지 않는 경우 '폴더의 리디렉터'고치기를 하거나, 조금 기다리거나, 언리얼을 껐다 키면 대부분 해결된다. 레퍼런스가 정상 작동하지 않을 경우 퍼포스 뿐만이 아니라 다른 문제가 발생할 수도 있으니 주의하자...!
📌 그리고 혹시 우리처럼 중간에 프로젝트나 서버에 문제가 생겨서 소스 컨트롤 서버를 변경한다면, 소스 컨트롤 로그인시 항상 이전 서버가 기본으로 설정되어 있을 수 있다. 그런 경우
SourceControlSettings 파일
(프로젝트 폴더 > saved > config > windowsEditor > SourceControlSettings)을 변경하거나, 아예 삭제하면 된다.
참고로 소스 컨트롤 세팅이 잘못되어있으면 빌드가 안된다. 우리 조는 이 문제를 최종 발표 전날 빌드가 안돼서 몇 시간 동안 고생하다가 알게 되었다. 그리고 파일들을 하나하나 읽어가며 찾았다 ^^...
📌 사실 사용법 적기 귀찮아서 링크로 때우는 건 사실 맞다 ㅎㅎ...
그치만 만약 링크를 읽어도 잘 모르겠어서 추가적인 포스팅을 원하시는 분이 있다면 적는 걸 생각해 보겠습니다😊
Workspace
는 사용자당 1개 이상 가질 수 있는 로컬 경로이고, depot
은 모든 사용자가 공유하는 서버이다.Submit
은 로컬에서 변경한 내용을 서버에 올리는 것이고 (깃의 Push
), Get Latest
는 다른 사용자가 변경하고 서버에 올린 파일들을 받아오는 것이다. (깃의 Pull
)Pending
에서 Submit
을 할 수 있는데, 변경 사항이 있는 경우 default
옆의 삼각형이 빨갛게 변하는데 우클릭해서 설명쓰고 서밋하면 된다. 이때 파일들을 확인하는 것이 좋다. 서밋하기 전에 Revert Unchanged Files
를 해주면 더 좋다. 변경 사항들은 History
에서 확인할 수 있다.📌 퍼포스가 처음에는 엄청 어려웠고, "이걸 굳이 왜 써야 하나, 그냥 깃허브를 쓰면 안되나?"라는 생각도 많이 들었는데, 적응하고 나니 별로 어렵지 않았다. (근데 사실 '스트림'은 아직 잘 모른다 우린 그냥 디폿 하나만 썼다ㅎ)
그리고 처음에는 딱히 쓸모 없다고 생각했던 체크아웃/체크인 기능은 정말 신이었다!!!🥹 다른 수업에서 진행하는 유니티 프로젝트는 깃허브로 진행했었는데, 맨날 씬 충돌나서 아예 리버트하거나 머지 컨플릭트하고 있는데 퍼포스에서는 그런 게 없어서 너무너무 좋았다. 언리얼 에디터 내에서 특정 파일만 체크아웃/체크인하고, 서밋하거나 풀 할 수 있는 것도 편리했다! 그 외에도 여러 좋은 기능들이 있다~
다만 단점은 소스 컨트롤에 연결한 채로 작업하면 렉이 너무 심했다... 내 노트북 문제일 수도 있긴 한데 여러 명이 동시에 작업하면 렉이 더욱 심했었다. 그래서 나는 항상 '먼저 서버의 변경 사항 받음 → 내가 작업할 파일들 다 체크아웃 → 소스 컨트롤 연결 해제 → 작업 완료 → 소스 컨트롤 연결 → 서밋' 순으로 진행했다.
또 다른 단점에는 사용법이 어렵다 보니 오류 해결이 어려울 수 있고, 체크아웃한 사람이 체크인해주기 전까지는 해당 파일을 수정할 수 없다는 문제가 있다. (그래도super
사용자는 체크아웃을 강제 해제할 수 있으니 해당 문제가 발생했다면 관련해서 찾아보길 추천한다.)결론은 처음엔 조금 어렵고 복잡하겠지만, 전체적으론 좋은 경험이었다고 생각한다! 서버를 연결하는 과정도 처음에는 아예 몰라서 끙끙댔지만 컴퓨터 네트워크 수업을 들으면서 하나씩 이해돼서 신기했다 ㅎㅎ 혹시 이 글을 보시는 경희대 후배님들이 있으시다면 겜엔기 수업에서 퍼포스 서버를 이용해보는 걸 추천합니당. 파이팅🤗
헉! 이런 꿀팁이~