게임회사에서 사용하는 버젼 관리 시스템은 주로 다음중 하나를 사용한다.

  1. Subversion
  2. Perforce
  3. Git

일반적으로는 (아직까지는) 무료로는 Subversion을, 유료로 더 빠르고 안정적인 것을 사용하고자 하면 Perforce를 사용하고 있다.

전세계적으로 오픈소스 프로젝트들의 저장소로 GitHub의 인기가 많아지면서, git을 사용하는 프로젝트들이 많은데, 아직까지 (적어도 국내의) 게임회사에서 게임개발용으로는 많이 활성화가 되지 못하고 있는 것 같다.

게임 프로젝트에서 git의 사용이 저조한 이유는 게임의 경우 binary파일의 양이 text보다 많은데,  binary파일의 버젼관리에서 git의 장점을 살릴 수 없고, 단점만 생기기 때문인 것 같다.

사실, 프로그래머로써 많이 사용 해보면 누구나 느끼겠지만, git의 훌륭함에 빠져들 수 밖에 없다.

내가 6년넘게 git을 사용하는 회사에 재직할때의 경험은…

첫번째 프로젝트는 git(소스코드) + Subversion(나머지)을 사용하고 있었고,

두번째 프로젝트는 초기 환경 구성에 관여하였는데, git(소스코드) + Subversion(나머지)을 선택하였다.

세번째 프로젝트에서도 초기 환경 구성을 담당하였는데, 2개의 저장소로 운영한다는 것이 단점도 꽤 많기때문에(버젼일치시키기 곤란 등…) git으로 통일하자라는 프로그래머들의 의견이 있었고, 이 부분에 대해서 고민을 할 수 밖에 없었다.

대부분의 git에 익숙해진 프로그래머들은 좋은점을 잘 알기때문에 개발자(디자이너, 아티스트)는 당연히 공부해서 사용하는게 맞는 방향이 아닌가라는 생각을 가지기 마련이다. 그리고 보통은 현실적으로 어렵다는 결론에 도달하고 비프로그래머를 교육시키기를 포기한다. – git의 특성때문에 일반적인 버젼 관리 시스템(이하 VCS)보다 어려운 점들이 있다.

나도 과거에는 “git이 좋기때문에 개발을 잘 하기 위해서 공부해서 쓰는게 맞지만, 현실적으로 비프로그래머를 적응시키기는 어려운점이 많으니 다른 방법을 생각해보자.”  로 생각했었다. 이건 정말 맞는 생각일까?

지금까지 내린 결론은 “잘못된 생각이였다”이다.(앞으로 무엇인가 또 바뀐다면 생각이 바뀔지는 모르겠다.)

git을 쓰는 최대장점은 쉬운 branch(작업 히스토리)라고 할 수 있는데(git을 익숙하게 활용하면 다른 시스템의 branch는 가짜 같다), branch가 빛을 발휘하기 위해서는 merge가 쉽고 의미있어야 한다. text기반의 소스는 merge라는 과정이 쉬우면서 의미가 있지만, binary 기반의 소스는 무조건 최신파일로 덮어 쓰는 것 밖에 할 수 있는게 없다. binary 작업자의 입장에서 쉬운 branch의 장점을 느낄 수 있을까? 서비스를 하기 위해서 branch가 필요한것은 맞지만, 다른 VCS정도의 branch만으로 충분한 것은 아닐까? 좀 더 발전된 형태의 뭔가가 있지는 않을까 고민해봐야 할 문제이지만, 적어도 text위주의 작업을 하는 프로그래머와는 달리 binary 작업 위주의 아티스트에게 쉬운 branch의 의미는 없을 것이고, git을 훌륭하거나  편리한 도구라고 느낄 이유도 없는 것 아닌가라는 생각이 든다.

다시한번 생각해 보면서… git의 장점은 프로그래머의 입장이 아닐까? 아래링크도 참고해보자.

http://enemyhideout.com/2016/06/why-git-is-not-good-for-games/

https://www.quora.com/Why-isnt-Git-used-by-more-video-game-developers