Saat ini saya sedang mengerjakan RPG, menggunakan starter kit RPG dari XNA sebagai basis. (http://xbox.create.msdn.com/en-US/education/catalog/sample/roleplaying_game) Saya bekerja dengan tim kecil (dua desainer dan satu musik / artis musik), tapi hanya saya yang programmer. Saat ini, kami sedang bekerja dengan sistem berikut (tidak berkelanjutan): tim membuat gambar / suara baru untuk ditambahkan ke permainan, atau mereka memodifikasi suara / foto yang ada, kemudian mereka melakukan pekerjaan mereka ke repositori, di mana kami menyimpan bangunan saat ini dari segalanya. (Kode, gambar, suara, dll.) Setiap hari atau lebih, saya membuat installer baru, yang mencerminkan gambar baru, perubahan kode, dan suara, dan semua orang menginstalnya.
Masalah saya adalah ini: Saya ingin membuat sistem di mana anggota tim lainnya dapat mengganti suara pertempuran, misalnya, dan mereka dapat segera melihat perubahannya, tanpa harus menunggu saya untuk membangun. Cara pengaturan XNA, jika saya publikasikan, ini mengkode semua file gambar dan suara, sehingga tim tidak dapat "hot swap." Saya dapat mengatur Microsoft VS di mesin semua orang dan menunjukkan kepada mereka cara mempublikasikan dengan cepat, tetapi saya ingin tahu apakah ada cara yang lebih sederhana untuk melakukan ini.
Adakah yang menentang hal ini ketika bekerja dengan tim yang menggunakan XNA?
Jawaban:
Pertama-tama, saya pikir Anda tidak perlu menerbitkan dan membuat installer setiap saat. Bangun saja proyek dan letakkan file output (yaitu EXE dan folder Konten ditambah dependensi DLL yang mungkin Anda gunakan) di repositori, dan itu harus berjalan di komputer mereka juga, selama mereka memiliki redist XNA diinstal.
Adapun pertanyaan Anda, saya bisa memikirkan dua solusi, salah satunya melibatkan menginstal Visual Studio pada mesin mereka, dan yang lainnya melibatkan membuat beberapa perubahan pada game:
Mintalah mereka menginstal Visual Studio dan mengajari mereka untuk menyerahkan aset mereka melalui pipa konten XNA. Mereka hanya perlu membuat proyek pipa konten, seret file ke sana dan bangun. Kemudian mereka dapat menukar file XNB yang dihasilkan dengan yang ada di folder proyek, dan menjalankan EXE untuk melihat perubahan.
Jika Anda mengembangkan untuk Windows, Anda dapat mengubah kode Anda sehingga memuat aset saat runtime dalam format aslinya, tanpa harus melalui pipa konten. Untuk memuat gambar yang dapat Anda gunakan
Texture2D.FromStream
(seperti contoh ini ) dan untuk audio, solusi terbaik yang saya temukan adalah dengan menggunakan API FMOD (seperti contoh ini ). Kemudian mereka bisa menukar aset secara langsung dan menjalankan game.Untuk membuat segalanya lebih jauh, Anda juga bisa mencoba membuat game Anda didorong oleh data. Ini pada dasarnya berarti bahwa segala sesuatu dalam gim yang harus Anda ubah dengan mudah, seperti statistik kelas karakter, atau jalur gambar dan file suara yang Anda gunakan, harus dikeluarkan dari kode dan ditempatkan dalam file teks eksternal (mis. XML, JSON, INI). Maka Anda hanya perlu mengedit file-file itu dalam editor teks untuk melihat perubahan dalam gim, dan tidak perlu membangun kembali.
sumber
Build->Configuration Manager
. Secara default, build DebugDEBUG
mendefinisikan simbol kompilasi, yang berarti Anda dapat membungkus kode non-rilis Anda dengan#if ( DEBUG ) doStuffIWouldntDoInRelease(); #elif theActualReleaseCode(); #endif
.svn update
pada direktori kerja mereka dan mereka dengan cepat.Sedikit terlambat ke pesta, tapi ini ide saya.
Saya akan pergi dengan kemungkinan ke-3 yang tidak melibatkan seperti memodifikasi basis kode yang sudah ada. Ini akan berfungsi jika, Anda akan mengkomit (dan menyalin) binari (gim aktual .exe dan .dlls yang terkait dari kompilasi) di suatu tempat di direktori keluaran - misalnya dengan skrip post-build. Selanjutnya, saya akan berasumsi kita berbicara tentang Visual Studio 2010 dan XNA Game Studio 4.0 (Prosedur ini sangat mirip untuk versi lain, hanya perlu mengganti beberapa angka)
Jadi, idenya adalah: buat skrip (.cmd) di root proyek Anda, tempat solusi .sln berada, dengan langkah-langkah berikut:
Meminta "Visual Studio 2010 Command Prompt":
Ini agar skrip kami dapat menemukan pustaka XNA, dan semua alat dan binari yang diperlukan.
Panggil tugas MSBuild di Proyek Konten (.contentproj):
Anda dapat memodifikasi properti dengan platform / profil berbeda yang ditentukan. Anda bahkan dapat melangkah lebih jauh untuk membangun konten untuk lebih banyak platform sekaligus (Windows Phone, Xbox 360 atau Windows). Profil dapat berupa: Jangkauan atau HiDef (http://msdn.microsoft.com/en-us/library/ff604995.aspx)
Salin secara rekursi keluaran ke folder tempat binari + gim sebenarnya disimpan di repositori:
Untuk rincian tentang bendera, Anda dapat meminta pada command prompt:
xcopy /?
. Yang penting adalah:,/d
untuk menyalin hanya file yang dimodifikasi - jika Anda memiliki banyak aset, sebaiknya jangan menyalin yang berulang-ulang yang sudah ada dan tidak dimodifikasi;/y
untuk secara otomatis menimpa file yang sudah ada sehingga mereka dapat diperbarui dengan versi yang lebih baru. Saya telah menggunakanxcopy
karena yang normalcopy
tidak dapat menyalin folder secara rekursif sejauh yang saya tahu - dan mungkin Anda menyusun konten dalam folder dan sub-folder. Plus, ini lebih baik daripada yang normalcopy
(banyak bendera berbeda).Panggil
pause
begitu skrip akan menunggu input pengguna. Ini berguna untuk memeriksa apakah build-nya baik-baik saja dan tidak ditemukan kesalahan.Sekarang, para seniman (atau siapa saja) yang memodifikasi file konten, hanya perlu mengklik dua kali skrip .cmd dan konten baru akan dibangun dan disalin ke direktori output di mana artefak yang berkomitmen, siap untuk diuji.
Namun, ada masalah kecil, di mana Anda harus mundur ke poin pertama dari postingan David: jika artis ingin memodifikasi proyek Konten dengan menambahkan / menghapus / memindahkan file, mereka harus melakukannya dengan membuka proyek di Visual Studio (atau mengedit file proyek dengan tangan, yang saya ragu orang akan melakukannya). Seperti yang saya katakan, ini adalah masalah kecil, karena mereka hanya bisa mengkomit file-file baru dalam repositori, dan Anda, pembuat kode akan memasukkannya dalam Proyek Konten ketika kode dilakukan untuk menangani itu.
Atas ide ini, Shawn Hargreaveas memposting sesuatu tentang msbuild dan membangun Proyek Konten dari baris perintah: http://blogs.msdn.com/b/shawnhar/archive/2006/11/07/build-it-ahead-of-time .aspx Solusinya adalah membuat file baru, tapi saya pikir lebih mudah dan lebih dapat dikelola untuk menggunakan langsung file proyek yang sudah ada.
PS: Maaf untuk posting lama xD
sumber