Un poco tarde para la fiesta, pero aquí está mi idea.
Iría con la tercera posibilidad, que no implica nada como modificar la base de código ya existente. Esto funcionará si confirma (y copia) los archivos binarios (el .exe real del juego y los .dlls asociados de la compilación) en algún lugar de un directorio de salida, por ejemplo, con un script posterior a la compilación. En adelante, asumiré que estamos hablando de Visual Studio 2010 y XNA Game Studio 4.0 (el procedimiento es muy similar para otras versiones, solo necesito reemplazar algunos números)
Entonces, la idea es: crear un script (.cmd) en la raíz de su proyecto, donde reside la solución .sln, con los siguientes pasos:
Invoque el "Símbolo del sistema de Visual Studio 2010":
llame a "C: \ Archivos de programa (x86) \ Microsoft Visual Studio 10.0 \ VC \ vcvarsall.bat" x86
Esto es para que nuestro script pueda encontrar las bibliotecas XNA y todas las herramientas y binarios necesarios.
Llame a la tarea MSBuild en el Proyecto de contenido (.contentproj):
msbuild / property: XNAContentPipelineTargetPlatform = Windows / property: XNAContentPipelineTargetProfile = Llegue a mygame.content / projectfile.contentproj
Puede modificar las propiedades por diferentes plataformas / perfiles especificados. Incluso puede ir más allá para crear el contenido para más plataformas a la vez (Windows Phone, Xbox 360 o Windows). El perfil puede ser: Reach o HiDef (http://msdn.microsoft.com/en-us/library/ff604995.aspx)
Copie recursivamente el resultado en la carpeta donde se almacenan los binarios + el juego real en el repositorio:
xcopy / d / y / i / e bin \ x86 \ Debug \ Content * .. \ game_output \ Content
Para más detalles sobre las banderas, puede invocar en el símbolo del sistema: xcopy /?
. Los importantes son: /d
para copiar solo archivos modificados; en caso de que tenga muchos recursos, es útil no copiar una y otra vez los ya existentes y no modificados; /y
para sobrescribir automáticamente los archivos existentes para que puedan actualizarse con una versión más nueva. Lo he usado xcopy
porque lo normal copy
no puede copiar carpetas recursivamente hasta donde yo sé, y probablemente esté estructurando el contenido en carpetas y subcarpetas. Además, es mejor que lo normal copy
(muchas banderas diferentes).
Llame pause
para que el script espere la entrada del usuario. Esto es útil para verificar si la compilación estuvo bien y no se encontraron errores.
Ahora, los artistas (o cualquier persona) que modifique los archivos de contenido, solo tienen que hacer doble clic en el script .cmd y el nuevo contenido se creará y copiará en el directorio de salida donde están los artefactos comprometidos, listos para ser probados.
Sin embargo, hay un pequeño problema, por el cual tendrá que recurrir al primer punto de la publicación de David: si los artistas desean modificar el proyecto de Contenido agregando / eliminando / moviendo archivos, deben hacerlo abriendo el proyecto en Visual Studio (o editando el archivo del proyecto a mano, lo que dudo que alguien haga). Como dije, este es un problema pequeño, porque podrían simplemente confirmar los nuevos archivos en el repositorio, y usted, el codificador los incluirá en el Proyecto de Contenido cuando el código esté listo para manejarlos.
Sobre esta idea, Shawn Hargreaveas publicó algo sobre msbuild y la construcción de los proyectos de contenido desde la línea de comandos: http://blogs.msdn.com/b/shawnhar/archive/2006/11/07/build-it-ahead-of-time .aspx Su solución fue crear un nuevo archivo, pero creo que es más fácil y más fácil de usar directamente el archivo del proyecto ya existente.
PD: Perdón por la larga publicación xD