Controle de versão em jogos

Mais um pra série de artigos polêmicos:

Mais um texto que defende a mesma linha:

Para quem não leu nenhum dos dois, spoilers para chamar a atenção:

Eles defendem que SVN é melhor que Git para controle de versão em jogos

Let the flame war begin!

Ae finalmente tive tempo de ler os dois e dar uma opinião.

Primeiro sobre o segundo texto em relação aos outros tipos de versionamento: eu fiquei chocado quando ele diz
" most of gamedev industry is still leaning towards Perforce and SVN "
porque esse Perforce só parece horrível se branching é algo inutilizável (e já foi relatado data-loss em merges, mano que).

Agora sobre o SVN que os dois textos falam, eles basicamente ressaltam três grandes pontos para usar ele em vez de git:

  • Mais acessível pra non-devs;
  • Ter Locking;
  • Ser melhor pra guardar assets ou outros arquivos grandes;

O primeiro eu acho algo realmente legal e importante. Eu nao usei SVN, mas se for mais acessível isso só é um bônus. Mas pelo menos eu acho que pra um “uso normal” de um artista ou non-dev, o que ele vai usar é bem fácil de aprender e descobri que existe umas IDE’s por ai que ajudam só nessa parte de dar push/pull e até merge (a IDE de windows do github é bem bonitinha, eu curto).

Sobre locking, eu acho algo realmente desnecessário. Pra mim branching e uma boa comunicação do time é tudo que precisa pra trabalhar em multiplos arquivos, e os próprios serviços do Github pro exemplo já fornecem uma plataforma muito boa pra comunicar o que cada um ta fazendo e se por acaso alguém quer trabalhar sozinho em um arquivo. Eu fico do lado do Git de não colocar Locking obrigatório e deixar a cargo do usuário os “advisory-locks”.

Agora isso de assets é algo interessante. Em projetos que tinham muitos assets eu tava usando Google Drive/Dropbox mesmo pra guardar as coisas, e era uma leve chateação ficar abrindo os sites pra pegar assets e tudo mais. Mas acho que tendo uma comunicação boa entre os dois resolveria isso, como por exemplo no caso do backdoor, deixar pro nosso makefile pegar e atualizar os assets quando necessário ou pedido do usuário. Mas queria saber a opinião de vocês pra solução desse problema.

Por fim eu não fiquei muito convencido pela SVN. Eu não entendi muito bem a utilidade prática do pensamento deles de "história deve ser imutável e não deveria existir coisas como “amend”. Pra mim isso parece mais um pensamento purista, que por mais que traga o benefício da invariante “tudo no passado é constante”, pra mim acaba limitando mais os developers do que sendo benéfico pro projeto.

Pra mim um bom caminho seria ter bons tutoriais de git para que todo mundo saiba como se virar, ou pelo menos saber onde correr atrás se surgir algum problema