Controle de versão para desenvolvimento de jogos - problemas e soluções? [fechadas]

106

Existem muitos sistemas de controle de versão disponíveis, incluindo os de código aberto, como Subversion , Git e Mercurial , além de sistemas comerciais, como o Perforce .

Quão bem eles apóiam o processo de desenvolvimento de jogos? Quais são os problemas com o VCS, no que diz respeito a arquivos não-texto (arquivos binários), grandes projetos, etc. Quais são as soluções para esses problemas, se houver?

Para organização das respostas, vamos tentar por pacote. Atualize cada pacote / resposta com seus resultados.

Além disso, liste alguns breves detalhes em sua resposta, sobre se o seu VCS é gratuito ou comercial, distribuído versus centralizado etc.

Atualização : Encontrei um bom artigo comparando dois dos VCS abaixo - aparentemente, Git é MacGyver e Mercurial é Bond . Bem, estou feliz que esteja resolvido ... E o autor fez uma bela citação no final:

Não há problema em fazer proselitismo para aqueles que ainda não mudaram para um VCS distribuído, mas tentar converter um usuário do Git para Mercurial (ou vice-versa) é um desperdício de tempo e energia de todos.

Especialmente porque o verdadeiro inimigo de Git e Mercurial é o Subversion . Dang, é um mundo de código-comer-código lá fora, na terra FOSS ...

Ciclope
fonte
Nota - isso pretende substituir a pergunta gamedev.stackexchange.com/questions/245/… . Em 72 horas, vou excluir essa pergunta - deixo por enquanto, para que as pessoas tenham tempo de copiar suas respostas / comentários para esta pergunta. :)
Ciclope
Provavelmente, essa será uma das minhas perguntas favoritas, se as pessoas seguirem as instruções de edição. Trabalhando em uma solução específica para desenvolvedores de jogos para isso agora: D
Jesse Dorsey
@ Noctrine, você tinha que adicionar o aviso , se não tinha? :) Of course as pessoas vão seguir as instruções ...
Cyclops
Não exclua a outra pergunta. Se estiver realmente fora de tópico (acho que não), pode ser fechado e arquivado. Também pode ser fechado como uma duplicata deste.
Firas Assaad
@Firas, foi fechado - e reaberto :) Independentemente, acho que essa formulação é melhor (e sim, é um wiki) - e se as pessoas copiarem suas respostas, essa deve cobrir todas as informações da outra pergunta.
Ciclope

Respostas:

71

Git

Recentemente, participei do Git (usei SVN e Mercurial). Até agora, eu realmente gosto do que recebo com o Git. Está longe de ser difícil de configurar e mais ferramentas de desenvolvimento estão começando a adotar o uso.

É um sistema de controle de versão distribuído. Isso nos permite ter nossa própria área independente de tronco. Eu posso trabalhar na minha própria área e convidá-lo para ver os changesets com muita facilidade. Posso reverter no meu próprio espaço sem estragar o repositório central. Posso confirmar, ramificar e fazer tudo o que você pode fazer com o SVN localmente. Eu realmente gosto de ter esse controle.

Com o SVN, você precisa acessar seu repositório para confirmar. E se você estiver na estrada ou em um café sem internet? Não é bom.

Certamente, o SVN é muito mais simples de aprender, mas acho que as vantagens do controle de fonte distribuído superam amplamente o fato de ele ter uma pequena curva de aprendizado.

Também gosto que seja mais inteligente a fusão.

Uma desvantagem importante do GIT é que ele armazena toda a história localmente. (Sim, você pode realizar uma cirurgia para reduzir isso, mas é o comportamento padrão). Não é um problema para os arquivos de origem, mas se você tiver um projeto grande com gigabytes de dados de ativos, isso se tornará um problema rapidamente. Na minha experiência atual, eu recomendaria o GIT apenas para repositórios menores ou somente de origem.

Se você ainda está curioso sobre o GIT, consulte http://thkoch2001.github.io/whygitisbetter/ para obter boas informações / métricas. Verifique também https://git.wiki.kernel.org/index.php/GitSvnComparsion

