Ao desenvolver um jogo, é ideal que alterações experimentais, correções ou ideias pela metade não afetem imediatamente o projeto como um todo. Criar várias ramificações permite que você e os outros membros da equipe trabalhem juntos com segurança ou de forma independente, sem desacelerar o progresso geral do projeto.
As ramificações são versões paralelas do projeto principal que avançam em diferentes ritmos e para diferentes finalidades.
Um projeto pode precisar permitir vários tipos de trabalho simultaneamente. Criar e gerenciar ramificações torna isso possível ao permitir que cada tipo de fluxo de trabalho siga seu próprio caminho, e que eles sejam mesclados apenas quando você estiver com tudo pronto. Há diferentes estratégias de ramificação que as equipes usam por diferentes motivos, mas um paradigma comum se baseia no seguinte:
Ramificação principal: uma ramificação estável e de longa duração que serve como base para o projeto.
Ramificação de lançamento: são ramificações em que o trabalho é testado e preparado para um lançamento específico.
Ramificação de funcionalidade: focadas em que o trabalho de uma funcionalidade acontece antes de ser integrado a uma ramificação de lançamento ou à
principal.Ramificação experimental: são ramificações em que a exploração pode ocorrer com segurança sem afetar todo o projeto ou outras ramificações.
Ramificação principal
A ramificação principal é a versão mais estável de um projeto porque é a linha de base compartilhada e confiável da qual todas as outras ramificações se originam e para a qual retornam.
Uma ramificação principal é usada para:
Integrar outra ramificação quando o trabalho estiver pronto; e
Iterar para criar uma compilação estável para os testes de jogabilidade;
Criar uma ramificação de desenvolvimento (dev) que acompanha a ramificação principal. A ramificação de desenvolvimento é onde você pode testar a estabilidade do trabalho antes de mesclar com principal.
Ramificação de lançamento
As ramificações de lançamento são onde o trabalho é bloqueado durante a preparação de uma compilação para testagem ou lançamento. Uma ramificação de lançamento é uma ótima maneira de organizar o trabalho em torno de um objetivo ou cronograma específico.
Uma ramificação de lançamento é usada para:
Congelar funcionalidades para lançar um trabalho específico;
Concentrar-se nas correções de bugs e no refinamento; e
Evitar alterações de última hora e aumento do escopo.
Separar o trabalho de lançamento em uma ramificação própria é especialmente valioso no fim do desenvolvimento porque:
O trabalho experimental pode continuar sem causar problemas para a equipe;
As mudanças não são permanentes no projeto como um todo, o que pode resultar em atrasos; e
A equipe sempre sabe o que vai entrar em um lançamento.
Ramificações de funcionalidade
Uma ramificação de funcionalidade é usada para o trabalho de funcionalidade em andamento sem introduzir riscos às ramificações de lançamento ou principal. Pode haver muitas ramificações de funcionalidade nas quais os outros membros da equipe fazem alterações livremente sem afetar as outras ramificações do projeto.
As ramificações de funcionalidade são criadas para o trabalho em uma tarefa específica, como:
Adicionar um novo sistema de jogabilidade;
Criar um fluxo de interface de usuário; e
Adicionar uma nova seção do mapa.
As ramificações de funcionalidade são úteis para:
Agrupar e revisar o trabalho de funcionalidades;
Alternar entre funcionalidades em andamento e outras tarefas sem perder o fio da meada ou desorganizar seu espaço de trabalho ativo com alterações confusas; e
Se você decidir seguir uma direção diferente, a ramificação de funcionalidade pode ser facilmente abandonada sem afetar ninguém.
As ramificações de funcionalidade podem ser abandonadas facilmente sem afetar outro membro da de equipe ou o trabalho em andamento.
Ramificações experimentais
Uma ramificação experimental é o lugar onde novas ideias são exploradas com segurança, sem interromper o trabalho de outro membro da equipe. Depois de explorar uma ideia, você pode comparar os resultados e decidir o que manter. Se uma ideia funcionar, você pode mesclar as alterações. Se não der certo, a ramificação pode ser excluída ou abandonada.
As ramificações experimentais são usadas das seguintes formas:
Prototipar ideias de jogabilidade;
Testar otimizações de desempenho;
Explorar artes ou layouts de nível alternativos.