ฉันกำลังทำ iphone shmup และพยายามตัดสินใจว่าจะใช้ loop ของเกมประเภทใด ฉันต้องการใช้การประทับเวลาแบบกึ่งถาวรหรือการประทับเวลาแบบคงที่ทั้งหมด
ด้วยการประทับเวลากึ่งถาวรฉันจะทำการโทรเป็นศูนย์หรือมากกว่า (FIXED_INTERVAL) การโทรตามด้วยการอัพเดทหนึ่งครั้ง (dt) การโทรโดยที่ dt <= FIXED_INTERVAL ต่อการวนรอบเกม ตามที่ฉันเข้าใจข้อเสียของวิธีนี้ก็คือตรรกะการอัปเดตทางฟิสิกส์ของฉัน (dt) จะเป็นเรื่องยากมากขึ้นในการเขียนโปรแกรมเพราะโดยทั่วไปฉันต้องสมมติตัวแปร dt สำหรับการอัพเดททุกครั้ง และจากนั้นฉันก็ได้ยินว่าการวิ่งในเกมของฉันแต่ละครั้งจะแตกต่างกันเล็กน้อยเนื่องจากค่าจุดลอยตัวไม่เหมือนกันทุกครั้ง
จากนั้นด้วยการประทับเวลาที่แก้ไขอย่างสมบูรณ์ฉันกำลังโทรหาการปรับปรุงอย่างน้อยหนึ่งครั้ง (FIXED_INTERVAL) ตามด้วยการแก้ไขหนึ่งครั้ง (dt / FIXED_INTERVAL) โดยที่ dt <FIXED_INTERVAL ต่อการวนรอบเกม
ดังนั้นดูเหมือนว่าการตัดสินใจครั้งใหญ่ที่ฉันต้องทำคือ: ฉันต้องการจัดการกับความท้าทายในการใช้การอัปเดต (dt) กับตัวแปร dt หรือฉันต้องการจัดการกับความท้าทายในการนำการแก้ไขมาใช้หรือไม่
ตอนนี้จากสิ่งที่ฉันได้อ่านผู้คนส่วนใหญ่บอกว่าใช้การแก้ไขอย่างเต็มที่และทำการแก้ไข แต่เมื่อฉันคิดเกี่ยวกับการใช้การแก้ไขดูเหมือนว่าฉันจะซับซ้อนกว่าการอัพเดต (dt) ด้วยตัวแปร dt นี่เป็นเพราะถ้าฉันใช้การแก้ไขฉันต้องจำทั้งสถานะก่อนหน้าและสถานะปัจจุบัน ดังนั้นถ้าฉันต้องการใช้การแก้ไขฉันต้องหาเลเยอร์ทางอ้อมเพิ่มเติมที่เป็นนามธรรมออกมาจากแต่ละเกม ในขณะที่มีการประทับเวลากึ่งถาวรที่ฉันไม่ต้องใช้การแก้ไขฉันไม่จำเป็นต้องมีสถานะเกมที่เป็นนามธรรมเพราะมีเพียงหนึ่งสถานะเกมเสมอและเป็นเพียง "อาร์เรย์ทั่วโลก" ที่เป็นตัวแทนศัตรูของฉันและศัตรู กระสุน ฯลฯ
ดังนั้นสิ่งที่เป็นทางเลือกที่เป็นประโยชน์มากขึ้น: ฉันจะใช้มันแบบกึ่งถาวรหรือไม่โดยรู้ว่าการอัพเดตทางฟิสิกส์ของฉันอาจซับซ้อนกับตัวแปร dt หรือฉันจะใช้การแก้ไขอย่างเต็มที่และพยายามหานามธรรมของเกมเพื่อให้ฉันสามารถติดตามสถานะก่อนหน้าและสถานะปัจจุบันเพื่อทำการแก้ไขได้หรือไม่