Tôi đang thực hiện một shmup iphone và đang cố gắng quyết định loại vòng lặp trò chơi sẽ sử dụng. Tôi muốn sử dụng dấu thời gian bán cố định hoặc dấu thời gian cố định hoàn toàn.
Với dấu thời gian bán cố định, tôi sẽ thực hiện các cuộc gọi cập nhật 0 hoặc nhiều hơn (FIXED_INTERVAL) theo sau là một cuộc gọi cập nhật (dt) trong đó dt <= FIXED_INTERVAL trên mỗi vòng lặp trò chơi. Theo tôi hiểu, nhược điểm của phương pháp này là logic cập nhật vật lý (dt) của tôi sẽ khó lập trình hơn vì về cơ bản tôi phải giả sử một biến dt cho mỗi bản cập nhật. Và sau đó tôi cũng nghe nói rằng mỗi lần chạy trò chơi của tôi sẽ hơi khác nhau do các giá trị dấu phẩy động không giống nhau mỗi lần.
Sau đó, với dấu thời gian được cố định hoàn toàn, tôi thực hiện các cuộc gọi cập nhật 0 hoặc nhiều hơn (FIXED_INTERVAL) theo sau là một cuộc gọi nội suy (dt / FIXED_INTERVAL) trong đó dt <FIXED_INTERVAL trên mỗi vòng lặp trò chơi.
Vì vậy, có vẻ như quyết định lớn mà tôi thực sự phải đưa ra là: tôi có muốn giải quyết thách thức khi thực hiện cập nhật (dt) với một biến dt hay tôi muốn giải quyết thách thức khi thực hiện phép nội suy?
Bây giờ từ những gì tôi đã đọc, phần lớn mọi người đang nói sử dụng hoàn toàn cố định và thực hiện phép nội suy. Nhưng khi tôi nghĩ về việc thực hiện phép nội suy, có vẻ như tôi phức tạp hơn nhiều so với một bản cập nhật (dt) với biến dt. Điều này là do nếu tôi sử dụng phép nội suy, tôi phải nhớ cả trạng thái trước và trạng thái hiện tại. Vì vậy, nếu tôi muốn sử dụng phép nội suy, tôi phải đưa ra một lớp bổ sung bổ sung tóm tắt toàn bộ các trạng thái trò chơi riêng lẻ. Trong khi với dấu thời gian bán cố định mà tôi không phải sử dụng phép nội suy thì tôi không phải đưa ra một bản tóm tắt trạng thái trò chơi vì luôn chỉ có một trạng thái trò chơi và đó đơn giản là "mảng toàn cầu" đại diện cho kẻ thù và kẻ thù của tôi đạn v.v.
Vì vậy, lựa chọn thực tế hơn là gì: tôi có thực hiện bán cố định hay không khi biết rằng các cập nhật vật lý của tôi có thể trở nên phức tạp với biến dt. Hoặc tôi có sử dụng hoàn toàn cố định và cố gắng đưa ra một bản tóm tắt trạng thái trò chơi để tôi có thể theo dõi trạng thái trước đó và trạng thái hiện tại để thực hiện phép nội suy không?