David McGraw
fonte
1
Adoro a idéia de hierarquia de ramificações, permitindo que o controle de qualidade teste as alterações antes que elas atinjam a linha principal, ou a fácil criação e validação de demos.
22810 dezpn
@tenpn, isso é um recurso do VCS distribuído em geral ou apenas do Git?
Ciclope
1
Ouvi dizer que tanto o Git quanto o Mercurial sofrem ao colocar arquivos muito grandes neles. Alguma verdade desse boato de pessoas com mais experiência do que eu?
drhayes 17/07/10
6
O Git é bom e tudo, mas quando se trata de lidar com grandes recursos gráficos ou musicais, como mais de 100 MB, fica notavelmente lento nas confirmações e check-outs. No momento, o Mercurial, o candidato ao Git, possui uma extensão "grandes arquivos" que aborda esse problema específico. Se você tem um projeto de jogo que não possui muitos recursos, tente o Git.
Spoike 17/07/10
3
Por que não usar os submódulos do Git para gerenciar os arquivos binários? Dessa forma, você pode criar repositórios separados conforme necessário e, em seguida, conectá-los usando sub-módulos. Quaisquer alterações futuras no repositório principal não devem afetar os submódulos.
Alex Schearer
62

Mercurial

Características principais:

  • VCS distribuídos
  • Código aberto gratuito
  • Os scripts de plug-in são fáceis de escrever --- podem ser escritos em Python ou como scripts de shell
  • Existem muitos scripts de plug-in disponíveis gratuitamente
  • Muita documentação disponível, incluindo este livro (altamente recomendado)

Com relação ao uso de arquivos que não são de texto, as últimas versões do Mercurial (> = 2.0) fornecem a extensão do arquivo grande por padrão :

arquivos grandes resolve esse problema adicionando uma camada cliente-servidor centralizada sobre o Mercurial: arquivos grandes residem em um armazenamento central na rede em algum lugar, e você só busca os necessários quando precisa deles.

Existem outras extensões que fornecem soluções semelhantes, como a extensão bigfiles, que permite armazenar seus ativos no mesmo repositório Mercurial, mas apenas buscar os binários necessários quando você precisar deles.

Não estou ciente de nenhum problema com relação a grandes projetos além daqueles relacionados a ter arquivos binários grandes. O projeto Python é um projeto grande e usa o Mercurial .

Joel Spolsky escreveu um mini-tutorial sobre o uso do Mercurial na reeducação do Subversion

talljosh
fonte
4
Nota interessante sobre a extensão Bigfiles - que trata de um dos problemas relatados no encadeamento original, que o VCS distribuído não se encaixa bem nas produções de jogos que possuem um grande número de ativos de arquivos binários.
Ciclope
1
+1 para Mercurial. É rápido, fácil de usar e surpreendentemente poderoso. :) Estou usando-o para tudo: desenvolvimento web, desenvolvimento de jogos, projetos pessoais individuais e projetos de equipe. Obrigado por apresentar a extensão BigFiles!
jacmoe
No que diz respeito aos grandes projetos, o TortoiseHg parece ser muito mais lento em um repositório grande com 8 anos de revisões do que em um repositório pequeno com menos de 20 revisões. Ainda não sei se isso é algo específico da tartaruga ou da Mercurial em geral.
Kylotan
4
Parece não haver uma opção comparável a svn:needs-lock, e como também não há como saber quem está trabalhando localmente em quais arquivos , você volta a passar uma tigela pela equipe, literalmente (você não pode editar sem o tigela na sua mesa). Com extensão BigFiles ou não, este VCS é inútil para arquivos binários sem uma solução prática para isso.
Sam Harwell
3
Independentemente do suporte a arquivos grandes, se duas pessoas editarem, digamos, um arquivo Maya de uma vez, uma fará o check-in e a outra terá que refazer o trabalho. Com o Perforce, pelo menos, você pode saber que outra pessoa está editando o arquivo (e também automaticamente trava esse arquivo).
dash-tom-bang
39

Perforce

O Perforce (comercial / de código fechado, centralizado) é o padrão do setor por vários motivos.

  1. É um produto comercial, o que significa que vem com suporte comercial. Projetos de código aberto podem ser elegíveis para uma licença gratuita (menos o suporte técnico).
  2. Ele suporta áreas de trabalho muito bem , o que permite layouts de diretórios de fontes e ativos muito flexíveis.
  3. Ele suporta listas de alterações muito bem .
  4. Você pode ver quem está trabalhando em quê. Os jogos têm um número anormalmente alto de arquivos binários (ativos) que mudam rapidamente em comparação com outros projetos de desenvolvimento. Na maioria das vezes, eles não são mescláveis, portanto, acompanhar quem tem o que / onde / quando é fundamental. Os clientes do Subversion e DSCC evitam intencionalmente essa técnica, mas é bastante benéfico em certas aplicações.
  5. Ele suporta bases gigantes de código / ativo. Ele não armazena dados duplicados nas máquinas clientes, o que é importante quando sua sub-visualização da árvore é de algumas dezenas de shows.

