Trochę późno na imprezę, ale oto mój pomysł.
Wybrałbym trzecią możliwość, która nie wymaga niczego takiego jak modyfikowanie już istniejącej bazy kodu. Będzie to działać, jeśli zatwierdzisz (i skopiujesz) pliki binarne (rzeczywistą .exe gry i powiązane pliki DLL z kompilacji) gdzieś w katalogu wyjściowym - na przykład za pomocą skryptu po kompilacji. Dalej zakładam, że mówimy o Visual Studio 2010 i XNA Game Studio 4.0 (procedura jest bardzo podobna w przypadku innych wersji, wystarczy wymienić niektóre cyfry)
Tak więc pomysł jest taki: utwórz skrypt (.cmd) w katalogu głównym projektu, w którym znajduje się rozwiązanie .sln, wykonując następujące kroki:
Wywołaj „Wiersz polecenia programu Visual Studio 2010”:
wywołaj „C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ vcvarsall.bat” x86
Ma to na celu umożliwienie naszemu skryptowi odnalezienia bibliotek XNA oraz wszystkich wymaganych narzędzi i plików binarnych.
Wywołaj zadanie MSBuild w projekcie treści (.contentproj):
msbuild / property: XNAContentPipelineTargetPlatform = Windows / property: XNAContentPipelineTargetProfile = Zasięg mygame.content / projectfile.contentproj
Możesz modyfikować właściwości przez określone różne platformy / profile. Możesz nawet posunąć się dalej, aby tworzyć treści dla większej liczby platform jednocześnie (Windows Phone, Xbox 360 lub Windows). Profil może być: Reach lub HiDef (http://msdn.microsoft.com/en-us/library/ff604995.aspx)
Skopiuj rekurencyjnie dane wyjściowe do folderu, w którym pliki binarne + aktualna gra jest przechowywana w repozytorium:
xcopy / d / y / i / e bin \ x86 \ Debug \ Content * .. \ game_output \ Content
Szczegółowe informacje na temat flag, można powołać się w wierszu polecenia: xcopy /?
. Ważne są:, /d
aby kopiować tylko zmodyfikowane pliki - w przypadku wielu zasobów przydatne jest, aby nie kopiować w kółko tych już istniejących i niezmodyfikowanych; /y
do automatycznego nadpisywania istniejących plików, aby można je było zaktualizować do nowszej wersji. Użyłem, xcopy
ponieważ normalnie copy
nie mogę kopiować folderów rekurencyjnych, o ile mi wiadomo - i prawdopodobnie porządkujesz zawartość folderów i podfolderów. Ponadto jest lepszy niż zwykle copy
(wiele różnych flag).
Zadzwoń, pause
aby skrypt czekał na dane wejściowe użytkownika. Jest to przydatne, aby sprawdzić, czy kompilacja była poprawna i nie napotkano błędów.
Teraz artyści (lub ktokolwiek), którzy modyfikują pliki zawartości, muszą tylko dwukrotnie kliknąć skrypt .cmd, a nowa treść zostanie zbudowana i skopiowana do katalogu wyjściowego, w którym znajdują się zatwierdzone artefakty, gotowa do przetestowania.
Istnieje jednak niewielki problem, do którego musisz wrócić do pierwszego punktu postu Davida: jeśli artyści chcą zmodyfikować projekt Treści poprzez dodanie / usunięcie / przeniesienie plików, muszą to zrobić, otwierając projekt w Visual Studio (lub ręcznie edytuj plik projektu, co, jak sądzę, nikt by nie zrobił). Jak powiedziałem, jest to niewielki problem, ponieważ mogą po prostu zatwierdzić nowe pliki w repozytorium, a Ty, koder, umieści je w Projekcie treści, gdy kod zostanie zrobiony, aby je obsłużyć.
Na ten temat Shawn Hargreaveas opublikował coś o msbuild i budowaniu projektów treści z wiersza poleceń: http://blogs.msdn.com/b/shawnhar/archive/2006/11/07/build-it-ahead-of-time .aspx Jego rozwiązaniem było utworzenie nowego pliku, ale myślę, że łatwiej i łatwiej jest go obsługiwać bezpośrednio z już istniejącego pliku projektu.
PS: Przepraszam za długi post xD