กรอบงาน XNA เหมาะสมกับการเขียนโปรแกรมฝั่งเซิร์ฟเวอร์หรือไม่


11

ฉันกำลังมองหาการสร้างข้อความที่ใช้ MUD ดังนั้นองค์ประกอบจำนวนมากของกรอบ XNA ดูเหมือนจะเหมาะสมกับสิ่งที่ฉันต้องการ โดยเฉพาะอย่างยิ่งสิ่งต่าง ๆ เช่นวนเกมทั่วไประบบเครือข่าย ฯลฯ ดูเหมือนว่า XNA จะถูกผนวกเข้ากับสภาพแวดล้อมแบบโต้ตอบกับ UI และเสียงดังนั้นฉันไม่แน่ใจว่ามันเป็นวิธีที่ถูกต้องหรือไม่

มันจะง่ายขึ้นหรือไม่ที่จะสร้างมุมมองประเภทนี้ใหม่ขึ้นมาเองลองโค้ง XNA ตามที่ฉันต้องการหรือมีกรอบที่ดีกว่าสำหรับงานประเภทนี้

คำตอบ:


5

ฉันไม่คิดว่าเฟรมเวิร์ก XNA จะให้ประโยชน์แก่คุณมากสำหรับฝั่งเซิร์ฟเวอร์ของเกมที่ใช้ข้อความ คุณควรดูที่คลาสไลบรารี. NET Framework มาตรฐานสำหรับเคสที่ใช้

แต่การขยายคำถามออกไปเล็กน้อยแม้ว่าเฟรมเวิร์ก XNA นั้นมีจุดประสงค์เพื่อการพัฒนาเกม 2D และ 3d แบบไคลเอนต์ แต่อาจมีสาเหตุมาจากการใช้ชิ้นส่วนเหล่านั้นบนฝั่งเซิร์ฟเวอร์ของเกม 2d หรือ 3d เป็นเรื่องปกติที่จะใช้ชิ้นส่วนของเอ็นจิ้นกราฟิกบนเซิร์ฟเวอร์อีกครั้งเนื่องจากเซิร์ฟเวอร์มีความจำเป็นต้องทำสิ่งต่าง ๆ เช่นการมองเห็นและการชนกันของการทดสอบเช่นเดียวกับที่ลูกค้าทำ ในสถานการณ์สมมตินั้นหากเอ็นจินของคุณใช้ไลบรารี่คณิตศาสตร์จาก XNA คุณจะต้องเชื่อมโยงกับโค้ดเซิร์ฟเวอร์ของคุณด้วย


3

หากคุณกำลังใช้ C # คุณควรพิจารณาใช้ WCF เพื่อสรุปเลเยอร์เครือข่าย โคลนจะไม่มีการรับส่งข้อมูลเครือข่ายทั้งหมดค่อนข้างพูดดังนั้นการใช้เส้นทางนี้อาจทำให้คุณง่ายขึ้นมาก ฉันใช้ WCF สำหรับเกมวางแผนเทิร์นเบสและมันก็ค่อนข้างดีสำหรับฉัน


1
โดยทั่วไปฉันเห็นด้วย แต่ WCF ไม่สนับสนุนการtelnetเชื่อมต่อโดยตรง สำหรับ MUD ที่ยึดตามข้อความเป็นประจำจะอนุญาตให้ผู้ใช้ไปtelnetยังเซิร์ฟเวอร์
Agent_9191

@ Agent_9191 ขึ้นอยู่กับเป้าหมายของคุณมันอาจจะเหมาะสมที่จะให้telnetอินเตอร์เฟซเป็นเลเยอร์ด้านบนของ API ที่มีประสิทธิภาพมากขึ้นเช่นหนึ่งที่สร้างขึ้นบน WCF
Cody Brocious

WCF จะไม่แนะนำเวลาแฝงหรือคุณจะใช้การเชื่อมแบบกำหนดเองที่พูดถึงซ็อกเก็ตดิบหรือไม่
เนท