Dito isto, é dolorosamente óbvio quase diariamente que a Perforce não sente que sua posição no setor esteja ameaçada. Suas ferramentas visuais, incluindo P4V e P4SCC (integram-se ao Visual Studio), são lentas e com erros, sendo que este último congela o congelamento do Visual Studio para sua total diversão. AnkhSVN está milhas à frente do Perforce.

Comentário de xan: No entanto, vale a pena notar que a ferramenta de mesclagem deles, o P4Merge (usada para difusão e mesclagem), é excelente e muito superior aos do Tortoise Merge. Surpreendentemente, esse componente está disponível gratuitamente como parte do pacote P4 Visual Tools.

Comentário por slicedlime: Outra desvantagem do Perforce é que a ramificação nele tende a ser uma dor enorme, especialmente se você tiver árvores grandes. Quase todos os outros vcs são melhores em ramificação e fusão. Geralmente, esse é um preço pequeno a pagar pelas vantagens acima.

Comentário de roe: O Perforce é extremamente falador. Não há muita coisa acontecendo sem o servidor envolvido. O mais importante é que você precisa do servidor para poder abrir para edição, o que significa que você precisa passar por alguns obstáculos caso pretenda interromper a conexão com o servidor.

Comentário de jrista: Como usuário diário do Perforce há mais de dois anos, com uma equipe de engenharia de desenvolvimento e qualidade de mais de 100 pessoas, me familiarizei intimamente com ele. Embora seja um sistema de controle de origem decente, ele tem suas desvantagens de que aqueles que avaliam sistemas SCC devem estar cientes de:

  • Como mencionado por outros, ramificar / integrar é particularmente complicado e difícil de fazer. Você tem uma quantidade ímpia de controle, mas isso custa à complexidade excessiva. Por outro lado, a ferramenta de mesclagem visual é única e apresenta uma bela exibição de mesclagem "baseada" em três arquivos do seu trabalho. O Perforce fornece algumas visualizações gráficas dos caminhos das ramificações (chamado de gráfico de revisão), no entanto, a maneira como é visualizada geralmente torna a ferramenta bastante inútil. Se você precisar apenas ver um segmento muito pequeno de tempo para um ou muito poucos arquivos, poderá ser útil ... qualquer coisa mais, e é quase impossível navegar no Gráfico de Revisão.
  • O Perforce também não é uma ferramenta muito eficiente, pois quase qualquer operação de arquivo requer duplicação de arquivos e dados: ramificação, rotulagem, lista de alterações etc. Não há marcação ou ramificação esparsa ou leve aqui. Se você não tem medo de usar uma quantidade enorme de espaço em disco para rastrear suas alterações, o forforce provavelmente o ajudará. Caso contrário, eu procuraria outra ferramenta.
  • O Perforce faz uso de áreas de trabalho, no entanto, às vezes, isso pode ser frustrante, pois o cache forçado em todo o estado da área de trabalho, em vez de usar os arquivos reais no disco para determinar algum estado. Isso geralmente faz com que os arquivos não sejam sincronizados porque sua área de trabalho diz que eles estão atualizados, quando, por qualquer motivo, os arquivos físicos no disco NÃO estiverem atualizados.
  • Um aborrecimento final, o Perforce é bastante brutal na sua rede. É um programa extremamente falador e consome uma quantidade considerável de largura de banda. Qualquer perda de conectividade de rede e você corre o alto risco de não conseguir trabalhar com seus arquivos controlados por fonte até que a conectividade seja restaurada. Até o momento, ainda não descobri uma atividade que possa ser realizada off-line no Perforce.
