게임을 개발할 때는 실험적인 변경, 수정, 또는 반만 완성된 아이디어가 전체 프로젝트에 즉각적인 영향을 주지 않도록 해야 합니다. 여러 분기를 생성하면 전체 프로젝트 작업 속도를 늦추지 않으면서도, 팀원과 함께 또는 각자 안전하게 작업할 수 있습니다.
분기는 서로 다른 속도와 목적에 따라 진전되는 메인 프로젝트의 평행 버전입니다.
프로젝트의 경우, 동시에 여러 종류의 작업을 지원해야 할 수 있습니다. 분기를 만들고 관리하면 각 작업 흐름을 각 경로에서 독립적으로 진행하고, 준비가 되었을 때만 병합할 수 있어 여러 종류의 작업 지원이 가능해집니다. 팀에서는 다양한 이유로 여러 분기 전략을 사용하지만, 그중 널리 사용되는 방식 하나는 다음과 같습니다.
기본 분기: 프로젝트의 기반 역할을 하는 안정적인 장기 실행 분기입니다.
출시 분기: 특정 출시 버전을 위해 작업을 테스트하고 준비하는 분기입니다.
기능 분기: 기능 작업이 출시 분기 또는
main분기에 통합되기 전에 진행되는 집중 분기입니다.실험 분기: 전체 프로젝트나 다른 분기에 영향을 주지 않고 안전하게 탐색할 수 있는 분기입니다.
기본 분기
main 분기는 다른 모든 분기가 파생되고 다시 병합되는 분기로, 공통적이고 신뢰할 수 있는 기준선이기 때문에 프로젝트에서 가장 안정적인 버전이라 할 수 있습니다.
기본 분기는 다음 목적으로 사용됩니다.
작업이 준비되면 다른 분기를 통합합니다.
플레이테스트를 위한 안정적인 빌드 제작을 위해 반복 작업합니다.
main 분기를 따르는 dev 분기를 생성합니다. dev 분기에서는 main 분기에 병합하기 전 작업 안정성을 테스트할 수 있습니다.
출시 분기
출시 분기는 테스트 또는 출시용 빌드를 준비하는 동안 작업이 차단되는 분기입니다. 출시 분기는 특정 출시 목표나 일정에 맞춰 작업을 체계적으로 관리하기에 좋은 방법입니다.
출시 분기는 다음 목적으로 사용됩니다.
특정 작업물 출시를 위해 기능 사용을 차단합니다.
버그 수정 및 마무리 작업에 집중합니다.
최종 단계에서 발생하는 변경과 무분별한 범위 확장을 방지합니다.
출시 작업을 별도의 분기로 분리하면 특히 개발 후반 단계에서 다음과 같은 이점이 있습니다.
팀에 문제를 일으키지 않고도 실험적인 작업을 계속할 수 있습니다.
지연을 발생시킬 수 있는 전체 프로젝트의 영구 변경을 방지합니다.
팀이 출시 버전에 포함되는 내용을 항상 파악할 수 있습니다.
기능 분기
기능 분기는 출시 또는 기본 분기에 위험을 초래하지 않고 기능 작업을 진행하는 데 사용됩니다. 다른 프로젝트 분기에 영향을 주지 않으면서 팀원들이 자유롭게 변경 작업을 할 수 있는 기능 분기를 여러 개 만들 수 있습니다.
기능 분기는 다음과 같은 특정 작업을 위해 생성됩니다.
신규 게임플레이 시스템을 추가합니다.
UI 흐름을 구축합니다.
맵에 새 섹션을 추가합니다.
기능 분기는 다음과 같은 경우에 유용합니다.
기능 작업을 그룹화하고 검토합니다.
진행 중인 기능 작업과 다른 작업 사이를 전환할 때에도 작업 위치를 유지함으로써, 서로 다른 변경 사항이 혼재되어 현재 워크스페이스가 복잡해지는 것을 방지할 수 있습니다.
다른 방향으로 진행하기로 결정한 경우에도, 해당 기능 분기는 다른 사람에게 영향을 주지 않고 쉽게 폐기할 수 있습니다.
기능 분기는 다른 팀원의 작업이나 진행 중인 작업에 영향을 주지 않고 쉽게 폐기할 수 있습니다.
실험 분기
실험 분기는 다른 팀원의 작업을 방해하지 않고, 새로운 아이디어를 안전하게 탐구할 수 있는 분기입니다. 아이디어를 탐색한 뒤 결과를 비교하고 무엇을 유지할지 결정할 수 있습니다. 아이디어가 잘 작동한다면 변경 사항을 병합할 수 있습니다. 그렇지 않다면 해당 분기를 삭제하거나 폐기할 수 있습니다.
실험 분기는 다음과 같은 방식으로 사용됩니다.
게임플레이 아이디어 프로토타입을 제작합니다.
퍼포먼스 최적화를 시도합니다.
대체 아트 또는 레벨 레이아웃을 살펴봅니다.