2010-02-15 39 views
18

Tôi đã viết một trò chơi cho Android và tôi đã thử nghiệm trên điện thoại Dev 1. Nó hoạt động hoàn hảo, tốc độ vừa phải. Tuy nhiên, tôi chắc chắn rằng điện thoại của CPU đang nhận được nhanh hơn. Chúng có thể nhanh hơn điện thoại dev.Vòng lặp trò chơi Android, cách kiểm soát tốc độ và tốc độ khung hình

Làm cách nào để đảm bảo rằng trò chơi của tôi chạy với tốc độ chính xác như nhau cho dù thiết bị chạy nhanh hay không? Bạn có biết bất kỳ kỹ thuật nào không? Tôi có nên kiểm tra một số loại bộ đếm thời gian ở đầu vòng lặp mỗi lần không?

Tôi đoán tôi đang đề cập đến tốc độ khung hình - nhưng chủ yếu là tốc độ mà trò chơi của tôi chạy qua vòng lặp trò chơi chính.

Bất kỳ lý thuyết hoặc kinh nghiệm nào đều tuyệt vời! Cảm ơn bạn.

+3

Chỉ cần một cái gì đó để xem ra cho: cho các trò chơi, đôi khi điện thoại mới hơn là chậm hơn. Tôi có một trò chơi OpenGL mà tôi đang làm việc trên đó không 60FPS trên G1, nhưng chỉ có 30-40 FPS trên một Droid. Trình kết xuất khác với Droid và nó cũng có màn hình độ phân giải cao hơn, làm giảm hiệu suất. –

Trả lời

15

Nếu bạn đang nhắm mục tiêu tỷ lệ khung hình nhất định, ý tưởng cơ bản là bạn nên có bộ hẹn giờ hoặc chuỗi thực hiện phương pháp đánh dấu trò chơi của bạn theo các khoảng thời gian mong muốn. Với bộ hẹn giờ, việc triển khai khá tầm thường: chỉ cần lên lịch bộ hẹn giờ để thực thi theo các khoảng thời gian đều đặn. Khi sử dụng các chủ đề, bạn phải đặt chủ đề ngủ giữa các lần liên tiếp nếu nó chạy nhanh hơn tốc độ khung hình mong muốn.

Tuy nhiên, điều này một mình không dẫn đến kết quả tốt nhất có thể vì khoảng thời gian có thể thay đổi một chút giữa các khung. Có một bài viết rất hay về vấn đề này: http://gafferongames.com/game-physics/fix-your-timestep/.

Ngoài ra, có điện thoại Android đã chậm hơn và nhanh hơn điện thoại dev 1. Vì vậy, bạn phải chuẩn bị cho cả hai trường hợp nếu bạn đang nhắm mục tiêu tất cả các thiết bị Android. Nếu trò chơi của bạn không phải là CPU nặng, có thể bạn có thể đạt được tốc độ khung hình mong muốn trên tất cả các thiết bị. Nhưng nếu bạn không giới hạn tốc độ khung hình, trò chơi của bạn sẽ quá nhanh trên các điện thoại Android nhanh hơn.

+0

Cảm ơn bạn, bài viết này là một tìm kiếm tuyệt vời và dễ thực hiện hơn những gì tôi đã xây dựng. –

+0

+1 Cảm ơn @lauri các liên kết u đã giúp tôi rất nhiều .. –

+0

bạn đã thực hiện "nội suy" một phần cũng? –

Các vấn đề liên quan