280Z28
fonte
2
Outra vantagem do Perforce é que ele é gratuito para os dois primeiros usuários, o que é ótimo para pequenos projetos de hobby ou dois avaliam sua adequação a um projeto maior.
Da minha experiência, o ponto 5 da sua resposta é muito verdadeiro. É extremamente escalável. Os erros são raros, o suporte é rápido. Não tem certeza do custo, Yacine observa que é gratuito para os dois primeiros usuários. Para estúdios menores com jogos menores, vale a pena avaliar outras opções. A integração do Visual Studio é um pouco fora da caixa; mas temos a sorte de ter um entusiasta completo do Perforce em nosso estúdio, escrevendo um excelente fornecedor de fontes para o VS do zero.
21139 paulecoyote
Perforce é incrível, se você puder pagar. Eu não usei todos os sistemas de controle de versão existentes, mas em 10 anos de desenvolvimento comercial de jogos e em vários sistemas de controle de versão, é o melhor que já usei por alguma margem. Ele lida com arquivos de dados grandes de maneira rápida e confiável e, se configurado corretamente, apresenta bom desempenho em uma configuração de vários sites por meio de conexões de Internet relativamente lentas. A integração do Visual Studio pode não ser perfeita, mas é bastante sólida.
Bluescrn
1
Se eu tivesse que escolher um VCS para o desenvolvimento de jogos (em larga escala), seria o Perforce. Se eu pudesse escolher vários, adicionaria um DVCS para ativos de texto (código, scripts e outros arquivos de dados diversos), mas manteria o Perforce para ativos binários.
dash-tom-bang
2
Eu trabalhei em um grande projeto de jogo que usava o Perforce e fiquei completamente desconcertado com o fato de alguém pagar por isso. A necessidade de estar sincronizado com o servidor é desagradável, mesmo em uma LAN. Entendo o recurso "reconciliar trabalho offline", mas, na prática, o fluxo de trabalho é tão intrusivo que, quando existem problemas de rede, você simplesmente não trabalha. Se você não usa um IDE que possua um plug-in P4, ou apenas deseja editar um arquivo aqui e ali a partir da linha de comando ou de outra ferramenta, é necessário voltar ao cliente P4 e fazer a contabilidade. Nenhum outro VCS coloca tantas barreiras ao trabalho.
Suboptimus
27

Subversão

  • Código aberto, centralizado

  • Arquivos do Blender - Não tenho certeza se os arquivos .blend são binários (eles se parecem), mas não tive problemas para adicioná-los ao Subversion. Depois de fazer algumas experiências, o aumento do tamanho dos arquivos alterados parece nominal, por isso não é simplesmente copiar o arquivo inteiro.

  • Projetos grandes - Funciona, embora possa ficar peculiar. É definitivamente capaz de lidar com repositórios de pelo menos 5,5 GB (tamanho total do diretório do repositório no servidor; principalmente ativos binários).

  • Dados duplicados no cliente - O Subversion mantém uma cópia duplicada de todos os arquivos na área de trabalho do usuário como uma cópia original. A vantagem disso é que você pode fazer uma diferença ou reverter sem voltar ao servidor. A desvantagem é que seus 10 GB de arquivos de trabalho ocupam 20 GB de espaço em disco.

  • A lista de ignorados é uma propriedade de um diretório (simples com uma GUI, irritante na linha de comando).

  • O Subversion permite o bloqueio de arquivos / ativos - o que é realmente útil se vários artistas e designers trabalharem nos mesmos arquivos.

  • Externos são uma ótima maneira de lidar com código compartilhado (por exemplo, biblioteca ou base) entre projetos.

Ciclope
fonte
Grandes projetos - KDE, GNOME.
Matias Valdenegro
* O FSFS pode ser muito frágil para recuperação - portanto, é necessário um cuidado extra com os backups. * Fácil de entender, o TortoiseSvn é um ótimo cliente. * Rastreadores de bugs de código aberto, sistemas de integração contínua, etc. geralmente têm suporte para o Subversion "pronto para uso". * Existem alguns bons livros disponíveis sobre o uso do Subversion.
21310 Paulecoyote
1
@paulecoyote, este é um post do wiki, fique à vontade para editá-lo com novas informações, não apenas comentários.
Ciclope
1
O SVN é ótimo para usar com o Tortoise SVN ( tortoisesvn.net ), um cliente que se integra perfeitamente ao menu de contexto e fornece orientações para todas as ações. É inegável que a tartaruga não possui portas Linux / Mac OS (pelo menos ao escrever isso). Protip: se estiver trabalhando com várias pessoas, sempre atualize (e mescle / resolva conflitos) ANTES de confirmar.
Exilyth 23/03
7

AlienBrain

De Avid :

Alienbrain é um sistema de gerenciamento de ativos digitais para artistas da indústria do entretenimento

  • Comercial (mais caro que o Perforce), centralizado
  • Projetado para integrar-se com outras ferramentas profissionais de fluxo de trabalho 2D e 3D, como Photoshop, Maya, 3ds Max, Microsoft Visual Studio, etc.

