Sự phân nhánh phụ thuộc một chút vào sự hỗ trợ của VCS cho tính năng này (tức là: liệu VCS làm cho nó dễ hay khó).
Nhưng ở mức tối thiểu, bạn muốn có một nhánh cho mỗi bản phát hành được hỗ trợ độc lập cho dự án của bạn. Đó là, nếu bạn có "Trò chơi 2" và "Mở rộng trò chơi 2 +" là các sản phẩm riêng biệt được xây dựng từ cùng một cơ sở mã, và bạn cần có thể vá và phát hành các bản cập nhật, thì bạn muốn có mỗi tồn tại trong nhánh riêng của họ khỏi cơ sở mã chính, do đó, việc sửa lỗi cho cơ sở mã lõi có thể được hợp nhất vào từng sản phẩm này một cách độc lập. (Thông thường, các nhánh này được tạo khi mỗi sản phẩm được phát hành, hoặc có thể vài ngày / tuần trước, nếu bạn có người làm việc với các thứ trong cơ sở mã mà bạn không muốn ra ngoài với bản phát hành ban đầu)
Khi làm việc với một VCS khiến việc sử dụng các nhánh trở nên khó khăn hoặc đau đớn (SourceSafe, svn, v.v.), thì có lẽ bạn sẽ hạnh phúc nhất khi duy trì một nhánh "phát hành" cho mỗi sản phẩm được phát hành và thực hiện phát triển chính của bạn trong "thân cây", hợp nhất các thay đổi từ "thân cây" vào các nhánh "phát hành" nếu và khi bạn cần phát hành hotfix cho các bản phát hành đó.
Mặt khác, nếu bạn đang làm việc với một trong những hệ thống VCS mới hơn được xây dựng xung quanh việc phân nhánh và hợp nhất (git, Bazaar, Mercurial, v.v.), thì có lẽ bạn sẽ hạnh phúc nhất khi phát triển trong thời gian ngắn chi nhánh "sống". Ví dụ: nếu bạn đang làm việc trên đường dẫn AI, bạn có thể tạo một nhánh "tìm đường" và triển khai mã trong đó. Khi bạn hoàn thành, bạn hợp nhất nhánh đó trở lại vào nhánh phát triển chính của bạn và (tùy chọn) xóa nhánh bạn đang làm việc. Lợi ích của phương pháp này là cho phép bạn làm việc trên nhiều nhiệm vụ cùng lúc, thay vì phải hoàn thành một nhiệm vụ nhiệm vụ trước khi bắt đầu vào việc tiếp theo.
Trong dự án nhà hiện tại của tôi (sử dụng git), tôi có năm nhánh tính năng khác nhau đang hoạt động, hoạt động trên nhiều tính năng khác nhau. Hai trong số chúng là các cách tiếp cận thay thế để làm điều tương tự (để định hình), hai là các ý tưởng cơ học trò chơi thử nghiệm và một là một công cụ tái cấu trúc lớn cho các hệ thống AI của tôi và thực sự bị phá vỡ theo cách mà mã không được biên dịch đúng hiện nay. Nhưng nó được cam kết trong nhánh tính năng của nó để tham khảo và sao lưu, và nó bị hỏng không ngăn tôi làm việc với các tính năng khác; Các nhánh tính năng khác (và cả thân phát triển chính) vẫn biên dịch và chạy chính xác.
Theo kinh nghiệm của tôi về phát triển trò chơi chuyên nghiệp đội lớn, chúng tôi vẫn chủ yếu bị mắc kẹt với các hệ thống kiểm soát phiên bản cũ hơn (và được hỗ trợ thương mại). Perforce có lẽ được sử dụng phổ biến nhất, tiếp theo là Subversion. Ở mọi nơi tôi đã làm việc, chúng tôi đã có một chi nhánh 'thân cây', và sau đó là một chi nhánh 'phát hành' riêng biệt cho mỗi lần giao hàng (cột mốc / bản demo / phát hành / vv). Thỉnh thoảng ai đó sẽ tạo một nhánh cá nhân cho một số thay đổi lớn mà họ đang thực hiện hoặc thử nghiệm, nhưng điều này cực kỳ hiếm và thường dành cho những việc như "chuyển đổi trò chơi để chạy với thư viện vật lý khác nhau" này có thể không thực sự chuyển sang phát hành sản phẩm.