Game Development/Unreal Engine

[UE5] Revision Control - Git

Dlaiml 2024. 5. 15. 08:04

최근 진행하던 프로젝트에서 원활한 협업을 위해 버전관리의 필요성을 느껴 SVN을 사용하려다 Unreal Engine에서 제공하는 Blueprint diff 시각화기능이 있어 대신 Git을 사용하여 버전관리를 시작하였다. 

 

Prerequisite

- 언리얼 엔진

- Git 

- Github account

- Github Desktop (CLI로 Git 사용이 익숙지 않다면 추천)

 

Git revision control on UE5

언리얼 엔진에서 Revision Control 기능을 사용하여 Git을 Init할 경우 gitignore에 기본적으로 Saved, DerivedDataCache, Intermediate 등 빌드를 위한 파일이나 Save 파일이 추가되어 Git 관리에서 제외된다.

 

이를 제외하고도 마켓플레이스에서 다운받은 프로젝트에 추가된 용량이 큰 폴더를 버전관리에서 제외시키기 위해 gitignore 파일을 우선 만들고 언리얼 엔진에서 Git init을 하려 한다.

 

https://github.com/github/gitignore/blob/main/UnrealEngine.gitignore

 

gitignore/UnrealEngine.gitignore at main · github/gitignore

A collection of useful .gitignore templates. Contribute to github/gitignore development by creating an account on GitHub.

github.com

 

언리얼엔진을 위한 gitignore 파일을 다운로드하고 추가로 제외할 폴더를 명시하였다.

 

# .gitignore 

# ArenaBattle2: Exclude Large size Asset files
Content/InfinityBladeGrassLands/*
Content/InfinityBladeWarriors/*
Content/InfinityBladeWeapons/*

.vsconfig
__ExternalActors__/*
__ExternalObjects__/*
*.htm
*.sln

 

위 내용을 추가한 파일을 프로젝트 root 폴더에 옮긴 후 언리얼엔진 에디터에서 이어서 세팅한다.

 

Git을 처음 설치하였다면 아래와 같이 user email, name 세팅이 필요하다.

> git config --global user.email "<이메일>"
> git config --global user.name "<유저이름>"

 

 

우측 하단 Revision Control에서 Connect to Revision Control을 눌러 Provider를 Git으로 설정한다.

 

 

Git Path의 경우 git.exe의 경로를 입력하면 된다.

remote server URL의 경우 아직 remote respository를 만들지 않았기에 공란으로 둔다.

.gitignore 파일은 직접 만든 파일을 사용하기 때문에 체크를 해제한다

용량이 큰 애셋들은 버전관리에서 제외하였기 때문에 Git LFS를 사용하지 않는다.

 

Initial project with Git을 클릭하여 initialize 한다.

 

Adding이 완료되었다면 Accept Settings 버튼을 눌러 초기화를 마친다.

 

Github에서 repository를 만든다.

README와 gitignore는 이미 local에 세팅되어 있기 때문에 생성할 필요가 없다.

 

생성이 완료되면 local, remote repo를 연결하기 위해 프로젝트 root 폴더에서 git remote add origin을 사용한다.

>git remote add origin git@github.com:yjunej/ArenaBattle2.git

 

 

지금까지 설명한 Git 세팅은 일반적인 Git 세팅과 다를 바 없다.

Unreal Engine에서 제공하는 주요 기능은 바로 Blueprint에서 Diff와 기록을 보여주는 것이다.

 

BP_ThirdPersonCharacter 블루프린트에 노드를 하나 추가하였다.

Revision Control에서 Submit Content를 누르면 아래와 같이 Tracking 되고 있는 파일 중  Diff가 생긴 파일을 Git이 알려준다

 

 

파일을 더블클릭하면 git diff 명령어로는 볼 수 없는 Binary file(uasset)의 diff를 항목별로 언리얼엔진에서 알려준다!

 

Git status로 확인해 보니 Submit을 누르면 add와 commit이 이루어지는 것으로 보인다.

git push origin master를 사용하여 remote로 push 할 수 있다.

 

 

블루프린트를 사용한 개발이 많아 Git으로 Diff를 코드처럼 line by line으로 볼 수 없을 것 같아 버전관리 provider로 사용하지 않고 대신 SVN을 사용할 계획이었는데 언리얼엔진 내부에 (아직은 Beta) 블루프린트 노드의 이동, 이름변경, 생성 등 History와 Diff 를 시각적으로 잘 보여주는 기능이 있어 Git으로 이번 프로젝트의 버전관리를 하기로 결정하였다.

 

아쉽게도 언리얼엔진 에디터에서는 블루프린트의 Diff를 보여주지만 나머지 Git의 필수적인 기능(merge, checkout, add, rebase)을 제공하지 않는 것 같아 나머지는 CLI or Github Desktop을 사용하고 있다.

 

* 에디터를 끄지 않고 Git을 통해 파일변경이 있을 때 문제가 발생하는 경우가 꽤 있다 (merge, pull 할 때는 에디터를 끄는 것이 좋아 보인다)