Eu tenho nenhuma experiência com Alienbrain, e só ouviu falar sobre isso a partir do livro Jogo codificação completa por Mike McShaffry. Ele parece pensar muito sobre isso, no entanto:

Os artistas e outros colaboradores realmente usarão este produto, ao contrário de outros que são projetados principalmente para se integrar bem ao Visual Studio e não a aplicativos criativos, como o Photoshop e o 3D Studio Max. Uma das grandes desvantagens de outros produtos é o tratamento bastante ingênuo dos arquivos não-texto. O AlienBrain foi escrito com esses arquivos em mente.

Claro que ele também descreve como:

Para aqueles com sérios problemas de rastreamento de ativos e orçamentos igualmente sérios ...

Cyclops
fonte
SIM! Finalmente quem entende: ativos e código precisam de ferramentas diferentes! 1
jacmoe 27/08/2010
3
Minha experiência com o AlienBrain é que os autores não entendem o desenvolvimento de jogos. Não é uma solução robusta de controle de fonte. Alguns dos recursos são bons para alguns da equipe, mas alguns dos recursos mais legais anunciados não são implementados de maneira a serem úteis (por exemplo, a interface de teste, onde alguém pode verificar seus ativos "para revisão". Infelizmente não há como saber o que é para revisão e o que não é, e quando você sincroniza, você o obtém de qualquer maneira). Além disso, ele não armazena nada em cache, portanto, uma sincronização requer o teste de todos os arquivos. Isso é lento com muitos shows de ativos. :)
dash-tom-bang
A única coisa útil sobre o AlienBrain é a janela de visualização que funciona com os arquivos Max. Todo o resto é lixo total.
tenpn 27/09/10
1
Não tenho certeza de como isso é construtivo, uma vez que não é uma experiência em primeira mão, mas já trabalhei em alguns projetos que usavam o AlienBrain antes de trabalhar no projeto, e não o usavam mais, e ninguém tinha coisas boas a dizer sobre isto. Minha memória de ler sobre isso e capturar o boca a boca é que ele explodiu em cena, parecia muito legal e algumas pessoas que podiam pagar tentaram e, eventualmente, perceberam que era um erro.
Suboptimus
3

Team Foundation Server

da Microsoft

  • Comercial
  • Centralizado
  • Integra-se muito bem ao Visual Studio
  • Boa integração do Windows Explorer para usuários que não são VS (ou seja, artistas)
  • Oferece suporte a conjuntos de alterações "arquivados", que são um pouco análogos a 'stashing' no git, mas vão até o servidor; você também pode tornar públicos esses estantes, para permitir que outros usuários os integrem para você.
  • Desde 2012, ele tem alguns fluxos de trabalho de revisão de código muito bons criados diretamente no Visual Studio
  • A versão mais recente da ferramenta de mesclagem é muito boa. A mesclagem automática funciona muito bem.
  • Oferece suporte a arquivos grandes e obrigatórios (obviamente, você não pode mesclá-los)
  • Very good build server
  • Oferece suporte a check-ins fechados, que permitem avaliar a qualidade de um conjunto de prateleiras (por meio de compilações automatizadas, testes de unidade, análise de código) antes de ser confirmado no repositório.
  • Ótimas ferramentas de gerenciamento de projetos (não estritamente recursos de controle de origem, mas realmente úteis), oferecendo rastreabilidade de requisitos de alto nível até o código.

Eu usei o TFS extensivamente em projetos de simulador MILSPEC, e é muito bom. Provavelmente não é o melhor se você estiver em um Mac, embora exista um plug-in do eclipse atualmente. A versão hospedada na nuvem suporta repositórios git para o backend de controle de origem.

É gratuito para até cinco usuários no Visual Studio Online (permite código fechado; sem limite de tamanho de repositório), onde está hospedado na nuvem. Se você deseja hospedá-lo localmente, pode ser caro.

O que mais gosto nele são os recursos de gerenciamento de engenharia de software e o fato de ele lidar com arquivos grandes e arquivos binários com bastante satisfação.

guysherman
fonte
1
O novo Visual Studio Online é gratuito para até 5 usuários e hospedado na nuvem (com bom backup, etc.). Pode fazer TFS ou Git com ele. Ótimo para desenvolvimento de jogos indie.
Robert Fraser