เกิดอะไรขึ้นเมื่อคอมพิวเตอร์ไม่สามารถรันโปรแกรมได้ทันเวลาที่ต้องทำ


0

พิจารณาเกมที่ใช้เห็บที่คอมพิวเตอร์ต้องการดำเนินการ 100 การดำเนินการทุกเห็บ จะเกิดอะไรขึ้นหากคอมพิวเตอร์สามารถดำเนินการได้ 50 ครั้งในช่วงเวลาเดียว?


1
ดู: gamedev.stackexchange.com/questions/56956/... หรือค้นหาคำว่า 'ติ๊ก'
horatio

ประเด็นที่สับสนคือคุณไม่ได้กำหนด "เห็บ" เห็บดังชี้ใน ลิงค์ก่อนหน้า อาจเป็นแบบไดนามิกหรือแบบคงที่ก็ได้ ดังนั้นหากคุณพูดว่าการทำเครื่องหมายถูกแก้ไขโดยการดำเนินการและคอมพิวเตอร์สามารถประมวลผลการปฏิบัติงาน 50 ครั้งต่อวินาทีแต่ละการติ๊กนั้นจะมีความยาว 2 วินาที
Doktoro Reichard

คำตอบ:


1

ขึ้นอยู่กับว่าคอมพิวเตอร์ทำอะไร ย้อนกลับไปแล้ววิดีโอเกมวิ่งเร็วเท่าที่โปรเซสเซอร์ทำ นั่นคือวิดีโอเกมเดียวกันที่ออกแบบมาสำหรับคอมพิวเตอร์ที่เล่นเป็นสองเท่าเนื่องจากคอมพิวเตอร์ที่เร็วจะทำงานเร็วกว่าสองเท่า ดังนั้นเพื่อหลีกเลี่ยงปัญหานี้คอมพิวเตอร์จึงมีปุ่ม "เทอร์โบ" ซึ่ง จำกัด ความเร็วของ CPU ดังนั้นเกมจะสามารถเล่นได้ (ลองเล่น tetris ที่ความเร็ว 500x)

คุณสามารถเห็นสิ่งที่ฉันหมายถึงในการดำเนินการ ที่นี่ ที่ผู้ชายเล่นกับนาฬิกาของเกมบอยนี้

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

ในสถานการณ์แรกเกมรัน ช้าลง . ในสถานการณ์ที่สองเกมรันเร็ว แต่ choppier .

ตอนนี้ถ้าคำถามของคุณเป็นจริง “ ฉันไม่ได้ควบคุมความเร็วของเกมหรือลดอัตราเฟรมหรือทำอะไรเพื่อหลีกเลี่ยงการนั่งสมาธิที่ซีพียูไม่สามารถทำทุกอย่างให้เสร็จสมบูรณ์เมื่อหมดเวลาติ๊กก็จบลงแล้วเริ่มใหม่อีกครั้ง

ถ้าเกมวนซ้ำคล้ายกัน:

  1. รับอินพุตคอนโทรลเลอร์
  2. คำนวณตำแหน่งของวัตถุเคลื่อนที่
  3. คำนวณการชนกัน
  4. วาดสถานการณ์และตัวละครส่วนใหญ่
  5. คำนวณค่าเสียหาย
  6. วาดโมเดลผู้เล่น
  7. วาดเสื้อผ้าผู้เล่น

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

หากซีพียูใช้งานได้แค่ 4 ครั้งรถที่วิ่งอยู่จะไม่ฆ่าคุณและจะผ่านคุณไป

ของหลักสูตรนี้ขึ้นอยู่กับการใช้งานเกมและฉันกำลังจินตนาการมากเกินไป


ที่จริงฉันคิดว่าคุณได้รับสิ่งนี้ย้อนหลัง คำตอบของคุณดีมากเมื่อคอมพิวเตอร์เร็วเกินไป OP กำลังถามว่าเกิดอะไรขึ้นเมื่อคอมพิวเตอร์อยู่ ช้าเกินไป .
a CVn

หากความเร็วเพิ่มขึ้นเป็นสองเท่าใน 2xCPU มันจะช้าลงเป็นสองเท่าใน 0.5xCPU
brunch875

สิ่งที่ทำให้ฉันไม่เข้าใจคือ: เมื่อเห็บเห็บหนึ่งผ่านไปและคอมพิวเตอร์ดำเนินการเพียง 1/2 การดำเนินการก็ไม่สามารถดำเนินการที่เหลือในการทำเครื่องหมายถัดไป ซึ่งหมายความว่าในทุกเห็บมีการสร้างการดำเนินงานมากขึ้นและมากขึ้นรอการดำเนินการและไม่สามารถหยุด Lag ไม่สามารถแก้มันได้
cdks

ไม่สามารถยกเลิกการดำเนินการใด ๆ ระหว่างเครื่องหมายถูกได้ ไม่ว่าคุณจะทำให้เกมช้าลงเพื่อให้ซีพียูสามารถทำมันลดจำนวนการดำเนินการหรือใช้อัตราเฟรมที่ต่ำกว่า (การทำงานระหว่างเฟรมเป็นจำนวนมาก แต่มีเฟรมน้อยกว่าที่จะทำในเวลาที่กำหนด)
brunch875

@cdks ฉันได้เพิ่มข้อมูลเกี่ยวกับสิ่งที่ฉันเชื่อว่าอาจเป็นคำถามของคุณ
brunch875

0

พิจารณาเกมที่ใช้เห็บที่คอมพิวเตอร์ต้องการดำเนินการ 100 การดำเนินการทุกเห็บ จะเกิดอะไรขึ้นหากคอมพิวเตอร์สามารถดำเนินการได้ 50 ครั้งในช่วงเวลาเดียว?

ขึ้นอยู่กับสิ่งที่เกิดขึ้นเมื่อเห็บหมดอายุและการดำเนินงานคืออะไร

หากเกมของคุณอยู่ในรูปของ Visual Basic ซึ่งมีเหตุการณ์จับเวลาปิดการดำเนินการและการดำเนินการของคุณเป็นขั้นตอนที่ใช้ในเกมแล้วตัวจับเวลาในตอนท้ายของ "ติ๊ก" จะดับลงอีกครั้ง .

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

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

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

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