O sistema de controle de versão (VCS) permite que as equipes façam backup e arquivem o código-fonte de seus projetos. Isso torna mais fácil revisar e fazer edições no repositório ou restaurar versões anteriores no caso de um erro de quebra de build.
O controle de versão é o processo sistemático de rastreamento e gerenciamento de atualizações de código-fonte e assets. Os sistemas de controle de versão são fundamentais para fluxos de trabalho eficientes, atuando como a única fonte da verdade para programadores, artistas e outros membros da equipe, permitindo que todos contribuam para uma base de código compartilhada de forma independente. Eles também atuam como uma rede de segurança, possibilitando a ação de “desfazer” atualizações de código se um erro catastrófico for introduzido durante o desenvolvimento.
Os sistemas de controle de versão são um pilar central de DevOps, que permitem que as equipes colaborem e iterem rapidamente no código-fonte de um projeto.
Com acesso a um histórico completo do projeto e a capacidade de desfazer erros, os sistemas de controle de versão simplificam o rastreio de bugs e facilitam a restauração de recursos removidos anteriormente.
A criação de um novo repositório no seu sistema de controle de versão abre a ramificação principal: Isso é chamado de branch principal ou trunk master. O tronco principal é onde a base de código principal entra no pipeline e é então compilada e implantada para o usuário final.
Então o que são ramificações? Ramificação é o processo de bifurcação do código da ramificação principal. Isso permite que os desenvolvedores façam suas próprias alterações pessoais no código sem adicioná-las no código principal. Usar ramificações significa que os desenvolvedores não precisam ter o histórico de arquivos completo em um único servidor; em vez disso, eles podem manter um histórico completo das alterações feitas em seu código ao longo do tempo. O sistema de controle de versão pode então pegar essas ramificações separadas e mesclá-las de volta na ramificação principal. Se um desenvolvedor não estiver pronto para mesclar as ramificações de sua tarefa na principal, ele poderá adicionar suas alterações em uma ramificação separada e mesclá-la na ramificação principal quando quiser.
Uma estratégia de ramificação adequada é crucial para evitar conflitos de código e builds quebradas. Felizmente, bons sistemas de controle de versão permitem que as equipes sincronizem facilmente com a ramificação principal e corrijam possíveis conflitos de código – mesmo após o código ter sido adicionado na ramificação de integração principal.
Os sistemas de controle de versão distribuídos permitem fazer check-in, ramificar e mesclar sem se conectar ao servidor principal. Cada colaborador trabalha em um repositório clonado, armazenado na nuvem. A principal vantagem desses sistemas é que os membros da equipe podem trabalhar separadamente com rapidez, sem se preocupar com redes lentas ou VPNs. Também é possível trabalhar em um projeto offline, mas ainda é necessária uma conexão com a Internet para enviar ou receber atualizações
Os sistemas de controle de versão distribuídos podem vir com longos tempos de espera se você precisar baixar todo o histórico do seu projeto, principalmente em projetos grandes com extensos históricos de alterações. Os estúdios que trabalham com arquivos binários grandes devem monitorar cuidadosamente o uso do armazenamento, pois esses arquivos podem ocupar espaço rapidamente.
Os estúdios que procuram flexibilidade e potencial para aumentar a produtividade devem considerar o controle de versão distribuído.
Os sistemas de controle de versão centralizados usam um fluxo de trabalho de “check-in/envio” para se conectar ao servidor principal. Quaisquer alterações ou atualizações no código-fonte são armazenadas automaticamente no repositório como uma nova versão. Os sistemas de controle de versão centralizados apresentam recursos poderosos de ramificação e mesclagem que não exigem que o repositório seja clonado em várias máquinas. Nesse sentido, é potencialmente mais seguro.
Os sistemas de controle de versão centralizados exigem uma conexão de rede. Como as equipes estão vinculadas a uma única versão do projeto armazenada em um servidor, interrupções no serviço podem causar grandes lentidões. Outra desvantagem do controle de versão centralizado é que ele pode não escalonar bem. Quanto mais desenvolvedores você tiver contribuindo no projeto, menos oportunidades haverá para fazer mudanças em um ambiente estável, o que pode levar a problemas como conflitos de merge.
Se você estiver interessado em sistemas de controle de versão fáceis de configurar e usar, considere um fluxo de trabalho centralizado.
Os sistemas de controle de versão locais são a forma mais simples de controle de versão e são usados mais por desenvolvedores individuais do que por equipes. Com o controle de versão local, todos os dados do projeto são armazenados em um único computador e as alterações feitas nos arquivos do projeto são armazenadas como patches. Cada patch contém apenas as atualizações implementadas desde o patch anterior. Se ocorrer um problema com uma versão específica do seu projeto, você deve examinar toda a coleção de patches para descobrir como os arquivos do projeto estavam em um momento específico para diagnosticar o problema.
Por estarem vinculados a um computador, os sistemas de controle de versão locais são essencialmente menos flexíveis do que os sistemas distribuídos e centralizados. A colaboração entre membros da equipe será um desafio se o banco de dados estiver comprometido, podendo ser difícil — ou até impossível — restaurar as informações perdidas.
Geralmente, não há problema em começar com o controle de versão local, mas assim que você começar a escalar (mesmo que esse aumento seja de uma para duas pessoas), é melhor começar a trabalhar de forma distribuída ou centralizada.
Rastreie facilmente as modificações e mescle em todo o projeto
Permite a comparação de arquivos e identifica as diferenças entre os arquivos
Fácil solução de problemas graças ao arquivo completo de alterações registrado no VCS
O repositório central permite uma colaboração harmoniosa sem prejudicar o desempenho individual ou alterações de código
Libere espaço e tempo compartilhando arquivos facilmente com desenvolvedores e partes interessadas sem precisar salvar constantemente cópias de ajustes de código
O desenvolvimento distribuído permite que os desenvolvedores trabalhem em qualquer lugar conforme sua conveniência
O Agile e DevOps têm os mesmos objetivos: entregar valor ao cliente com cronogramas regulares de lançamento, mas eles diferem ligeiramente em sua abordagem. Veja como eles podem trabalhar juntos.
Todo estúdio de jogos quer acelerar a produção e reduzir crises, e o DevOps é a melhor maneira de fazer isso acontecer. Comece aprendendo os principais princípios por trás de uma metodologia DevOps.
A implementação de práticas de DevOps pode otimizar seu pipeline de desenvolvimento e deixar sua equipe e seus usuários mais felizes. Saiba mais sobre como o DevOps pode te ajudar.
Você deve trabalhar de forma centralizada ou distribuída? Cada abordagem tem suas vantagens e desvantagens. Saiba qual tipo de controle de versão funcionará melhor para sua equipe neste e-book gratuito.
Trabalhe de forma distribuída e centralizada com os sistemas de controle de versão do Unity. Gerencie grandes arquivos binários com fluxos de trabalho baseados em arquivos e alterações. Armazene o código-fonte e os assets e rastreie as alterações com um sistema de controle de versão seguro, criado para qualquer engine.