Cách tiếp cận: Tỷ lệ mô phỏng cao hơn
Thời gian của bạn cho giao diện người dùng của bạn nên được tách rời khỏi vòng lặp trò chơi thực tế của bạn, cũng như kết xuất của bạn. Nói ví dụ thế giới của bạn chạy ở tốc độ gấp 4 lần. Hãy nói rằng với tốc độ cơ bản (1x), trò chơi của bạn chạy 30 cập nhật mỗi giây.
Sau đó, bạn sẽ có một cái gì đó như sau, khi ở chế độ tua nhanh:
- World logic chạy 4 bản cập nhật cho mỗi bản cập nhật của UI và renderer. Điều này có nghĩa là nó cần chạy 120 cập nhật mỗi giây. Do đó, mô hình thế giới (dữ liệu) của bạn được cập nhật với tốc độ này.
- Trình kết xuất và logic UI đều tiếp tục thăm dò ý kiến hoặc làm bất cứ điều gì với 30 cập nhật mỗi giây.
Nói cách khác, toàn bộ trò chơi không chạy nhanh hơn. Phần mô phỏng là.
Bạn có thể suy luận hai điều từ đây:
Bạn cần giữ cho logic trò chơi của mình đủ đơn giản để bạn có thể dễ dàng chạy nó nhanh hơn bốn lần trên nền tảng mục tiêu của mình, HOẶC bạn cần giới thiệu các phương pháp để ngoại suy các khía cạnh khác nhau của trò chơi nhanh hơn - tuy nhiên, điều này có thể dẫn đến một mô hình khác với những gì nó đã có nếu bạn chỉ đơn giản là sử dụng một mô phỏng nhịp độ nhanh hơn. Vì vậy, sự đánh đổi sẽ được xử lý chi phí cho chính xác. Xem cách tiếp cận 2, bên dưới.
Đó là sự tách biệt các mối quan tâm cho phép bạn dễ dàng tăng tốc mô phỏng thế giới của mình, sự tách biệt đó là mô hình, chế độ xem và bộ điều khiển ( MVC ). Nếu dữ liệu thế giới của bạn (M), logic kết xuất (V) và logic trò chơi (C) bị trộn lẫn, bạn thực sự sẽ không thể làm điều này, ít nhất là không phải không bị đau nửa đầu.
Cách tiếp cận: Phép ngoại suy dựa trên thời gian deltas
Như đã đề cập ở trên, bạn sẽ cần tính toán chuyển động dựa trên khoảng cách mà một thứ gì đó sẽ đi được trong một thời gian nhất định. Điều này giả định rằng vật lý trò chơi của bạn vốn đã thực tế hơn trong mô phỏng của họ, tuy nhiên, điều này có thể không phải là trường hợp. Đây là một chủ đề khá lớn và phức tạp hơn đáng kể. Bạn sẽ cần hỏi thêm câu hỏi về nếu bạn muốn biết. Về cơ bản, bạn sẽ thực hiện một số tính toán để làm mọi thứ đúng. Bạn sẽ cần phải đối phó với sự thâm nhập lẫn nhau trong các vụ va chạm và một loạt các vấn đề khác mà tôi sẽ không đi vào đây.
Để kết luận
Điều này cung cấp cho bạn các phác thảo chung. Lựa chọn ngôn ngữ của bạn là của riêng bạn, có lẽ bạn biết cách làm điều đó trong Unity hoặc bạn không biết. Thời gian trong bất kỳ ngôn ngữ nào đòi hỏi bạn phải hiểu chi tiết về các vấn đề, tôi khuyên bạn nên bắt đầu với các bài viết của Gaffer và kiểm tra các tài liệu API của Unity.