2010-02-15 3 views
18

Android 용 게임을 작성했으며 Dev Phone 1에서 테스트했습니다. 완벽하게 작동하지만 속도는 적당합니다. 그러나, 나는 전화 CPU가 점점 빨라지고 있다고 확신한다. 그들은 이미 dev에 전화보다 빠를 수 있습니다.안드로이드 게임 루프, 속도 및 프레임 속도를 제어하는 ​​방법

내 게임이 기기 또는 실행 속도에 관계없이 동일한 속도로 실행되도록하려면 어떻게해야합니까? 어떤 기술을 알고 있습니까? 매번 루프의 맨 위에 어떤 종류의 타이머를 확인해야합니까?

나는 프레임 속도를 언급하고 있다고 생각한다. 그러나 대부분 내 게임이 메인 게임 루프를 통과하는 속도이다.

어떤 이론이나 경험이 좋을 것입니다! 고맙습니다.

+3

주의 사항 : 게임의 경우 최신 휴대 전화가 더 느린 경우가 있습니다. 나는 G1에서 60FPS를하지만 Droid에서 30-40FPS 만하는 OpenGL 게임을 가지고 있습니다. 렌더러는 Droid에서 다르며 더 높은 해상도의 화면을 가지고있어서 성능에 해를 끼칩니다. –

답변

15

특정 프레임 속도를 목표로하는 경우 기본 아이디어는 원하는 간격으로 게임의 틱 메서드를 실행하는 타이머 또는 스레드를 가져야한다는 것입니다. 타이머를 사용하면 구현이 매우 간단합니다. 일정한 간격으로 실행되도록 타이머를 예약하십시오. 스레드를 사용할 때 스레드가 원하는 프레임 속도보다 빠르게 실행되는 경우 연속적인 틱 사이에서 스레드를 절전 모드로 전환해야합니다.

그러나 프레임 간의 간격이 조금씩 다를 수 있으므로이 방법만으로는 최상의 결과를 얻을 수 없습니다. 이 문제에 관해 아주 좋은 기사가 있습니다 : http://gafferongames.com/game-physics/fix-your-timestep/.

또한 dev 폰 1보다 느린 속도의 Android 휴대 전화가 이미 있습니다. 따라서 모든 Android 기기를 타겟팅하는 경우 두 가지 경우를 대비해야합니다. 게임의 CPU 사용량이 많지 않으면 모든 장치에서 원하는 프레임 속도를 얻을 수 있습니다. 그러나 프레임 속도를 제한하지 않으면 빠른 Android 휴대 전화에서 게임 속도가 너무 빨라집니다.

+0

감사합니다.이 기사는 내가 이미 구축 한 것에 대한 훌륭한 발견과 쉬운 구현입니다. –

+0

+1 감사합니다. @lauri 링크 u는 많은 도움을주었습니다 .. –

+0

"보간법"파트도 구현 했습니까? –

관련 문제