คำตอบสั้น ๆ : ไม่
เรื่องยาว:
เมื่อฉันเรียนรู้การเขียนโปรแกรมเกมในโรงเรียนเราได้รับการสอนให้ทำดังต่อไปนี้:
กำหนดอัตราเฟรมต่อวินาทีที่เราต้องการในเกม (ตัวอย่างเช่น 30)
เขียนโค้ดที่เพิ่ม 1 ถึงตัวนับสำหรับแต่ละช่วงเวลา (33 msec สำหรับ 30 fps) รหัสนี้จะทำงานพร้อมกันกับวงเกม
จากนั้นลูปเกมที่ทำการคำนวณสำหรับเกม (อัพเดตสถานะเกม) จะลดตัวนับเดียวกันลง 1 สำหรับแต่ละเฟรม แต่การคำนวณกราฟิกและการวาดภาพไปยังหน้าจอจะทำได้ก็ต่อเมื่อตัวนับนั้นเป็นศูนย์
ผลลัพธ์คืออัตราเฟรมกราฟิกจะปรับขึ้นอยู่กับว่า cpu จัดการกับการคำนวณในเกมได้ดีเพียงใด เมื่อไม่เกิดอะไรขึ้นในเกมการคำนวณนั้นทำได้ง่ายและอัตราเฟรมกราฟิกจะสูงกว่าการอัพเดทสถานะเกมจริง (โดยทั่วไปเป็นการสิ้นเปลืองเนื่องจากเราวาดสถานะเกมเดียวกันมากกว่าหนึ่งครั้งบนหน้าจอ)
แต่จากนั้นมีหลายสิ่งเกิดขึ้นในเกมซีพียูจะมีงานที่ต้องทำอีกมากและการอัพเดตสถานะของเกมจะถูกจัดลำดับความสำคัญผ่านการวาดลงบนหน้าจอ
ส่วนใหญ่เกมจะทำการอัปเดตตามอัตราที่กำหนด แต่จะปรากฏเป็น "ล่าช้า" เนื่องจากคุณจะไม่เห็นการอัปเดตแต่ละรายการบนหน้าจอ นี่อาจจะดีกว่าสำหรับเกมทั้งหมดที่ชะลอตัวลงเนื่องจากคุณบังคับให้วาดการอัพเดทแต่ละครั้งบนหน้าจอ
ทั้งหมดนี้ทำด้วย C ++ และไม่มีเอ็นจิ้นเกมหรือกราฟิกการ์ด ทุกอย่างวิ่งบนซีพียูแกนเดียว เราใช้ไลบรารีบางอย่างสำหรับกราฟิก 2 มิติ