8 fatores a serem considerados ao escolher um sistema de controle de versão

FERGUS BAIRD / UNITY TECHNOLOGIESSenior Content Marketing Manager
Sep 23, 2021|10 Min
8 fatores a serem considerados ao escolher um sistema de controle de versão
Esta página da Web foi automaticamente traduzida para sua conveniência. Não podemos garantir a precisão ou a confiabilidade do conteúdo traduzido. Se tiver dúvidas sobre a precisão do conteúdo traduzido, consulte a versão oficial em inglês da página da Web.

Embora a implementação do seu primeiro sistema de controle de versão ou a mudança para um novo sistema possa ser um desafio, o impacto de longo prazo vale a pena. Veja o que considerar ao escolher um sistema de controle de versão, antes de se comprometer.

A criação de jogos é um empreendimento gratificante, embora muitas vezes caótico. Durante o desenvolvimento, muitos membros da equipe com funções distintas e níveis variados de conhecimento técnico trabalham no mesmo projeto, tentando se alinhar em um único processo de produção. Coordenar com mais de uma pessoa ao mesmo tempo pode ser difícil, e esse desafio aumenta exponencialmente à medida que sua equipe cresce.

Quando surgem problemas, o tempo necessário para identificá-los e corrigi-los pode tornar tudo - e todos - mais lento. É aí que reside a importância de escolher o sistema de controle de versão (VCS) certo para os seus objetivos.

Como funciona o Version Control

O Version Control permite manter uma visão panorâmica de todo o seu projeto. Ele traz uma organização fundamental para o seu trabalho, o que permite que a sua equipe faça iterações de forma rápida e eficiente. Mas como?

Os arquivos de projeto são armazenados em um banco de dados compartilhado chamado de repositório ou "repo". O gerenciamento dos arquivos dessa forma solicita que você faça backup do projeto em intervalos regulares e reverta convenientemente para versões anteriores se as coisas não saírem conforme o planejado.

Com um VCS, você pode fazer várias alterações individuais e "confirmá-las" como um único grupo para fornecimento. Isso agrupa o grupo de alterações, de modo que, quando você reverte para uma versão anterior, tudo desse mesmo grupo é desfeito. Na verdade, você pode revisar e modificar cada alteração agrupada em um "commit" ou desfazer o "commit" em sua totalidade. Como você tem acesso ao histórico completo, pode rastrear e eliminar bugs com mais facilidade, além de restaurar os recursos removidos anteriormente.

Além disso, como o controle de versão normalmente é armazenado na nuvem ou em um servidor distribuído, ele oferece suporte à colaboração da sua equipe de desenvolvimento entre fusos horários e regiões geográficas - um benefício cada vez mais importante à medida que o trabalho remoto se torna comum.

Por que migrar para um novo sistema de controle de versão

Mudar de um sistema de controle de versão para outro pode ser exigente, especialmente se isso significar mudar a tecnologia da qual sua equipe depende no meio do projeto. Mas tomar uma decisão informada antes de se comprometer pode certamente valer a pena.

Aqui estão apenas alguns motivos comuns para implementar ou mudar para um novo sistema de controle de versão:

  • Melhoria da colaboração entre as diversas equipes
  • Suporte rápido para o gerenciamento de grandes arquivos binários e ativos
  • Um fluxo de trabalho baseado em arquivos para fazer alterações em arquivos exclusivos sem fazer download de uma compilação de projeto inteira
  • Soluções de ramificação flexíveis e robustas para que seus colegas de equipe trabalhem em paralelo (e não apenas alguns selecionados)
  • Integrações aprimoradas com suas ferramentas de desenvolvimento atuais
  • Segurança mais forte para manter seus projetos protegidos
O que considerar ao tomar sua decisão

Aqui estão oito fatores-chave a serem considerados ao escolher seu próximo sistema de controle de versão:

1. Sua equipe

A implementação ou a mudança para um novo VCS serve principalmente para fortalecer o trabalho em equipe. Seja no local ou remotamente, o controle de versão permitirá que você e seus colegas se coordenem uns com os outros, enquanto trabalham de forma independente. Para atender às necessidades específicas da sua equipe, pergunte a si mesmo: Quantas pessoas usarão esse novo sistema? Qual é o nível de conhecimento técnico deles? O que eles acham de suas opções atuais e o que gostariam de ver em algo novo?

Para aumentar a produtividade, garanta que todos estejam preparados para fazer alterações, sem a necessidade de intervenção técnica. A seleção de um sistema que seja fácil de usar por todos os colegas de equipe, inclusive artistas não técnicos, pode reduzir o custo emocional da mudança para um novo VCS. Menos resistência resulta em uma adoção rápida, seguida de resultados rápidos.

