Como uma equipe deve compartilhar / armazenar o conteúdo do jogo durante o desenvolvimento?

8

Além do Dropbox, o que tem sido especialmente útil para armazenar e compartilhar conteúdo de jogos como imagens durante o desenvolvimento (recurso semelhante ao Dropbox, como trabalhar offline, sincronização automática e suporte para windows / osx)?

Estamos pensando em hospedar nosso próprio servidor do SharePoint, mas parece estar realmente focado em documentos ... Talvez o Box.net funcione?

EDITAR

Para código, estamos usando Git.

Para ser mais preciso, eu estava procurando uma maneira fácil e automática de que o conteúdo produzido por artistas / engenheiros de áudio estivesse disponível para todos. Recursos como aprovações de ativos também não prejudicam. Seguindo a resposta vinculada pelo Tetrad, o Alienbrain parecia bastante interessante, mas está fora do nosso orçamento (pode ser algo para investir no futuro).

O que acabou fazendo ...

Iríamos usar o Box.net, mas o download dos aplicativos de sincronização para uso em desktop exigia que esperássemos ser contatados por algum motivo. Como não tivemos muito tempo de espera, acabamos participando das equipes do Dropbox. O Box.net tem um bom conjunto de recursos, mas nunca nos sentimos impedidos sem eles.

Obrigado pela ajuda :).

irwinb
fonte
4
Você está procurando um sistema de controle de versão? gamedev.stackexchange.com/questions/480/…
Tetrad
Um script simples e scp?
jcora

Respostas:

18

Depende da natureza do conteúdo:

  • É um ativo carregado pelo jogo, como um modelo ou uma textura? Você quer um sistema de controle de versão.
  • É alguma forma de dado não carregada diretamente pelo jogo, mas usada para criar dados diretamente carregados pelo jogo, como uma planilha de localização? Você quer um sistema de controle de versão.
  • É um documento que descreve o design do jogo, alguns detalhes dos recursos ou um processo ou procedimento técnico? Você quer um sistema de controle de versão.
  • É um arquivo que pode ser reconstruído a partir de algo que já está no controle de versão, como executáveis ​​e objetos vinculados? Você provavelmente não deseja um sistema de controle de versão (*).
  • É um arquivo que você deseja compartilhar temporariamente com um colega de trabalho, como uma alteração de código ou um ativo atualizado, que você não deseja permanentemente no jogo, mas ele precisa para continuar seu trabalho? Você não quer um sistema de controle de versão. (^)

(^) Existem algumas opções neste caso:

  • Você mencionou o Dropbox, o que é ótimo quando você está colaborando com equipes a qualquer distância, mas o limita a 2 GB. Isso deve ser bom para uso temporário, já que todos os seus outros dados devem estar no controle de versão; no entanto, se você precisar de mais espaço, agora há uma opção (paga) do Dropbox for Teams .

  • Se você não deseja pagar pelo custo de um plano maior do Dropbox, mas precisa compartilhar ocasionalmente grandes arquivos, usar uma das dezenas de sites de compartilhamento de arquivos (como o RapidShare) pode ser uma opção.

  • Hospedar um servidor FTP também pode ser viável para você.

  • Se você estiver trabalhando na mesma LAN (ou pode configurar uma VPN), o Windows e o Mac poderão criar compartilhamentos de rede que podem ser gravados um pelo outro, sem restrições de tamanho. É comum criar um compartilhamento de leitura / gravação chamado Dropbox e usá-lo para a troca de arquivos. Também é comum nomear máquinas após seus usuários; ou seja, para enviar um arquivo para John Doe, posso abrir o compartilhamento \\JOHNDOE\Dropboxe colocar o arquivo lá.

  • Menção especial para o Git se você estiver compartilhando código: você pode criar uma ramificação separada com suas alterações de código e enviar para o repositório principal. Outras pessoas podem capturar suas alterações, sem interromper sua masterramificação. (Nesses casos, é comum colocar sua ramificação em um diretório com seu nome, por exemplo johndoe/bugfix.)

(*) Ocasionalmente, você deseja confirmar / armazenar arquivos executáveis ​​e de símbolos em algum lugar para depurar problemas com versões mais antigas, sem a necessidade de reconstruir o jogo. Esse é geralmente o caso ao lidar com despejos de memória.

Blair Holloway
fonte
11
para resumir: qualquer coisa relacionada ao produto que não seja gerada por outras coisas relacionadas ao projeto passa para o controle de versão.
jwenting
Resposta de fato, embora possa ser mais complicado do que parece. "como trabalhar offline" <- isso significa hg / git / alguns outros DVCS, a menos que svn possa ser considerado como "trabalhando offline". No entanto, a principal preocupação do OP são as imagens, DVCSes, como eu sei, não lidam muito bem com os binários; nesse caso, ele pode precisar de SVN.
kizzx2
O svn funciona bem com envios / atualizações pouco frequentes, desde que haja uma boa divisão de trabalho (caso contrário, o número de conflitos de mesclagem pode ficar fora de controle, como em qualquer sistema desse tipo).
Jwenting
Você armazenaria todas as texturas e modelos no controle de origem, mesmo que eles totalizem gigabytes? (Eu nunca trabalhei em um projeto com essa quantidade de dados não-código-fonte, então eu me pergunto como as pessoas fazem isso)
RomanSt
11
@romkyns: Sim, eu definitivamente armazenaria tudo em um VCS. Em algum momento, você vai se arrepender de não tê-lo. Em relação ao gerenciamento de repositórios muito grandes: é uma dor, mas pode ser atenuado colocando dados em repositórios separados. Nosso projeto atual no trabalho possui um repositório "art-source" (mais de 100 GB) e um repositório "intermediário" (~ 20 GB). Os artistas comprometem suas fontes de textura / modelo em fontes de arte, mas depois as exportam para intermediárias para consumo pelo jogo (ou sistema de compilação). Somente os artistas precisam do repositório completo da fonte da arte; todo mundo só precisa de intermediário.
Blair Holloway