ผู้ให้บริการเกมควรเป็นผู้มีอำนาจหรือเป็นลูกค้าใบ้อีกคน


15

เมื่อออกแบบเกมแบบผู้เล่นหลายคนในเครือข่ายที่ผู้เล่นคนหนึ่งเป็นเจ้าภาพและคนอื่น ๆ เชื่อมต่อมีสองวิธีที่ฉันรู้:

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

ข้อดี / ข้อเสียของแต่ละข้อคืออะไร? ใช้บ่อยที่สุด (หรือแตกต่างกันไปตามประเภท / ขนาดของเกม)


กรณีแรกที่คุณอธิบายอาจเป็นรูปแบบหนึ่งของเครือข่าย P2P (กับลูกค้าที่เชื่อถือได้) และมักจะซับซ้อนกว่าและยากที่จะนำไปใช้และบำรุงรักษา
akaltar

คำตอบ:


13

วิธีการโง่ลูกค้าที่ดีที่สุดจากมุมมองการออกแบบที่บริสุทธิ์ - มัน จำกัด จำนวนของรหัสที่แตกต่างกันที่คุณต้องการระหว่างโฮสต์และลูกค้าและช่วยให้เซิร์ฟเวอร์ทำงานแบบอะซิงโครนัส ข้อเสียคือเครื่องของโฮสต์ต้องการทรัพยากรเพิ่มเติม - แต่ฉันคิดว่ามันทำเสมอ


8

ระหว่างตัวเลือกทั้งสองนี้วิธีการที่ทำให้ลูกค้าโง่นั้นดีที่สุดสำหรับเหตุผลที่ DeadMG กล่าวถึง

มีตัวเลือกอื่นที่ทำให้ลูกค้าทุกคนมีสิทธิ์ แต่ก็มีข้อได้เปรียบของลูกค้าโง่ที่เพื่อนทุกคนแบ่งปันรหัสเดียวกัน ข้อดีอีกอย่างคือมันอาจจะยุติธรรมมากกว่านี้ถ้าคุณตั้งกฎที่ถูกต้องเพราะไม่มีใครได้เปรียบ 0-lag-to-server

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

Googling Peer-2-Peer หลายคนอาจให้รายละเอียดเพิ่มเติมเกี่ยวกับวิธีการนี้


1
gamedev.stackexchange.com/questions/3887/…นี่คือข้อมูลเพิ่มเติม :)
michael.bartnett

น่าสนใจ โพสต์นั้นอ้างว่านี่เป็นวิธีที่ "ชื่อกลยุทธ์ส่วนใหญ่" ใช้เครือข่าย นี่เป็นเรื่องจริงหรือ นี่เป็นวิธีการเช่น Command และ ConquerและStarcraftทำงานอย่างไร
BlueRaja - Danny Pflughoeft

@ BlueRaja นี่เป็นวิธีการของ Starcraft ใช่ ในตาร์คราฟไม่มีอำนาจใด ๆ เลย Warcraft III และ Starcraft II มีรูปแบบการแลกเปลี่ยนข้อความแบบรวมศูนย์ความล่าช้าและการยกเลิกการเชื่อมต่อ แต่โดยพื้นฐานแล้วจะเหมือนกันในกรณีที่ไคลเอนต์แต่ละรายมีสถานะเกมเป็นของตัวเอง
Rotsor

ข้อดีอีกประการของรูปแบบเครือข่ายนี้คือช่วยให้สามารถรองรับสถานะโลกที่ใช้ร่วมกันที่มีขนาดใหญ่และมีทราฟฟิกการซิงโครไนซ์น้อยที่สุด
Rotsor

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