Трохи запізнився на вечірку, але ось моя ідея.
Я б пішов з третьою можливістю, яка не передбачає нічого подібного до зміни вже наявної кодової бази. Це спрацює, якщо ви скопіюєте (і скопіюєте) двійкові файли (фактична гра .exe та пов'язані з ними .dlls з компіляції) десь у вихідному каталозі - наприклад, із сценарієм після збирання. Надалі, я припускаю, що ми говоримо про Visual Studio 2010 та XNA Game Studio 4.0 (процедура дуже схожа на інші версії, просто потрібно замінити деякі номери)
Отже, ідея полягає в тому, щоб створити скрипт (.cmd) в корені проекту, де знаходиться .sln-рішення, виконавши такі кроки:
Закликайте "Командний рядок Visual Studio 2010":
виклик "C: \ програмні файли (x86) \ Microsoft Visual Studio 10.0 \ VC \ vcvarsall.bat" x86
Це для того, щоб наш скрипт міг знайти бібліотеки XNA та всі необхідні інструменти та двійкові файли.
Викличте завдання MSBuild у проекті контенту (.contentproj):
msbuild / property: XNAContentPipelineTargetPlatform = Windows / властивість: XNAContentPipelineTargetProfile = Досягти mygame.content / projectfile.contentproj
Ви можете змінювати властивості за вказаними різними платформами / профілями. Можна навіть піти далі, щоб одночасно створити вміст для більшої кількості платформ (Windows Phone, Xbox 360 або Windows). Профіль може бути: Reach або HiDef (http://msdn.microsoft.com/en-us/library/ff604995.aspx)
Рекурсивно скопіюйте вихід у папку, де бінарні файли + фактична гра зберігається у сховищі:
xcopy / d / y / i / e bin \ x86 \ налагодження \ вміст * .. \ game_output \ вміст
Більш детальну інформацію про прапори, ви можете викликати в командному рядку: xcopy /?
. Важливими є: /d
копіювати лише модифіковані файли - якщо у вас є багато активів, корисно не копіювати знову і знову вже існуючі та немодифіковані; /y
для автоматичного перезапису існуючих файлів, щоб вони могли бути оновлені новою версією. Я використовував, xcopy
тому що нормальний copy
не може копіювати рекурсивно папки, наскільки я знаю - і, ймовірно, ви структуруєте вміст у папках та підпапках. Плюс, це краще, ніж звичайне copy
(багато різних прапорів).
Зателефонуйте, pause
щоб сценарій чекав на введення користувачем. Це корисно, щоб перевірити, чи збірка була в порядку, і помилок не було.
Тепер художникам (або будь-кому), який модифікує файли вмісту, потрібно лише двічі клацнути по .cmd-скрипту, і новий вміст буде побудований і скопійований у вихідний каталог, де розміщені артефакти, готові до тестування.
Однак існує невелика проблема, з-за якої вам доведеться повернутися до 1-ої точки посади Девіда: якщо художники хочуть змінити проект Зміст, додавши / видаливши / перемістивши файли, вони повинні це зробити, відкривши проект у Visual Studio (або вручну редагувати файл проекту, який, мабуть, хтось зробив би). Як я вже говорив, це невелика проблема, оскільки вони можуть просто зафіксувати нові файли у сховищі, а ви, кодер, включите їх у Зміст проекту, коли буде зроблено код для їх обробки.
З цього приводу Шон Харгрівес розмістив щось про msbuild та створення контентних проектів з командного рядка: http://blogs.msdn.com/b/shawnhar/archive/2006/11/07/build-it-ahead-of-time .aspx Його рішення полягало у створенні нового файлу, але я вважаю, що простіше та більш рентабельно використовувати безпосередньо вже існуючий файл проекту.
PS: Вибачте за довгий пост xD