พิจารณาเกมที่ใช้เห็บที่คอมพิวเตอร์ต้องการดำเนินการ 100 การดำเนินการทุกเห็บ จะเกิดอะไรขึ้นหากคอมพิวเตอร์สามารถดำเนินการได้ 50 ครั้งในช่วงเวลาเดียว?
พิจารณาเกมที่ใช้เห็บที่คอมพิวเตอร์ต้องการดำเนินการ 100 การดำเนินการทุกเห็บ จะเกิดอะไรขึ้นหากคอมพิวเตอร์สามารถดำเนินการได้ 50 ครั้งในช่วงเวลาเดียว?
คำตอบ:
ขึ้นอยู่กับว่าคอมพิวเตอร์ทำอะไร ย้อนกลับไปแล้ววิดีโอเกมวิ่งเร็วเท่าที่โปรเซสเซอร์ทำ นั่นคือวิดีโอเกมเดียวกันที่ออกแบบมาสำหรับคอมพิวเตอร์ที่เล่นเป็นสองเท่าเนื่องจากคอมพิวเตอร์ที่เร็วจะทำงานเร็วกว่าสองเท่า ดังนั้นเพื่อหลีกเลี่ยงปัญหานี้คอมพิวเตอร์จึงมีปุ่ม "เทอร์โบ" ซึ่ง จำกัด ความเร็วของ CPU ดังนั้นเกมจะสามารถเล่นได้ (ลองเล่น tetris ที่ความเร็ว 500x)
คุณสามารถเห็นสิ่งที่ฉันหมายถึงในการดำเนินการ ที่นี่ ที่ผู้ชายเล่นกับนาฬิกาของเกมบอยนี้
ทุกวันนี้วิดีโอเกมที่ดีจะตรวจสอบเวลาและปรับตำแหน่งของรถที่กำลังเคลื่อนที่โดยดูที่เวลา ดังนั้นหากเราอยู่ในช่วงเวลาหนึ่งและในอีก 2 วินาทีถัดไปก็ผ่านไป ... ขึ้นอยู่กับความเร็วของรถเราสามารถคำนวณได้ว่าควรจะอยู่ตรงไหนในตอนนี้
ในสถานการณ์แรกเกมรัน ช้าลง . ในสถานการณ์ที่สองเกมรันเร็ว แต่ choppier .
ตอนนี้ถ้าคำถามของคุณเป็นจริง “ ฉันไม่ได้ควบคุมความเร็วของเกมหรือลดอัตราเฟรมหรือทำอะไรเพื่อหลีกเลี่ยงการนั่งสมาธิที่ซีพียูไม่สามารถทำทุกอย่างให้เสร็จสมบูรณ์เมื่อหมดเวลาติ๊กก็จบลงแล้วเริ่มใหม่อีกครั้ง
ถ้าเกมวนซ้ำคล้ายกัน:
และซีพียูเท่านั้นที่ทำให้มันถึงจุด 6.5 จากนั้นคุณจะจบลงด้วยตัวละครที่ไม่มีตัวตนเปลือยเปล่า แต่เกมนั้นสามารถเล่นได้เหมือนกัน (หรือผิดพลาด)
หากซีพียูใช้งานได้แค่ 4 ครั้งรถที่วิ่งอยู่จะไม่ฆ่าคุณและจะผ่านคุณไป
ของหลักสูตรนี้ขึ้นอยู่กับการใช้งานเกมและฉันกำลังจินตนาการมากเกินไป
พิจารณาเกมที่ใช้เห็บที่คอมพิวเตอร์ต้องการดำเนินการ 100 การดำเนินการทุกเห็บ จะเกิดอะไรขึ้นหากคอมพิวเตอร์สามารถดำเนินการได้ 50 ครั้งในช่วงเวลาเดียว?
ขึ้นอยู่กับสิ่งที่เกิดขึ้นเมื่อเห็บหมดอายุและการดำเนินงานคืออะไร
หากเกมของคุณอยู่ในรูปของ Visual Basic ซึ่งมีเหตุการณ์จับเวลาปิดการดำเนินการและการดำเนินการของคุณเป็นขั้นตอนที่ใช้ในเกมแล้วตัวจับเวลาในตอนท้ายของ "ติ๊ก" จะดับลงอีกครั้ง .
หากคุณไม่ได้กำหนดไว้เป็นอย่างอื่นขั้นตอนการทำงานที่มีอยู่จะดำเนินต่อไป จะมี "ทับซ้อน" หากรหัสของคุณไม่ใช่ "reentrant" - ใช้ตัวแปรแบบคงที่ตลอดกระบวนการการเปลี่ยนแปลงที่ไม่คาดคิดในตัวแปรจะส่งผลให้ทั้งขั้นตอนการรันครั้งแรกและครั้งที่สอง สิ่งนี้จะทำให้ขั้นตอนการทำงานผิดปกติ
หากภาษาหรือกรอบงานที่คุณใช้ยุติขั้นตอนการทำงานครั้งแรกก่อนที่จะเริ่มอีกครั้งเมื่อเหตุการณ์ "ติ๊ก" หรือตัวจับเวลาเกิดขึ้นแน่นอนว่าสิ่งที่ควรทำในเห็บนั้นจะไม่เสร็จสมบูรณ์ หากตัวแปรบางตัวที่อยู่ท้ายสุดของเห็บนั้นหมายถึงการได้รับการปรับปรุงว่าเห็บถัดไปขึ้นอยู่กับขั้นตอนการทำงานจะไม่เป็นไปตามที่คาดไว้
บนคอมพิวเตอร์เก่าหรือระบบเกม "ติ๊ก" โดยทั่วไปแล้วจะเป็น IRQ หรือ NMI ที่สร้างขึ้นเมื่อชิปวิดีโอมีบางบรรทัดในการเรนเดอร์วิดีโอ เกมที่ดีถ้าพวกเขา "โอเวอร์โหลด" และไม่สามารถทำงานให้เสร็จสมบูรณ์ได้หรือ "เฟรม" ในกรณีนี้จะจำความจริงนั้นได้โดยใช้ธงที่ตรวจสอบเมื่อเริ่มต้นของแต่ละเฟรม ทำงานแนะนำการชะลอตัว แต่ไม่ล้มเหลว เมื่องานเสร็จสมบูรณ์แฟล็กจะถูกล้าง จะต้องมีการตรวจสอบที่จุดเริ่มต้นของ "ติ๊ก" แต่ละอัน