게임 개발 동아리에서 git 사용하기
버전 관리는 필요합니다. 프로젝트 진행상황을 백업할 수 있습니다. 작업물들을 간단하게 서로 공유할 수 있습니다. 이 두가지 만으로도 충분히 사용하는 의미가 있습니다.
동아리에서 보통 유니티를 사용해서 게임개발을 합니다. 유니티를 사용할 때는 버전관리를 하기 어려운 점이 몇 가지 있습니다. 유니티에서 리소스를 관리할 때 meta 파일을 생성하여 관리합니다. 이 meta파일에는 리소스의 import세팅과 유니티 내부에서 리소스를 지칭하기위해 사용하는 guid가 적힙니다. 이 메타파일이 함께 버전관리가 되지 않는다면 씬이나 프리팹에서 리소스를 찾을 수 없게됩니다. 그리고 씬과 프리팹 파일이 yaml형식으로 저장되는데 사람이 읽기 힘든 상태로 저장됩니다. diff가 매우 꼬인 상태로 나와서 손으로 머지하는 게 사실상 불가능합니다.1
그 이외에도 git이 추구하는 방향과 동아리 게임개발팀에서 필요한 툴이 조금 안 맞는다는 느낌이 듭니다. git에서는 기능별로 로컬에서 작업하고 서버에서 머지하는 방법이 자연스럽습니다. 유니티에서는 씬과 프리팹이 머지가 어렵기 때문에 기능별로 작업하기가 어렵습니다. 대부분 작업 내용을 바로바로 반영하는 방식으로 git을 사용합니다. 하지만 다른 사람과 충돌이났을 때 브랜치간 머지 개념을 잘 알아야 쉽게 해결할 수 있습니다.
그래서 간단한 백업 + 자료 공유로 쓰기에는 불편한 점이 많습니다. 데스위시에서 작업할 때에는 모두에게(기획자와 아티스트 분에게도) Github client를 가르쳐드리고 문제가 생기면 항상 제가 도와드리는 방법으로 프로젝트를 진행했습니다. 보람이 없는 문제에 보람이 없는 해결방법이라고 생각하지만 별다른 방법을 찾지 못했습니다.
최신 유니티 버전에서는 씬을 머지하는 방법이 들어갔다고 합니다. 제가 테스트해본 적이 없어서 얼마나 좋은 지는 모르겠네요. 하지만 파일을 편집기로 봤을 때 제대로 됐는 지 확인하기가 쉽지 않기 때문에 여전히 문제가 있지 않을까 싶습니다. https://docs.unity3d.com/Manual/SmartMerge.html↩︎