2. Tipos e tamanhos de arquivos

À medida que o setor de jogos se expande, também aumentam as expectativas dos consumidores. Os jogadores sempre esperam gráficos melhores, lançamentos sem bugs, atualizações pós-lançamento e suporte estelar. Para os desenvolvedores, os riscos são altos - e vão aumentar ainda mais.

A crescente complexidade do design de jogos significa trabalhar e gerenciar projetos mais complexos com uma variedade maior de tipos de arquivos, arquivos maiores e repositórios potencialmente enormes. Para estabelecer fluxos de trabalho tranquilos e mesclas rápidas, use um VCS que possa lidar com seus projetos em escala. Lembre-se de que a escolha de um sistema de controle de versão é um jogo longo. Mesmo que sua equipe não esteja lidando com arquivos grandes agora, suas necessidades certamente mudarão com o tempo. Pense no futuro para se preparar para o sucesso duradouro.

3. Facilidade de configuração e manutenção

Esse fator remete ao primeiro item de nossa lista: sua equipe. A sua equipe tem tempo, conhecimento e largura de banda geral para implementar e manter um novo sistema de controle de versão? Com que rapidez a implementação pode ser feita? Haverá suporte contínuo depois que o sistema estiver instalado e funcionando?

Não podemos nos esquecer: Uma configuração mais fácil significa uma configuração mais rápida. E um lançamento oportuno significa dar à sua equipe um prazo maior para se adaptar e começar a trabalhar com mais eficiência. Portanto, se os aspectos técnicos de configuração e manutenção forem uma preocupação, avalie a taxa de sucesso do cliente para os pacotes que você está considerando. Comece lendo as avaliações para ajudar a determinar o melhor VCS possível para seus objetivos.

4. Seus fluxos de trabalho

É fundamental considerar os processos e as ferramentas que sua equipe usa diariamente. A escolha de um sistema de controle de versão que se integre perfeitamente a outras ferramentas necessárias acelera a implementação e minimiza as interrupções.

Outro fator relacionado ao fluxo de trabalho a ser considerado é se o seu sistema de controle de versão oferece suporte à ramificação. A ramificação é quando alguém que está trabalhando em um conjunto específico de arquivos de projeto isola esses arquivos da ramificação principal do projeto, ou "tronco". Isso permite que eles testem as alterações sem afetar o tronco principal. As alterações podem ser mescladas de volta ao tronco principal depois de avaliadas e comprovadamente estáveis.

No desenvolvimento de jogos, você provavelmente precisará facilitar um grande número de ramificações e criá-las rapidamente. Os sistemas baseados em diretórios podem levar a ramificações inadequadas e a conflitos frequentes de mesclagem, pois a sua equipe encontra dificuldades para mesclar de volta ao tronco.

Com a ramificação, você pode priorizar a estabilidade do projeto para que a sua equipe continue trabalhando para atingir as metas compartilhadas, sem afetar o trabalho dos outros.

Janela de plástico

5. O momento da implementação de seu sistema

A implementação de um sistema de controle de versão envolve um rigoroso processo de adaptação. Afinal, essa mudança pode reformular completamente os fluxos de trabalho e as ferramentas existentes.

Programar estrategicamente a implementação do seu VCS pode reduzir o impacto nos projetos atuais e acelerar a adoção de novos sistemas. Dito isso, é ideal implementar o VCS escolhido no início de um novo projeto ou durante a fase pós-morte de um produto que acabou de ser lançado.

É claro que as coisas nem sempre saem de acordo com o planejado. Talvez você se encontre na posição de migrar para um novo sistema de controle de versão no meio de um projeto. Embora isso não seja ideal, não é impossível.

Saiba mais sobre a migração de seus projetos do Unity Collaborate para o Plastic SCM abaixo:

6. O que você gastará (e onde economizará)

Os sistemas de controle de versão estão entre as ferramentas de DevOps mais acessíveis; os verdadeiros custos estão na implementação. Com isso em mente, tente avaliar um sistema quanto aos seus benefícios e como ele pode ajudá-lo a economizar de outras maneiras.

Também vale a pena escolher algo que seja facilmente acessível a toda a sua equipe, independentemente de sua formação técnica. Conforme mencionado anteriormente, todos devem ter a chance de contribuir de forma autônoma. Quando as necessidades de seus colegas de equipe não são atendidas, os custos ocultos podem começar a aparecer.

Se o seu sistema de controle de versão for difícil de entender, por exemplo, você terá que gastar mais tempo ensinando outras pessoas a usá-lo, além de criar uma densa documentação interna sobre as práticas recomendadas de controle de versão. E quando os colegas de equipe não podem trabalhar de forma independente, as frustrações internas podem começar a aumentar. Seja qual for a sua escolha, ela não deve atrapalhar o sucesso geral da sua equipe.

