Câu trả lời tốt nhất là: Nó phụ thuộc .
Bạn không phải giới hạn một trong hai
Cập nhật : Nếu các cập nhật của bạn không bị ràng buộc ở giới hạn trên, thì logic trò chơi sẽ phụ thuộc vào thời gian delta lượng , để tránh chạy trò chơi nhanh hơn hoặc chậm hơn tùy thuộc vào máy chạy ở đâu. Đây là một cách tiếp cận rất phổ biến được sử dụng bởi nhiều trò chơi, nhưng nó không phải là cách duy nhất.
Kết xuất : Nếu kết xuất không bị giới hạn ở giới hạn trên, bộ đệm khung có thể được trình bày ở trạng thái không hoàn chỉnh hoặc sai, gây ra các hiện vật bị rách . Đây là lý do tại sao nhiều trò chơi sử dụng Đồng bộ hóa dọc (v-sync)
Bạn có thể giới hạn cả hai
Cập nhật : Một số trò chơi sử dụng dấu thời gian cố định cho một số hoặc tất cả các hệ thống chơi trò chơi của nó. Cách tiếp cận này hoạt động đúng như bạn đã mô tả. Số lượng Cập nhật mỗi giây được giới hạn ở giới hạn trên để đảm bảo mọi thứ không di chuyển quá nhanh trên một máy đỉnh cao. Điều này loại bỏ sự cần thiết cho thời gian delta. Một số ứng dụng tốt hơn với dấu thời gian cố định, một số ứng dụng có thời gian delta. Chọn cách tiếp cận nào sẽ phụ thuộc hoàn toàn vào chính xác những gì bạn đang cố gắng đạt được. Cuốn sách trực tuyến GameProgrammingPotypes có một chương dành riêng cho các vòng lặp trò chơi chạm vào cả hai kiến trúc.
Kết xuất : Khung hình mỗi giây nên được đặt ở giới hạn trên để tránh sự cố xé rách được đề cập ở trên, tuy nhiên, ứng dụng của bạn không nên cố gắng thực hiện thủ công với một số khóa CPU. Thay vào đó, hãy bật v-sync và để phần cứng bên dưới đồng bộ hóa với tốc độ làm mới màn hình. Bằng cách đó, trò chơi của bạn sẽ tương thích với các màn hình trong tương lai có thể hoạt động ở tần số cao hơn nhiều so với tần số 60Hz hiện tại. Điều đáng chú ý là nhiều game thủ, đặc biệt là những người tham gia điểm chuẩn, vẫn thích chạy mà không có v-sync để cho phép tốc độ khung hình cao nhất có thể. Vì vậy, việc cho phép bật hoặc tắt tính năng trong thời gian chạy là điều hợp lý.
Những gì bạn không nên giới hạn
Nếu trò chơi của bạn sử dụng cách tiếp cận dựa trên bỏ phiếu cho đầu vào của người dùng, ví dụ: gọi một getInput()
loại để cập nhật trạng thái bộ điều khiển trong bước cập nhật, thì điều này tốt hơn nếu không bị giới hạn. Hoặc nếu có giới hạn, sau đó đặt thành giới hạn trên rất cao. Bạn càng thường xuyên truy vấn đầu vào của người dùng và hành động theo nó, trò chơi sẽ càng "nhạy" và mượt mà hơn. Các trò chơi được gọi là 60Hz mà chúng ta nghe thấy hiện nay không cập nhật AI và tất cả các trạng thái trên thế giới với tốc độ đó, một số thậm chí không hiển thị nhanh như vậy, nhưng chúng truy vấn bộ điều khiển nhập ít nhất 60 lần mỗi giây và cập nhật hình đại diện cho người chơi. Cho rằng điều này chỉ thực sự phù hợp với các trò chơi hành động nhịp độ nhanh.