개발일지

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

타자치는 문돌이 2024. 4. 24. 01:01

결국 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 소프트웨어를 쓰느냐는 크게 중요하지 않다. (중요하지 않다기보다는 네트워크의 오버로드가 너무 크기 때문일 수도 있다)

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