개발일지

Log 3 - 언리얼 협업은 어떻게 해야 할까 III

타자치는 문돌이

결국 1안은 해외 서버의 한계로 폐지됐다. 2안으로 넘어가자.


2안

고정된 에셋은 Google Drive에, 코드, 블루프린트, 기타 생성물은 Github를 통해 공유한다.

여기서 고정된 에셋은 어떤 것이 있을까?

  • Source : 항상 바뀌고, 계속 추가된다.
  • Content
    • map : 자주 바뀐다.
    • Skeletal Mesh : 캐릭터 스켈레탈 메시는 소켓을 추가하는 등의 작업에서 변경된다.
    • Static Mesh : 수정할 일이 없......을걸요?
    • Rig : 양이 적지만 직접 생성하는 경우가 많고 수정할 일은 적을 것 같다.
    • Material : 거의 수정할 일이 없다.
    • Texture : 수정할 일이 없다.
    • Animation : 가끔 수정할 것 같다.
    • Sound : 수정할 일이 없다.

그러면 Static Mesh, Material, Texture, Sound 정도는 따로 보관할 수 있을 것 같다.
이건 유효할까?

Paragon의 Phase 에셋을 기준으로 대략적인 크기를 비교해 보면,

  • Sound : 120mb
  • Texture : 70mb
  • Mesh : 60mb
  • Animation : 30mb
  • Material : 5mb
    정도로 캐릭터 에셋 기준으로는 절반 이상의 용량이 줄어들 것이다.

Gitlab 설치하기

고심 끝에 Perforce 대신 Gitlab을 쓰기로 했다.

Commit을 삭제 못 한다는 것에서 큰 충격을 받았다.

Download and install GitLab | GitLab

위의 설명서를 차차 따라 하면 쉽게 설치할 수 있다.

SSH로 Vultr 서버에 접속한 다음,
먼저 의존성 설치를 하고

sudo apt-get update
sudo apt-get install -y curl openssh-server ca-certificates tzdata perl

Gitlab-CE를 다운받는다.

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash

일단은 EXTERNAL_URL을 https://gitlab.example.com으로 설정하고 설치한다. (바로 수정할 예정)

sudo EXTERNAL_URL="https://gitlab.example.com" apt-get install gitlab-ce

Gitlab 설정 파일로 들어가 주소를 수정할 것이다.

sudo vim /etc/gitlab/gitlab.rb

긴 주석이 가득한 문자가 나오는데

external_url 'https://example.gitlab.com'

external_url 'http://localhost:8000'

로 수정했다. localhostIP주소http를 사용해야 한다.
수정을 적용한다.

sudo gitlab-ctl reconfigure

sudo gitlab-ctl start

설치가 잘 됐다면 주소창에
http://서버IP:8000를 입력해 Gitlab 웹으로 접속할 수 있다.


ID는 root, 비밀번호는 /etc/gitlab/initial_root_password에 저장되어 있다.
24시간 후에 비밀번호가 만료되니 접속해서 바꿔준다.

User 탭에서 사용자를 추가할 수 있다.


사용자를 추가하고 Edit에 들어가 임시 비밀번호를 설정해 주면,
사용자는 http://서버IP:8000로 접속해 로그인할 수 있다.

이제부터는 Github와 똑같다!


.gitignore로 Sound, Texture, Material, SMMesh (폴더 생성해서 넣을 예정) 폴더를 추가해 줬다.

textures/**
Textures/**


Sounds/**
sounds/**

Materials/**
materials/**

SMMesh/**

결과

기본 프로젝트를 연결하고 Starter Content를 제외한 뒤 push를 했는데
순식간에 업로드가 끝났다.

에셋을 저장할 구글 드라이브도 준비를 끝냈다.


결론

언리얼에서 협업이 힘든 이유는 언리얼 에셋들의 크기가 크지만, 우리가 주로 사용하는 SCM의 서버 네트워크가 크기를 감당하기 힘들어서이다.
더 빠른 네트워크가 보장되지 않는다면 어떤 SCM 소프트웨어를 쓰느냐는 크게 중요하지 않다. (중요하지 않다기보다는 네트워크의 오버로드가 너무 크기 때문일 수도 있다)

이제 진짜 시작해야지...