ถ้าเขาต้องการอินเตอร์เฟส telnet WCF อาจไม่ใช่ตัวเลือกที่ดีอยู่ดี ฉันสงสัยว่ามันเกินความจริงแล้ว แต่ฉันไม่คิดว่าเวลาแฝงจะเป็นปัญหาเมื่อพิจารณาจากข้อมูลที่ส่งไปมานั้นค่อนข้างง่าย - แน่นอนว่าง่ายกว่าเพย์โหลดของบริการบนเว็บมากมาย ฉันใช้ WCF สำหรับเกมวางกลยุทธ์ที่ค่อนข้างซับซ้อนและไม่มีปัญหาเรื่องประสิทธิภาพ ฉันรักษาส่วนของข้อมูลให้เล็กด้วยการจัดลำดับที่กำหนดเองและความหน่วงแฝงไม่ใช่ปัญหาเพราะข้อความไม่ได้ถูกส่งไปมาบ่อยมาก (สำหรับโครงการของฉันการส่งข้อความส่วนใหญ่เกิดขึ้นในตอนท้ายของแต่ละรอบ)
Mike Strobel

1

คุณสามารถไปเส้นทาง XNA และใช้องค์ประกอบเฉพาะที่คุณต้องการ (เสียงระบบเครือข่าย ฯลฯ ); แต่มันเป็นการเพิ่มความซับซ้อนของโครงการของคุณและลด "ความเข้าใจทันที" ของ codebase

โดยทั่วไปเมื่อคุณเพิ่มมิดเดิลแวร์มากขึ้นความรู้ของคุณเกี่ยวกับวิธีการใช้งานโค้ดของคุณจะลดน้อยลงเว้นแต่ว่าคุณได้เจาะลึกถึงการใช้มิดเดิลแวร์ เมื่อคุณออกห่างจากตัวคุณจะสูญเสียประสิทธิภาพความสามารถและความเข้าใจ

ดังนั้นตามที่ระบุไว้ข้างต้นมันจะมีประโยชน์มากกว่าสำหรับคุณในการใช้ C # และไลบรารี่ที่ไม่ใช่ XNA

หากคุณกำลังทำสิ่งนี้เพื่อการจรรโลงใจของคุณเองคุณอาจจะกลิ้งตัวเองในจุดที่คุณสนใจในพื้นที่ - คุณจะได้เรียนรู้วิธีนี้มากขึ้น

ไปเลย! มีความสุข!


1

ส่วนใหญ่ขึ้นอยู่กับความต้องการของคุณ

หากคุณมีความสนใจในการสนับสนุนเสียงเพื่อนชวนและอื่น ๆ กว่าที่ฉันเชื่อว่า XNA เป็นวิธีที่จะไป

ข้อ จำกัด ที่สำคัญที่คุณต้องเผชิญกับการใช้ XNA สำหรับเครือข่ายคือขีด จำกัด ของผู้เล่น 32 ผู้เล่นต่อเกม

เมื่อคุณพัฒนาเกมที่มีเฟรมเวิร์ก XNA คุณไม่จำเป็นต้องเชื่อมโยงกับ API ที่หลากหลายทั้งหมด หลายคนใช้เฟรมเวิร์ก XNA แต่พึ่งพาเฟรมเวิร์กอื่นสำหรับการสร้างเครือข่าย

ข้อเสนอแนะของฉันคือร่างกาย (จดไว้ในแผ่นจดบันทึกหรืออะไรก็ได้) ทำรายการความต้องการของคุณและต้องการด้านเครือข่าย จากนั้นเปรียบเทียบและตัดกันกรอบต่างๆ


-1

ฉันโน้มตัวไปพูดว่า "สร้างตั้งแต่เริ่มต้น" แต่นั่นเป็นเพียงความรู้สึกที่ดีจากการทำงานกับ C # และรหัส MUD แยกกัน คุณจะสามารถควบคุมได้มากขึ้นและเรียนรู้เพิ่มเติมจากการม้วนเวอร์ชั่นของคุณเองในสิ่งที่คุณสามารถใช้จาก XNA ได้

เหตุผลใดที่คุณไม่ได้ใช้เครื่องมือ MUD ที่มีอยู่อย่างน้อยก็เพื่อการอ้างอิง?


ทำระดับฉันใช้เครื่องยนต์ที่มีอยู่สำหรับการอ้างอิง ฉันพยายามที่จะพอร์ตฐานรหัส SMAUG ไปยัง C # จากฐาน C ที่มีอยู่ ดังนั้นการกำหนดคุณสมบัติส่วนใหญ่จึงเป็นเพียงแค่ทำให้มันทำงานใน C #
Agent_9191
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.