เรียกใช้เกม XNA โดยไม่มีกราฟิก


11

หากยังสงสัยว่าจะมีเกม XNA อยู่หรือไม่โดยไม่แสดงผลใด ๆ

ฉันมีเกมที่ใช้งานได้ซึ่งทำงานในการติดตั้งเซิร์ฟเวอร์ของลูกค้าโดยที่ผู้เล่นหนึ่งคนเป็นโฮสต์และคนอื่น ๆ สามารถเชื่อมต่อกับเกมของเขาได้

ตอนนี้ฉันต้องการที่จะเรียกใช้เกมเป็นโฮสต์บนเซิร์ฟเวอร์ที่ถูกถอดรหัสโดยไม่มีการ์ดกราฟิกโดยทั่วไปฉันไม่ต้องการเรียกใช้ตรรกะ Draw () เลย

ฉันต้องผ่านทั้งเกมจริงๆและลบการอ้างอิงทั้งหมดไปยัง XNA หรือไม่?

ผู้คนทำสิ่งนี้อย่างไร

แก้ไข : เหตุผลที่ฉันต้องการทำเช่นนี้เพราะฉันมีการติดตั้งเซิร์ฟเวอร์ลูกค้าที่ใช้งานได้ในเกมและฉันไม่ต้องการสร้างโปรแกรมเซิร์ฟเวอร์ "หัวขาด" แยกต่างหาก


ทำไมคุณไม่สามารถเขียนโค้ดในDrawแบบที่ชอบได้if (headless) { return; }?
ashes999

1
@ asher999 ไม่แน่ใจว่าจะลบลอจิกและกราฟิกทั้งหมดออกจากเกมหรือไม่ เซิร์ฟเวอร์เสมือนอาจไม่มีอะแดปเตอร์กราฟิกใด ๆ เลย
JensB

การเปลี่ยนประเภทเอาต์พุตหรือการวาดแบบข้ามจะไม่เป็นการลบการพึ่งพา XNA ของอุปกรณ์กราฟิกอย่างน่าอัศจรรย์ หากคุณกำลังโหลดเนื้อหาใด ๆ ที่ต้องใช้อุปกรณ์กราฟิก (โดยเฉพาะพื้นผิว) มีโอกาสที่ดีมากที่จะไม่สามารถโหลดโดยใช้หนึ่งในวิธีแก้ไขปัญหาที่เสนอ
dadoo Games

คำตอบ:


10

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


1
ฉันคาดเดาว่าคุณเขียน wrapper ที่ทำหน้าที่เหมือน XNA ที่เรียกวิธีการที่จำเป็นเช่น Update for you? ฉันจะให้ไปนี้ขอบคุณ
JensB

2

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


1
ฉันให้เหตุผลหนึ่งข้อกับคุณ: การทดสอบหน่วย บ่อยครั้งที่คุณต้องการทดสอบชิ้นส่วนหรือส่วนของรหัสโดยไม่ต้องโหลดหรือวาดและกราฟิก
Stephen Tierney

3
@StephenTierney ฉันสามารถให้เหตุผลอีกอย่างหนึ่งกับเขา: เขาไม่ได้พยายามเขาพยายามเรียกใช้เซิร์ฟเวอร์เกม (บนเครื่องโดยเฉพาะ) โปรดอ่านคำถามอีกครั้งและพิจารณานำ downvote ของคุณกลับมา
Vaughan Hilts


1

เพื่อสร้างตามคำแนะนำของผู้ไม่มีชื่อคุณสามารถรวมการอ้างอิงถึง DLLs และใช้โดยไม่ต้องใช้ลูปเกมเริ่มต้นใด ๆ สำหรับตัวอย่างนี้คุณสามารถดูชุดการสอน winforms ในสโมสรผู้สร้าง: http://xbox.create.msdn.com/en-us/education/catalog/sample/winforms_series_2

นอกจากนี้หากคุณต้องการจินตนาการมากขึ้นคุณสามารถแทนที่เกม XNA ทั้งหมดด้วยวงที่คุณกำหนดเองและควบคุมกระบวนการทั้งหมด สำหรับข้อมูลเพิ่มเติมเกี่ยวกับลักษณะนี้ที่ /programming/6361691/custom-xna-game-loop-in-windows


1

หากคุณเปลี่ยนประเภทผลผลิตของโครงการ XNA เป็น "แอปพลิเคชันคอนโซล" แอปพลิเคชันจะเปิดคอนโซลเปล่าเมื่อเริ่มต้นโดยไม่ต้องเปิดหน้าต่างเกมจริง สิ่งนี้อาจมีประโยชน์สำหรับสิ่งที่คุณพยายามทำให้สำเร็จเนื่องจากคุณต้องการทำการทดสอบและคุณสามารถใช้คอนโซลเป็นหน้าต่างดีบักได้ง่ายมาก


1

คุณสามารถพิจารณาแทนที่การอัพเดทและการโทรออก

นอกจากนี้อย่าเรียกกราฟิกอุปกรณ์ในคลาสเกมหลักของคุณซึ่งควรหยุดหน้าต่าง xna ไม่ให้ติดตั้งในเกมที่ทำหน้าที่เป็นเซิร์ฟเวอร์ของคุณ

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