Gần đây tôi đã xử lý một số vấn đề gây nhiễu tốc độ khung hình với trò chơi của mình và có vẻ như giải pháp tốt nhất sẽ là giải pháp được đề xuất bởi Glenn Fiedler (Gaffer on Games) trong Fix Your Timestep cổ điển ! bài báo.
Bây giờ - Tôi đã sử dụng một bước thời gian cố định cho bản cập nhật của mình. Vấn đề là tôi không thực hiện phép nội suy được đề xuất để kết xuất. Kết quả cuối cùng là tôi nhận được gấp đôi hoặc bỏ qua các khung nếu tốc độ kết xuất của tôi không khớp với tốc độ cập nhật của tôi. Đây có thể là đáng chú ý trực quan.
Vì vậy, tôi muốn thêm phép nội suy vào trò chơi của mình - và tôi muốn biết làm thế nào những người khác đã cấu trúc dữ liệu và mã của họ để hỗ trợ việc này.
Rõ ràng tôi sẽ cần lưu trữ (ở đâu? / Làm thế nào?) Hai bản sao thông tin trạng thái trò chơi có liên quan đến trình kết xuất của tôi, để nó có thể nội suy giữa chúng.
Ngoài ra - đây có vẻ là một nơi tốt để thêm luồng. Tôi tưởng tượng rằng một luồng cập nhật có thể hoạt động trên một bản sao thứ ba của trạng thái trò chơi, để lại hai bản sao khác là chỉ đọc cho luồng kết xuất. (Đây có phải là một ý tưởng tốt?)
Dường như có hai hoặc ba phiên bản của nhà nước của trò chơi có thể giới thiệu hiệu suất và - xa quan trọng hơn - vấn đề độ tin cậy và hiệu quả phát triển, so với việc chỉ là một phiên bản duy nhất. Vì vậy, tôi đặc biệt quan tâm đến các phương pháp giảm thiểu những vấn đề đó.
Đặc biệt lưu ý, tôi nghĩ, là vấn đề làm thế nào để xử lý việc thêm và xóa các đối tượng khỏi trạng thái trò chơi.
Cuối cùng, có vẻ như một số trạng thái không cần trực tiếp để kết xuất hoặc quá khó để theo dõi các phiên bản khác nhau của (ví dụ: công cụ vật lý của bên thứ ba lưu trữ một trạng thái) - vì vậy tôi rất muốn biết làm thế nào mọi người đã xử lý loại dữ liệu đó trong một hệ thống như vậy.