Um pouco tarde para a festa, mas aqui está a minha ideia.
Eu iria com a terceira posibilidade, que não envolve nada como modificar a base de código já existente. Isso funcionará se você confirmar (e copiar) os binários (o jogo real .exe e as DLLs associadas da compilação) em algum lugar do diretório de saída - por exemplo, com um script pós-compilação. A partir de agora, assumirei que estamos falando do Visual Studio 2010 e do XNA Game Studio 4.0 (o procedimento é muito semelhante para outras versões, basta substituir alguns números)
Portanto, a ideia é: crie um script (.cmd) na raiz do seu projeto, onde reside a solução .sln, com as seguintes etapas:
Invoque o "Prompt de Comando do Visual Studio 2010":
chame "C: \ Arquivos de programas (x86) \ Microsoft Visual Studio 10.0 \ VC \ vcvarsall.bat" x86
Isso está em ordem para que nosso script encontre as bibliotecas XNA e todas as ferramentas e binários necessários.
Chame a tarefa MSBuild no projeto de conteúdo (.contentproj):
msbuild / propriedade: XNAContentPipelineTargetPlatform = Windows / propriedade: XNAContentPipelineTargetProfile = Alcance mygame.content / projectfile.contentproj
Você pode modificar as propriedades por diferentes plataformas / perfis especificados. Você pode ir além para criar o conteúdo para mais plataformas ao mesmo tempo (Windows Phone, Xbox 360 ou Windows). O perfil pode ser: Reach ou HiDef (http://msdn.microsoft.com/en-us/library/ff604995.aspx)
Copie recursivamente a saída para a pasta em que os binários + jogo real estão armazenados no repositório:
xcopy / d / a / i / e bin \ x86 \ Debug \ Content * .. \ game_output \ Content
Para mais detalhes sobre as bandeiras, você pode invocar no prompt de comando: xcopy /?
. Os importantes são: /d
copiar apenas arquivos modificados - caso você tenha muitos recursos, é útil não copiar repetidamente os arquivos já existentes e não modificados; /y
para substituir automaticamente os arquivos existentes, para que possam ser atualizados com uma versão mais recente. Eu usei xcopy
porque o normal copy
não pode copiar pastas recursivamente até onde eu sei - e provavelmente você está estruturando o conteúdo em pastas e subpastas. Além disso, é melhor que o normalcopy
(muitas bandeiras diferentes).
Ligar pause
para que o script aguarde a entrada do usuário. Isso é útil para verificar se a construção foi boa e se não foram encontrados erros.
Agora, os artistas (ou qualquer pessoa) que modifique os arquivos de conteúdo precisam apenas clicar duas vezes no script .cmd e o novo conteúdo será construído e copiado no diretório de saída onde estão os artefatos confirmados, prontos para serem testados.
No entanto, há um pequeno problema, para o qual você terá que voltar ao primeiro ponto da postagem de David: se os artistas quiserem modificar o projeto Content adicionando / removendo / movendo arquivos, eles precisam fazer isso abrindo o projeto no Visual Studio (ou editar o arquivo do projeto manualmente, o que duvido que alguém faria). Como eu disse, esse é um pequeno problema, porque eles podem apenas confirmar os novos arquivos no repositório, e você, o codificador, os incluirá no Projeto de Conteúdo quando o código for feito para lidar com eles.
Com essa ideia, Shawn Hargreaveas postou algo sobre o msbuild e a construção dos Projetos de Conteúdo a partir da linha de comando: http://blogs.msdn.com/b/shawnhar/archive/2006/11/07/build-it-ahead-of-time .aspx Sua solução foi criar um novo arquivo, mas acho que é mais fácil e sustentável de usar diretamente o arquivo de projeto já existente.
PS: Desculpe pelo longo post xD