Desain Level Dalam Game dengan XNA?


10

Saya bertanya-tanya tentang desain level dalam game. Situasi saya saat ini berkisar pada Ubin - Saya memiliki banyak lapisan berbeda dengan berbagai jenis objek di dalamnya (untuk siapa pun yang tidak terbiasa dengan Ubin, objek tidak lebih dari sebuah koordinat dengan sifat sewenang-wenang yang ditugaskan padanya).

Saat ini saya sedang mengkompilasi ulang game setiap kali saya membuat sedikit perubahan pada file peta saya untuk melihat apakah semuanya diposisikan dengan benar. Apakah ada cara bagi saya untuk membuat game saya memuat ulang level secara otomatis jika perubahan file peta terdeteksi? Apakah XNA bahkan memungkinkan untuk ini, atau apakah cara kerja pipa konten tidak memungkinkan untuk konten dinamis sedemikian rupa? Setiap tips atau saran sangat diterima.

Jawaban:


8

Saya menganggap file peta Anda diproses melalui Jalur Pipa Konten, dan kemudian dimuat saat runtime dengan Content.Load. Anda memiliki dua opsi:

  • Simpan peta Anda sebagai file XML, melalui IntermediateSerializer.Serialize. Kemudian, saat runtime, Anda dapat membacanya dengan IntermediateSerializer.Deserialize untuk melihat perubahan.
  • Ini lebih sulit: memanggil MSBuild saat runtime untuk mengkompilasi ulang file Anda ke XNB yang benar, dan memuatnya kembali dengan ContentManager. Sampel ini melakukan itu.

Di antara keduanya, aku yakin aku akan bisa menyelesaikan sesuatu. Terima kasih!
Christopher Horenstein

2

Anda juga bisa menggunakan Karvonite jika Anda ingin mendapatkan ini dan berjalan sangat cepat.

Ini adalah kerangka kerja ketekunan yang gesit. Saya tidak yakin apakah versi baru akan berfungsi pada windows phone 7 atau xbox.

Anda akan membuat definisi kegigihan dengan editor kegigihan mereka (cukup mudah, Anda hanya mengimpor perakitan dan memeriksa bidang / properti di kelas / struktur yang Anda inginkan tetap ada) Anda memulai ObjectSpace dalam kode dan menambahkan / menghapus / mendapatkan objek dari itu . (benda-benda ini bertahan)

Jika Anda bisa membuat abstraksi sehingga mesin ubin atau apa pun yang Anda sebut tidak peduli persis bagaimana mendapatkan peta, hanya saja mendapatkan abstraksi yang diminta. Kemudian Anda bisa kembali dan menggunakan XmlSerializer atau yang Menengah. (mana saja yang Anda suka) Yang harus Anda lakukan untuk mengimplementasikan serializers lain adalah membuat implementasi lain dari abstraksi (antarmuka atau kelas abstrak).

Saya pikir ada contoh bagaimana membangun konten saat runtime di situs web klub pembuat XNA. Mungkin tidak dibangun dengan kerangka kerja terbaru. Dengan begitu Anda bisa menyimpan kode lama Anda jika sudah menggunakan pipa konten. Berikut tautannya: Winform Series 2: Memuat Konten


Saya merasa agak konyol menanyakan hal ini, tetapi dapatkah Anda menggambarkan seperti apa Anda membayangkan alur kerja menggunakan kerangka kerja ini? Kedengarannya sangat rapi, tetapi saya tidak yakin bagaimana cara mendekatinya.
Christopher Horenstein

1
Nah, Anda mendefinisikan serialisasi di editor kegigihan mereka. (sangat mudah, Anda hanya mengimpor rakitan objek Anda dan memeriksa beberapa kotak pada struktur / kelas dan bidang / properti yang ingin Anda pertahankan) Setelah Anda selesai melakukannya, Anda hanya dapat menginisialisasi ruang objek yang akan membuat cerita bersambung / deserialisasi objek Anda . Cukup rapi dan cepat untuk bangkit dan berlari.
Michael Coleman

1
Anda juga dapat melihat proyek ini pada codeplex untuk contoh yang lebih baik tentang bagaimana membangun konten di luar studio visual. ( xnadevru.codeplex.com/… )
Michael Coleman
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.