JMS เหมาะกับเกมออนไลน์หรือไม่?

ฉันอยากจะรวบรวมเกมเล็กๆ ไว้ด้วยกันและนำมันมาออนไลน์ มันจะเป็นผู้เล่นหลายคน (โดยหลักการแล้วมันจะเป็น MMO แต่มันเป็นโปรเจ็กต์เสริม ดังนั้นฉันจะเลือก MO อิอิ) เนื้อหาค่อนข้างไม่สำคัญ ฉันกำลังวางแผนที่จะเขียนเกม (เซิร์ฟเวอร์และไคลเอนต์) ใน Java

ฉันกำลังพิจารณาตัวเลือกที่ฉันมีในการรับข้อมูลที่เชื่อถือได้ JMS จะเพียงพอสำหรับสิ่งนี้หรือไม่ ฉันต้องการอะไรเพิ่มเติม (ถ้าเป็นเช่นนั้น อะไร)? มีทางเลือกอื่นที่ดีกว่านี้ไหม?

ฉันเคยสร้างเกมมาบ้างแล้ว แต่ไม่มีผู้เล่นหลายคน ฉันทำงานกับแอปที่ใช้ JMS และมีบทช่วยสอนมากมาย ดังนั้นฉันจึงคิดว่ามันจะได้ผล...แต่ฉันก็เปิดกว้างสำหรับทุกสิ่งจริงๆ

ขอบคุณ!

แก้ไข: ดูเหมือนว่าฉันมีอะไรให้เรียนรู้มากมายเกี่ยวกับ JMS บางทีคำถามของฉันควรถูกเรียบเรียงใหม่เป็น: "การใช้งาน JMS แบบใดที่จะตอบสนองวัตถุประสงค์ของฉันสำหรับ MMO ได้ดีที่สุด"

เกณฑ์จนถึงขณะนี้:

  • ฟรี
  • ค่าใช้จ่ายต่ำ
  • ง่ายต่อการกำหนดค่า

person corsiKa    schedule 09.08.2010    source แหล่งที่มา


คำตอบ (3)


JMS จะถือว่าผู้เล่นของคุณทั้งหมดอยู่ในเครือข่ายท้องถิ่นเดียวกัน ฉันไม่คิดว่ามันจะได้ผลเช่นกันหากเกมของคุณเล่นผ่านอินเทอร์เน็ต

person duffymo    schedule 09.08.2010
comment
+1 สำหรับการไม่ต้องเดาอีกว่าผู้ใช้พยายามแก้ไขอะไร :) - person carlsborg; 10.08.2010
comment
ฉันเห็น. ดังนั้น JMS อาจทำงานได้ดีสำหรับการโต้ตอบระหว่างส่วนประกอบต่างๆ ของเซิร์ฟเวอร์ของฉัน แต่ไม่ใช่สำหรับการสื่อสารระหว่างเซิร์ฟเวอร์กับไคลเอนต์ หากเป็นเช่นนั้น คุณสามารถเสนอทางเลือกอื่นใดได้บ้าง - person corsiKa; 10.08.2010
comment
ActiveMQ มีการขนส่ง HTTP จริง ๆ ไม่แน่ใจว่าจะขยายขนาดได้อย่างไร แต่ควรทำเคล็ดลับเพื่อให้การเปิดตัวครั้งแรกของคุณออกอย่างรวดเร็ว http://activemq.apache.org/http-and-https-transports-reference.html - person carlsborg; 10.08.2010

อย่าลืมว่า JMS เป็น API และไม่ได้ระบุการใช้งาน ฉันสงสัยว่าสำหรับเกม คุณจะต้องมีการจัดส่งที่รวดเร็ว และการเลือกใช้งานอาจขึ้นอยู่กับคุณลักษณะซึ่งรวมถึงสิ่งนี้ด้วย

คุณอาจต้องการตรวจสอบ JGroups นอกจากการใช้งาน JMS แล้ว ยังสามารถกำหนดค่าได้มหาศาล และสามารถใช้เพื่อปรับใช้รูปแบบการส่งข้อความที่แตกต่างกันได้มากมาย คุณสามารถเลือกที่จะบังคับใช้ความน่าเชื่อถือ การสั่งซื้อ ฯลฯ และปรับแต่งสำหรับแอปพลิเคชัน / ไคลเอนต์ที่แตกต่างกัน ฯลฯ

person Brian Agnew    schedule 09.08.2010
comment
ฉันเห็น. ฉันจะแก้ไขคำถามของฉันตามนั้นโดยพิจารณาจากคำตอบที่รวดเร็วของ Google-fu ของคุณ - person corsiKa; 10.08.2010

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

person Jherico    schedule 09.08.2010
comment
ฉันสงสัยว่าภายใต้สถานการณ์ใดบ้างที่ฉันไม่จำเป็นต้องรับประกันการจัดส่ง หากมีใครพยายามเสกคาถา มันไม่สามารถ... ไม่ถึงเซิร์ฟเวอร์ได้! - person corsiKa; 10.08.2010
comment
เกม FPS มักใช้ UDP (ซึ่งไม่รับประกันการจัดส่งหรือการสั่งซื้อ) ในการสื่อสาร เนื่องจากทุกแพ็กเก็ตมีสถานะทั้งหมด (หรือส่วนใหญ่) และมีเพียงแพ็กเก็ตล่าสุดเท่านั้นที่คุ้มค่าในการประมวลผล หากคุณพลาดหนึ่งหรือสองแพ็กเก็ตจาก 100 แพ็กเก็ต ก็ไม่สำคัญ เพราะมันจะเป็นเพียงอาการสะอึกในแง่ของการเล่นเกมที่มองไม่เห็น - person Jherico; 10.08.2010
comment
นั่นอาจเป็นจริงสำหรับข้อมูลสถานะเกี่ยวกับสภาพแวดล้อมที่มาจากเซิร์ฟเวอร์ไปยังไคลเอนต์ แต่การกระทำของผู้ใช้ล่ะ นั่นไม่ต้องการความน่าเชื่อถือในระดับที่สูงกว่านี้หรือ? - person corsiKa; 10.08.2010
comment
คุณต้องการให้ได้รับการยอมรับ แต่ไม่จำเป็นต้องเป็นอะไรที่เหมือนกับการทำธุรกรรมในลักษณะที่ JMS เป็น การใช้งานแบบง่ายก็คือไคลเอนต์จะส่งสัญญาณ 'การกดยิงที่เวลา x' ซึ่งเป็นส่วนหนึ่งของแพ็กเก็ตจนกว่าจะได้รับแพ็กเก็ตกลับมาจากเซิร์ฟเวอร์เพื่อรับทราบการเปลี่ยนแปลงสถานะ มันยังคงมีลำดับความสำคัญน้อยกว่า JMS หรือแม้แต่ TCP - person Jherico; 10.08.2010
comment
คุณหยิบยกประเด็นที่ยอดเยี่ยมขึ้นมา - ฉันสามารถแยกแพ็กเก็ตที่มีลำดับความสำคัญสูงกว่าออกจากแพ็กเก็ตการรับรู้สถานะเบื้องหลังได้ ... คุณจะสามารถแนะนำไลบรารี Java ที่จัดการแนวคิดเหล่านี้ในลักษณะนามธรรมได้หรือไม่? - person corsiKa; 10.08.2010