분기는 기능에 대한 VCS 지원 (예 : VCS로 쉽게 또는 어려운지 여부)에 따라 다릅니다.
그러나 최소한 독립적으로 지원되는 프로젝트 릴리스마다 분기가 필요합니다. 즉, 동일한 코드베이스에서 빌드 된 별도의 제품인 "Game 2"및 "Game 2 + Expansion"이 있고 업데이트를 패치하고 발행 할 수 있어야하는 경우, 이들 각각을 갖기를 원합니다. 핵심 코드베이스에 대한 수정 사항을 각 제품에 독립적으로 병합 할 수 있도록 기본 코드베이스에서 자체 분기에 존재합니다. (일반적으로 이러한 브랜치는 각 제품이 출시 될 때 또는 초기 릴리스와 함께 나가고 싶지 않은 코드베이스의 작업을하는 사람들이있는 경우 몇 일 / 주 전에 생성됩니다)
분기를 까다 롭거나 고통스럽게 만드는 VCS (SourceSafe, svn 등)를 사용할 때 출시 된 각 제품에 대해 "릴리스"분기를 유지하고 "트렁크"에서 주요 개발을 수행하는 것이 가장 행복 할 것입니다. 해당 릴리스에 대한 핫픽스를 릴리스해야하는 경우 "트렁크"에서 "릴리스"분기로 변경 사항 병합
반면에 분기 및 병합 (git, Bazaar, Mercurial 등)을 중심으로 구축 된 최신 VCS 시스템 중 하나를 사용하는 경우 많은 짧은 기간 동안 개발을 가장 즐겁게 수행 할 수 있습니다. 살아있는 "기능"지점. 예를 들어 AI 길 찾기 작업을하는 경우 "길 찾기"분기를 만들고 코드를 구현할 수 있습니다. 완료하면 해당 분기를 다시 기본 개발 트렁크로 병합하고 선택적으로 작업중인 분기를 삭제합니다.이 방법의 장점은 하나의 작업을 완료 할 필요없이 여러 작업을 동시에 수행 할 수 있다는 것입니다. 다음에 시작하기 전에 작업.
현재 홈 프로젝트 (git 사용)에서 현재 다양한 기능을 수행하는 5 가지 기능 분기가 활성화되어 있습니다. 그중 두 가지는 동일한 프로파일 링 (프로파일 링)에 대한 대체 접근법이고, 두 가지는 실험적인 게임 메카니즘 아이디어이며, 하나는 내 AI 시스템의 큰 리 팩터이며 실제로 코드가 제대로 컴파일되지 않는 방식으로 손상되었습니다. 지금. 그러나 참조 및 백업을 위해 기능 분기에 최선을 다하고 있으며 고장 나더라도 다른 기능에 대한 작업을 중단하지 않습니다. 이러한 다른 기능 분기 (및 주요 개발 트렁크도)는 여전히 올바르게 컴파일 및 실행됩니다.
큰 팀의 전문 게임 개발 경험에서 우리는 여전히 구 버전 (및 상업적으로 지원되는) 버전 제어 시스템을 고수하고 있습니다. Perforce가 가장 일반적으로 사용되며 Subversion이 뒤 따릅니다. 내가 일하는 모든 곳에서 우리는 '트렁크'브랜치와 모든 산출물 (마일스톤 / 데모 / 릴리스 / 등)에 대해 별도의 '릴리스'브랜치를 가졌습니다. 때때로 누군가는 그들이 만들고 테스트하고있는 큰 변화를 위해 개인 브랜치를 만들지 만, 이것은 매우 드물며, 실제로는 "게임을 다른 물리 라이브러리로 실행하도록 변환"과 같은 것들에 해당합니다. 출시 된 제품.