7. Requisitos de segurança

O Version Control não se limita a gerenciar o código-fonte do seu jogo. O sistema que você escolher também armazenará outros ativos, como documentação comercial e de procedimentos, arquivos de design, configurações de ferramentas e assim por diante.

Para manter esses arquivos seguros, seu VCS deve fornecer vários níveis de proteção e permissões. Isso ajudará a proteger seu código e seus ativos de IP contra invasões externas, além de protegê-los contra a possibilidade de vazamentos internos.

8. Nível de flexibilidade

Você consideraria sua equipe grande ou pequena? Você trabalha em um único escritório ou é distribuído? Dependendo desses fatores, você precisará de diferentes níveis de flexibilidade do seu sistema de controle de versão. Além disso, você terá que decidir se vai operar usando fluxos de trabalho centralizados, distribuídos ou em vários locais. Vamos dar uma olhada nas vantagens de cada um.

Fluxos de trabalho centralizados

Um fluxo de trabalho centralizado usa um fluxo de trabalho de check-in/push para se conectar ao seu servidor principal. Sempre que são feitas alterações, elas são armazenadas automaticamente em seu repositório como uma nova versão. Dessa forma, você obtém ramificação e mesclagem eficientes sem clonar o repositório em várias máquinas. É uma solução simples e segura.

Fluxos de trabalho distribuídos

Com um fluxo de trabalho distribuído, você pode fazer check-in, ramificação e mesclagem em seu próprio tempo, sem se conectar ao servidor principal. A vantagem aqui é que os colegas de equipe remotos podem trabalhar separados, com velocidade, sem ter que se preocupar com redes lentas ou VPNs.

Fluxos de trabalho em vários sites

O Multisite é como uma mistura de fluxos de trabalho centralizados e distribuídos. Em cada local, os colegas de equipe trabalham em uma espécie de mini fluxo de trabalho centralizado, no qual compartilham suas ramificações e o progresso, mesclando facilmente, empurrando e puxando entre a equipe, até que finalmente empurram para o servidor principal, em seu próprio tempo.

Os fluxos de trabalho em vários locais são ideais para equipes que trabalham em uma base de código compartilhada em diferentes cidades ou continentes. Nessa situação, você deve estabelecer um servidor host em cada local de trabalho e, em seguida, copiar as alterações entre esses servidores. Se não o fizer, as equipes que trabalham em sites sem servidores terão respostas mais lentas do que as outras.

Principais sistemas de controle de versão

Agora que você tem uma ideia do que está em jogo ao escolher um sistema de controle de versão, é hora de avaliar algumas das opções mais populares existentes.

Git

De código aberto, gratuito e fácil de usar, o Git é um dos sistemas de controle de versão mais populares do mercado. Ele apresenta repositórios distribuídos e fortes recursos de ramificação e mesclagem, mas não consegue lidar com arquivos binários grandes com a mesma eficiência de outras soluções no mercado.

Perforce (Helix Core)

O Helix Core é um sistema de controle de versão de nível empresarial usado por estúdios de jogos como a EA e a Ubisoft. Esse VCS apresenta repositórios centralizados e lida com arquivos binários grandes. No entanto, ele não apresenta repositórios visuais, portanto, sua adoção pode ser mais desafiadora para desenvolvedores não técnicos.

Apache Subversion

Assim como o Git, o Apache Subversion é um sistema de controle de versão gratuito e de código aberto. Ele apresenta repositórios centralizados e pode lidar com arquivos binários grandes, mas é necessário estar conectado ao servidor principal para usá-lo, o que não é ideal para trabalhar off-line e pode ser um obstáculo para equipes maiores ou distribuídas.

Plastic SCM

O Plastic SCM é um sistema de controle de versão flexível que oferece suporte a programadores e artistas. Ele é excelente para lidar com grandes repositórios e arquivos binários e, como uma solução baseada em arquivos e em conjuntos de alterações, oferece a capacidade de baixar apenas os arquivos específicos nos quais você está trabalhando, em vez de toda a compilação do projeto.

Além disso, o Plastic SCM é o único sistema de controle de versão no mercado que apresenta ramificação visual. Ele pode lidar com milhares de filiais ao mesmo tempo e não obriga você a escolher entre fluxos de trabalho centralizados ou distribuídos.

Quer saber o que mais a Unity pode fazer por você? Descubra as soluções da Unity para superar os desafios em cada estágio de desenvolvimento, da grande ideia ao grande sucesso.