คำถามติดแท็ก replays

9
เกมที่กำหนดขึ้นมามีความเป็นไปได้อย่างไรในการเผชิญกับการไม่กำหนดระดับทศนิยม
เพื่อให้เกมเหมือนเครือข่าย RTS ฉันได้เห็นคำตอบมากมายที่นี่แนะนำให้ทำเกมที่กำหนดไว้อย่างสมบูรณ์ จากนั้นคุณจะต้องถ่ายโอนการกระทำของผู้ใช้ไปยังแต่ละอื่น ๆ และล่าช้าสิ่งที่ปรากฏเล็กน้อยเพื่อที่จะ "ล็อคใน" การป้อนข้อมูลของทุกคนก่อนที่จะแสดงเฟรมถัดไป ดังนั้นสิ่งต่าง ๆ เช่นตำแหน่งของยูนิตสุขภาพ ฯลฯ ไม่จำเป็นต้องได้รับการอัปเดตตลอดเวลาผ่านเครือข่ายเพราะการจำลองของผู้เล่นทุกคนจะเหมือนกันทุกประการ ฉันยังได้ยินสิ่งเดียวกันที่แนะนำสำหรับการทำรีเพลย์ อย่างไรก็ตามเนื่องจากการคำนวณจุดลอยตัวนั้นไม่ได้ถูกกำหนดระหว่างเครื่องหรือแม้แต่ระหว่างการรวบรวมโปรแกรมเดียวกันบนเครื่องเดียวกันสิ่งนี้เป็นไปได้จริงหรือ เราจะป้องกันความจริงที่ว่าทำให้เกิดความแตกต่างเล็กน้อยระหว่างผู้เล่น (หรือไกล) ที่กระเพื่อมตลอดทั้งเกมได้อย่างไร ฉันได้ยินบางคนแนะนำให้หลีกเลี่ยงจำนวนจุดลอยตัวทั้งหมดและใช้intเพื่อแสดงความฉลาดของเศษส่วน แต่นั่นไม่ได้ฟังดูเป็นประโยชน์สำหรับฉัน - ถ้าฉันต้องการตัวอย่างเช่นถ่ายมุมโคไซน์ของมุม? ฉันจำเป็นต้องเขียนห้องสมุดคณิตศาสตร์ทั้งหมดใหม่หรือไม่? โปรดทราบว่าฉันสนใจ C # เป็นหลักซึ่งเท่าที่ฉันสามารถบอกได้มีปัญหาเหมือนกับ C ++ ในเรื่องนี้

2
Ghost replay - การจัดเก็บและเวลา
ฉันกำลังเล่นเกมแข่งรถและเพิ่งใช้ผีสไปรต์เพื่อเล่นซ้ำการแข่งขันที่ผ่านมา ฉันใช้เครื่องมือฟิสิกส์และหลังจากอ่านมากฉันได้ข้อสรุปว่าวิธีที่ดีที่สุดในการจัดเก็บข้อมูลผีสำหรับการเล่นซ้ำจะเป็นการบันทึกตำแหน่งและการหมุนของรถตามเวลาที่ให้ไว้ตามตัวอย่างที่อธิบายไว้ที่นี่: https: // gamedev stackexchange.com/a/8380/26261 แต่จะเป็นวิธีที่ดีในการค้นหา timepoints เหล่านั้นในระหว่างการเล่นซ้ำอย่างไร ตัวอย่างจะเป็นบันทึกด้วยข้อมูลนี้: time: +3.19932 (seconds since race start) position: 180,40 (position at that time) rotation: 30.4 (rotation at that time) แต่ฉันมีปัญหาหลายประการ: เมื่อฉันเล่นซ้ำมันไม่น่าเป็นไปได้ที่ฉันจะได้รับไทม์พอยต์ที่แน่นอนที่ 3.19932 อีกครั้ง - มีโอกาสมากขึ้นที่ฉันจะมีไทม์พอยน์ประมาณ 3.1 และต้องค้นหาระเบียนที่ใกล้เคียงที่สุด เมื่อทำการสอดแทรกการจับคู่ที่ใกล้เคียงที่สุดที่อยู่ด้านบนและด้านล่าง ฟังดูไม่มีประสิทธิภาพและเสียเวลามาก? โครงสร้างรายการใดที่ฉันสามารถเก็บบันทึกเหล่านี้เพื่อเล่นซ้ำในภายหลัง อาร์เรย์หรือไม่ นั่นไม่ได้หมายความว่าเวลาค้นหาบันทึกที่ตรงกับเวลาที่แน่นอนจะเพิ่มการแข่งขันให้นานขึ้นหรือไม่? ฉันควรใช้ความถี่ใดสำหรับการจับเวลา แต่ละเฟรมจะเป็น - ฉันเดาว่า - มากไปหน่อย แต่ฉันควรบันทึกนั่นคือทุกเฟรมที่ n และการสอดแทรกระหว่างซึ่งทำให้คำถามที่เก็บใน …

2
ระบบเล่นซ้ำ: บันทึกอินพุตหรือเหตุการณ์?
ฉันอ่านสิ่งนี้: วิธีการออกแบบระบบเล่นซ้ำแต่มันไม่ได้ตอบคำถามของฉัน เกมของฉันสร้างขึ้นด้วยไคลเอนต์ "ดู" ของเกมเป็นโปรแกรมแยกจากเซิร์ฟเวอร์ "รุ่น" และ "ตัวควบคุม" (บิตเช่น mmo หรือเกมที่มีผู้เล่นหลายคนสร้างขึ้นด้วยวิธีนี้) ฝั่งเซิร์ฟเวอร์เป็น "ความจริง" ของเกมเสมอยอมรับเฉพาะคำขอการกระทำเป็นข้อมูลจากลูกค้าและเหตุการณ์เอาท์พุทและข้อความ "สถานะปัจจุบัน" รูปแบบและกฎของเกมได้รับการกำหนดอย่างสมบูรณ์ด้วยวัฏจักรการอัพเดท "ติ๊ก" ที่แน่นอนดังนั้นในฝั่งเซิร์ฟเวอร์ฉันสามารถบันทึกเหตุการณ์ที่ส่งไปยังมุมมองไคลเอนต์และคำขอการดำเนินการ ทั้งสองเกี่ยวข้องกับหมายเลขรอบเฉพาะ คำถามคือ: ในกรณีนี้เพื่อติดตั้งระบบเล่นซ้ำฉันควรใช้อินพุตหรือคำขอการกระทำของผู้ใช้ (ตามที่แนะนำในที่นั่น) หรือเหตุการณ์? ฉันคิดว่าทั้งคู่จะให้ผลลัพธ์ที่เหมือนกันทั้งหมด ความแตกต่างเดียวที่ฉันเห็นคือ: เหตุการณ์ให้ผลผลิตจริงในขณะที่คำขอการดำเนินการจะต้องดำเนินการเพื่อให้เหตุการณ์ คำขอการดำเนินการอาจมีข้อมูลน้อยกว่าที่จะบันทึก มีสิ่งอื่นที่ต้องพิจารณาอีกไหม?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.