Không, tốc độ khung hình không ảnh hưởng đến tốc độ - trò chơi sẽ hoàn toàn xoay quanh hiệu suất video của họ, điều này thật tai hại (ngay cả khi bạn giới hạn tốc độ, bạn không thể kiểm soát những người có hệ thống sẽ chạy trò chơi ở tốc độ một nửa).
Bạn đang gặp phải vấn đề này vì bạn đã làm sai điều gì đó: Các thói quen cập nhật / kết xuất của bạn chạy hết lần này đến lần khác càng nhanh càng tốt, với các đối tượng cập nhật trên cơ sở mỗi cuộc gọi (do đó khi tốc độ cuộc gọi bị lệch, thì tốc độ cuộc gọi cũng vậy).
Cách tiếp cận dựa trên thời gian
Cách chính xác để làm điều này là cập nhật các đối tượng trên cơ sở mỗi giây .
Ví dụ, hãy xem xét một viên đạn: Ngay bây giờ, nó có thể biết nó cần bao nhiêu để di chuyển trên mỗi khung hình. Bạn cần biến điều này thành bao nhiêu nó di chuyển mỗi giây . Làm thế nào bạn làm điều đó thực sự không quá phức tạp.
Đầu tiên, viên đạn của bạn sẽ được cập nhật nhiều hơn một lần mỗi giây, vì vậy chúng tôi cần thực sự cập nhật nó cứ sau vài mili giây. Mỗi lần bạn cập nhật công cụ vật lý của mình, một số mili giây nhất định đã trôi qua kể từ lần cập nhật cuối cùng: đây được gọi là thời gian delta , thường là dt . Dt được xác định trước khi cập nhật tất cả các đối tượng, sau đó tất cả các đối tượng cập nhật bằng cách sử dụng cùng một dt để giữ đồng bộ. Dt thường được truyền dưới dạng đối số cho từng đối tượng trong lệnh gọi cập nhật của nó.
Trong vật lý bước cố định, dt là một số cố định, trong khi trong vật lý bước biến, dt thay đổi tùy thuộc vào lượng thời gian thực tế kể từ lần cập nhật cuối cùng (do đó tên của chúng).
Điều đó đưa chúng tôi trở lại viên đạn của bạn. Nó được yêu cầu cập nhật với tốc độ 16 mili giây, đối với động cơ vật lý được cập nhật 60 lần mỗi giây: nếu viên đạn di chuyển 12 mét mỗi giây, bạn di chuyển nó (16.0/1000.0) * 12.0
trong mét trong bản cập nhật này.