Un po 'in ritardo alla festa, ma ecco la mia idea.
Vorrei andare con la terza possibilità che non comporta nulla di simile alla modifica della base di codice già esistente. Funzionerà se, eseguirai il commit (e la copia) dei file binari (il file .exe attuale del gioco e i .dll associati dalla compilation) da qualche parte in una directory di output, ad esempio con uno script post-build. In seguito, assumerò che stiamo parlando di Visual Studio 2010 e XNA Game Studio 4.0 (la procedura è molto simile per altre versioni, basta sostituire alcuni numeri)
Quindi, l'idea è: creare uno script (.cmd) nella radice del progetto, dove risiede la soluzione .sln, con i seguenti passaggi:
Richiamare il "Prompt dei comandi di Visual Studio 2010":
chiama "C: \ Programmi (x86) \ Microsoft Visual Studio 10.0 \ VC \ vcvarsall.bat" x86
Questo per far sì che il nostro script sia in grado di trovare le librerie XNA e tutti gli strumenti e i binari richiesti.
Chiamare l'attività MSBuild sul Progetto contenuto (.contentproj):
msbuild / proprietà: XNAContentPipelineTargetPlatform = Windows / proprietà: XNAContentPipelineTargetProfile = Raggiungi mygame.content / projectfile.contentproj
È possibile modificare le proprietà in base a piattaforme / profili diversi specificati. Puoi anche andare oltre per creare contenuti per più piattaforme contemporaneamente (Windows Phone, Xbox 360 o Windows). Il profilo può essere: Reach o HiDef (http://msdn.microsoft.com/en-us/library/ff604995.aspx)
Copia ricorsivamente l'output nella cartella in cui i file binari + gioco reale sono archiviati nel repository:
xcopy / d / y / i / e bin \ x86 \ Debug \ Content * .. \ game_output \ Content
Per i dettagli sulle bandiere, è possibile richiamare nel prompt dei comandi: xcopy /?
. I più importanti sono:, /d
per copiare solo i file modificati - nel caso in cui tu abbia molti asset è utile non copiare più e più volte quelli già esistenti e non modificati; /y
per sovrascrivere automaticamente i file esistenti in modo che possano essere aggiornati con una versione più recente. L'ho usato xcopy
perché il normale copy
non può copiare cartelle ricorsivamente per quanto ne so - e probabilmente stai strutturando il contenuto in cartelle e sottocartelle. Inoltre, è meglio del normale copy
(molte bandiere diverse).
Chiama in pause
modo che lo script attenda l'input dell'utente. Questo è utile per verificare se la build andava bene e non si sono verificati errori.
Ora, gli artisti (o chiunque) che modificano i file di contenuto, devono semplicemente fare doppio clic sullo script .cmd e il nuovo contenuto verrà creato e copiato nella directory di output in cui si trovano gli artefatti commessi, pronto per essere testato.
Tuttavia, c'è un piccolo problema, per il quale dovrai tornare al primo punto del post di David: se gli artisti vogliono modificare il progetto Content aggiungendo / rimuovendo / spostando i file, devono farlo aprendo il progetto in Visual Studio (o modifica manuale del file di progetto, che dubito che chiunque farebbe). Come ho detto, questo è un piccolo problema, perché potrebbero semplicemente eseguire il commit dei nuovi file nel repository e tu, il programmatore li includerà nel progetto di contenuto quando il codice sarà fatto per gestirli.
Su questa idea, Shawn Hargreaveas ha pubblicato qualcosa su msbuild e la creazione di progetti di contenuto dalla riga di comando: http://blogs.msdn.com/b/shawnhar/archive/2006/11/07/build-it-ahead-of-time .aspx La sua soluzione era quella di creare un nuovo file, ma penso che sia più facile e più gestibile utilizzare direttamente il file di progetto già esistente.
PS: scusami per il lungo post xD