Apakah kerangka kerja XNA sesuai untuk pemrograman sisi server?

11

Saya mencari untuk membuat MUD berbasis teks, jadi banyak elemen kerangka XNA tampaknya sesuai dengan apa yang saya butuhkan. Terutama hal-hal seperti loop permainan umum, jaringan, dll. Sepertinya XNA sangat erat dengan lingkungan interaktif dengan UI dan audio, jadi saya tidak yakin apakah itu cara yang tepat untuk pergi.

Apakah lebih mudah untuk hanya menciptakan kembali aspek-aspek ini dari diri saya sendiri, berusaha untuk menekuk kerangka XNA dengan apa yang saya butuhkan, atau apakah ada kerangka kerja yang lebih baik untuk jenis pekerjaan ini?

Agent_9191
sumber

Jawaban:

5

Saya tidak berpikir kerangka kerja XNA akan menawarkan Anda banyak digunakan untuk sisi server dari permainan berbasis teks, tidak. Anda harus melihat pustaka kelas .NET framework standar untuk kasus penggunaan itu.

Tapi sedikit memperluas pertanyaan, meskipun kerangka kerja XNA benar-benar ditujukan untuk pengembangan permainan 2d dan 3d di sisi klien, mungkin ada alasan untuk menggunakan bagian-bagian itu di sisi server dari permainan 2d atau 3d. Adalah umum untuk menggunakan kembali bagian-bagian dari mesin grafis pada server karena server memiliki kebutuhan untuk melakukan hal-hal seperti visibilitas dan pengujian tabrakan seperti halnya klien. Dalam skenario itu, jika mesin Anda telah menggunakan perpustakaan matematika dari XNA, Anda harus menautkannya dalam kode server Anda juga.

U62
sumber
3

Jika Anda menggunakan C #, Anda sebaiknya mempertimbangkan menggunakan WCF untuk memisahkan lapisan jaringan. MUD tidak akan memiliki banyak lalu lintas jaringan, relatif berbicara, jadi dengan rute ini bisa membuat segalanya lebih mudah bagi Anda. Saya telah menggunakan WCF untuk permainan strategi berbasis giliran, dan itu bekerja dengan cukup baik untuk saya.

Mike Strobel
sumber
1
Secara umum saya setuju, tetapi WCF tidak mendukung telnetkoneksi langsung . Untuk MUD berbasis teks biasa, memungkinkan pengguna untuk telnetke server diberikan.
Agent_9191
@ Agent_9191 Bergantung pada tujuan Anda, masuk akal untuk membuat telnetantarmuka menjadi lapisan di atas API yang lebih kuat, misalnya yang dibangun di atas WCF.
Cody Brocious
Tidakkah WCF memperkenalkan latensi, atau apakah Anda akan menggunakan pengikatan khusus yang berbicara tentang soket mentah?
Nate
Nah, jika dia membutuhkan antarmuka telnet, WCF mungkin bukan pilihan yang baik; Saya curiga itu akan berlebihan. Tapi saya tidak akan berpikir latensi akan menjadi masalah mengingat informasi yang dikirim bolak-balik akan relatif sederhana - tentu lebih sederhana daripada muatan banyak layanan web. Saya menggunakan WCF untuk gim strategi berbasis giliran yang cukup kompleks, dan saya belum memiliki masalah kinerja. Saya menjaga payload tetap kecil dengan serialisasi khusus, dan latensi tidak menjadi masalah karena pesan tidak sering dikirim bolak-balik (untuk proyek saya, sebagian besar pengiriman pesan terjadi di akhir setiap belokan).
Mike Strobel
1

Anda dapat memilih rute XNA dan hanya menggunakan elemen tertentu yang Anda inginkan (audio, jaringan, dll.); tetapi, ini meningkatkan kompleksitas proyek Anda dan mengurangi "pemahaman langsung" Anda dari basis kode.

Pada dasarnya, saat Anda menambahkan lebih banyak middleware, pengetahuan Anda tentang cara kode Anda benar-benar beroperasi berkurang - kecuali jika Anda mempelajari implementasi middleware. Saat Anda menjauhkan diri, Anda kehilangan efisiensi, kemampuan, dan pemahaman.

Jadi, seperti yang dinyatakan di atas, akan jauh lebih bermanfaat bagi Anda untuk menggunakan C # dan pustaka non-XNA yang sesuai.

Jika Anda melakukan ini untuk membangun Anda sendiri, Anda bisa menggelindingkannya sendiri di tempat yang Anda minati - Anda akan belajar lebih banyak dengan cara ini.

Lakukan itu! Selamat bersenang-senang!

Grapsas AA
sumber
1

Ini sangat tergantung pada kebutuhan Anda.

Jika Anda tertarik untuk mendukung audio, undangan teman, dan lain-lain daripada yang saya percaya XNA adalah cara untuk pergi.

Batasan utama yang Anda hadapi dengan menggunakan XNA untuk jaringan adalah batas pemain 32 pemain per game.

Saat Anda mengembangkan game dengan kerangka kerja XNA, itu tidak mutlak harus digabungkan ke semua berbagai API. Banyak orang menggunakan kerangka kerja XNA tetapi mengandalkan kerangka kerja lain untuk jaringan.

Saran saya adalah untuk secara fisik (menuliskannya di notepad atau sesuatu) daftar kebutuhan dan keinginan Anda untuk aspek jaringan. Kemudian membandingkan dan membedakan berbagai kerangka kerja.

Krisc
sumber
-1

Saya condong ke arah mengatakan "buat dari awal", tapi itu hanya firasat berdasarkan bekerja dengan C # dan kode MUD secara terpisah. Anda akan memiliki lebih banyak kontrol dan belajar lebih banyak dari meluncurkan versi Anda sendiri apa pun yang mungkin dapat Anda gunakan dari XNA.

Adakah alasan Anda tidak menggunakan mesin MUD yang ada, setidaknya untuk referensi?

Andrew Brockert
sumber
Lakukan gelar saya menggunakan mesin yang ada untuk referensi. Saya mencoba untuk mem-porting basis kode SMAUG ke C # dari basis C yang ada. Jadi set fitur sebagian besar ditentukan, itu hanya membuatnya bekerja di C #.
Agent_9191