เคล็ดลับในกลศาสตร์เกมเพื่อหลีกเลี่ยงการรับมือกับการชดเชยความล่าช้าของเครือข่าย?


20

การใช้การชดเชยความล่าช้าของเครือข่ายเป็นเรื่องยากจะหลีกเลี่ยงได้อย่างไร

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

เทคนิคเหล่านั้นคืออะไรและมีเกมใดบ้างที่มีอยู่ (MMORPG, กลยุทธ์, ... ) ที่ใช้เทคนิคดังกล่าว?

UPDATE:

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

เหตุผลหลักสำหรับฉันที่จะหลีกเลี่ยงการชดเชยความล่าช้าคือความเรียบง่าย


1
ลิงค์นี้อาจช่วยได้: developer.valvesoftware.com/wiki/Source_Multiplayer_Networking
John McDonald

6
หากคุณต้องการสร้างเกมที่แฝงอยู่นั้นไม่ใช่ปัญหา พิจารณาการสร้างบางสิ่งบางอย่างที่เปิดตามที่ยอมรับไม่กี่วินาที
Vaughan Hilts

3
ลิงก์ Valve นั้นเป็นข้อมูลเกี่ยวกับวิธีการที่ค่อนข้างซับซ้อนในการชดเชยความล่าช้าของเครือข่าย - ดังนั้นจึงเป็นสิ่งที่ตรงกันข้ามกับคำถามที่ถาม
Kylotan

@ JohnMcDonald ใช่ฉันรู้เกี่ยวกับบทความนั้นจาก Valve และตามที่ได้กล่าวไว้ - มันตรงกันข้ามกับสิ่งที่ฉันถาม :)
Alexey Petrushin

คุณอาจต้องการดู GGPO เช่นกัน: ggpo.net
Decency

คำตอบ:


16

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

  • เสียงส่วนต่อประสาน (เช่นคลิกปุ่ม)
  • เสียงในโลก (เช่นตัวละครพูดว่า "ในทันทีผู้บัญชาการ")
  • แอนิเมชั่น (เช่นเริ่มเหวี่ยงดาบ)

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

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

  • เปลี่ยนกลไกการบังคับเลี้ยวด้วยกลไกการเดิน
  • แทนที่กลศาสตร์การเล็งด้วยกลไกการเลือกเป้าหมาย
  • แทนที่คำแนะนำการต่อสู้แบบต่อรอบด้วยแผนยุทธวิธีหรือแผนกลยุทธ์เพิ่มเติม
  • แทนที่การเล่นเกมแบบเรียลไทม์ / ต่อเนื่องด้วยระบบแยก / เปิดตาม

1
ขอขอบคุณคุณทำให้สิ่งที่ฉันถามเกี่ยวกับ - ใช้งานไม่บ่อยและรอการตัดบัญชีจากผู้เล่น คงน่าสนใจที่จะเห็นเกมจริงที่ใช้งาน
Alexey Petrushin

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

7

ความคิดสุ่ม:

  1. โกง: การใช้จรวด จรวดระเบิดในรัศมีปิดบังความแปลกประหลาดใด ๆ
  2. โกง: กำหนดผลลัพธ์ไว้ล่วงหน้าและบังคับให้เงื่อนไขนั้นเกิดขึ้นทางสายตา
  3. โกง: การโจมตีต้องใช้เวลาซ่อนความล่าช้าใน atk + anim + ความไม่ต่อเนื่องของผล
  4. โกง: ตัดการเชื่อมต่อข้อเสนอแนะในท้องถิ่นจากเนื้อหาระบบเครือข่าย
  5. โกง: VFXหรือกิจกรรมบนหน้าจอที่ครอบคลุมความแปลกประหลาดมากมาย
  6. ใช้การออกแบบการตอบสนองที่ต้องการความละเอียดก่อนดำเนินการต่อ

ดังนั้นใช่โกงมาก


4

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

  1. สร้างเกมตามแบบเลี้ยว ในเกมประเภทนี้ไม่จำเป็นต้องป้อนข้อมูลรัฐแบบเรียลไทม์และผู้เล่นคนอื่นสามารถผลักสถานะของเกมเข้าสู่ลูกค้าของพวกเขาเมื่อถึงคราวของพวกเขา สิ่งนี้จะช่วยลดแรงกดดันต่อเครือข่ายและช่วยให้การหน่วงเวลาช้ากว่าสองสามวินาทีหากต้องการ อารยธรรมเป็นเกมที่มีพื้นฐานมาแล้วซึ่งเป็นที่นิยมมากและอยู่ในสายกลยุทธ์
  2. ให้การตัดสินใจของผู้เล่นคนอื่นกระทบน้อยที่สุด หากเกมของคุณมีกลยุทธ์และไม่สามารถเล่นแบบเลี้ยวได้ให้ลองลดผลกระทบของแพ็กเก็ตล่าช้า ลูกค้าสามารถจำลองสถานการณ์ได้มากที่สุดหรือไม่? ตัวอย่างคือเกมวางแผนที่เล่นคนเดียวชั่วขณะหนึ่งหลังจากนั้นพูดเป็นเวลา 16 นาทีจำลองกับผู้เล่นคนอื่น (อาจเป็นเกมต่อสู้ที่ผู้เล่นส่งกองทหารไปทุกช่วงเวลา x และรายงานกลับทุกช่วงเวลา y

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


4

คุณสามารถทำให้ล้าหลังเป็นส่วนหนึ่งของการเล่นเกมของคุณเพราะ "ความจริง" สมมติว่าผู้เล่นของคุณมีจุดประสงค์เพื่อควบคุมหุ่นยนต์บางตัวจากระยะไกลคุณสามารถบังคับให้ความล่าช้าเป็นอย่างน้อย 500ms หรือ 1 วินาที (คุณต้องใช้ระบบเพิ่มความล่าช้าแบบไดนามิก)


นี่เป็นการบิดที่ดี
o0 '

0

นอกจากนี้ยังเป็นเคล็ดลับที่ดีเพียงซ่อนการกระทำของผู้เล่น เกม FPS จำนวนมากทำสิ่งนี้อย่างแน่นอน พวกเขาไม่แสดงภาพใด ๆ ของกระสุนส่วนใหญ่ที่เล่นเฉพาะเสียงเท่านั้นและคุณจะได้รับผลลัพธ์ในรูปแบบของความเสียหายที่เกิดกับผู้เล่น

ฉันเล่นเกม FPS บางเกมที่มีอาวุธความแม่นยำสูง (พลซุ่มยิงและอื่น ๆ ) มีเอฟเฟกต์ภาพที่ชัดเจนมากและคุณสามารถเห็นได้ว่าผู้เล่นคนอื่นยิงคุณ แต่เพราะการชดเชยความล่าช้าที่คุณถูกฆ่า

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