나는 opengl를 사용하여 3D 아케이드 게임이 될 나의 첫 안드로이드 게임을 만들고 있습니다. 나는 오랫동안 그것을 작업 해 왔는데, 주로 미래를위한 유연성을 위해 엔진을 최적화했습니다.게임 android 프로파일 링 및 최적화
어쨌든 지금은 완전히 게임 기능과 모든 멋진 것들로 끝났지 만, 그것은 내 디버그 전화가 아닌 휴대폰에서 뒤 떨어진다. 이 게임은 모바일 게임을위한 꽤 높은 품질의 그래픽을 가지고 있으므로 약간의 지연이 예상되지만, Nexus S에서 게임을 실행하고 MyTouch 4G에서 게임을 실행하는 것의 성능 차이는 엄청납니다. 이 게임은 LG Optimus (게임은 실행되지만 편안하게 게임하기에는 고르지 못함)와 같은 저가형 휴대 전화에서도 재생할 수 없습니다. 내 넥서스 SI에서는 거의 고르지 못한 움직임 (게임에서 프레임 속도 독립 운동을 구현했습니다)은 거의 없지만 MyTouch 4G에서는 게임이 여전히 재생 가능하지만 훨씬 일반적입니다 .... 그러나 성가신
저는 데스크톱 게임 개발 배경에서 왔으며 최적화는 전에 저에게 관심 있었던 주제가 아니 었습니다. 게임 속도를 높이려면 무엇을 권하고 싶습니까?
가능한 한 코드를 최적화하려고 시도했지만 성능이 크게 향상되었지만 내가 놓친 부분이나 간과되는 부분이있는 것 같습니다. 가득한 엔진과 제비 뽑기와 많은 부호와 더불어 그 거대한 게임.
나는 모든 할당을 추적하고 재생 중에 GC가 실행되지 않도록 런타임에 할당을 취소하거나 잊어 버리지 않았 음을 확인했습니다. 그게 전부 내가 생각할 수있는 기본적으로 모두, 나는 그 밖에 걸림돌을 만들 수있는 다른 무엇인지 모르겠다
그리고 나는 고품질이기는하지만 그것이 게임의 옵션을 추가했기 때문에 그 메쉬의 폴리 카운트를 의심한다. 컴퓨터 게임에서와 같이 Low, Medium 및 High에서 그래픽 품질을 선택할 수 있으며 Low와 High의 차이는 600-900 사이입니다. 내가 알게 된 유일한 개선점은로드 시간입니다. 또한 특별한 후 처리 효과, 조명, 쉐이더, 실시간 SSS 또는 그 중 어떤 것도 없습니다. 그냥 질감이 얼굴 : P
또한 내가 "reggering"reffering은 무작위 동결 있습니다. 나는 그들이 GC다고 확신하지만, 내가 이후로 뭔가 다른 것일 수있다. 생각하다. 나는 모든 할당을 발견하고 제어했다. (많이있다.) 내 게임은 프레임 속도와 무관하므로 해제 할 때마다 플레이어와 적과 모든 것이 앞으로 나아가고 앞으로 나아가고 있습니다. 그러면 이미 어려운 게임이 훨씬 어려워집니다!
저는 프로파일 링과 최적화에 익숙하지 않습니다. 안드로이드 디버그 도구 (또는 다른 타사 도구)를 사용하여 런타임 중에 내 게임이 어떻게 수행되는지, 언제/왜 멈춰서 내가 고칠 수 있는지에 대한 더 나은 그림을 얻을 수 있습니다.
ALSO, 보너스 질문 :) 실제로 휴대 전화를 가지고 있거나 아는 사람들을 모르고 다른 휴대 전화에서 어떻게 작동 하는지를 볼 수있는 방법이 있습니까? 마찬가지로, 얼마나 빨리 그것은 내가 드로이드 X가없는도 사람 나는 모두가 내가하고 생각할 수있는 기본적이다
당신이 이클립스에서 DDMS보기에서 힙 할당을 추적 적이 있습니까? GC가있을 때마다 새로 고침이 나타나므로 정지 메시지가 GC 호출과 상관 관계가 있는지 여부를 확인할 수 있습니다. 여기에서 실제 할당 된 것을 파고 들어갈 수 있습니다. 가장 가능성있는 할당 ('new'' Anything)이기 때문에 자연스럽게 모든 것을 앞에 할당하고 가능한 한 객체 풀을 활용하기를 원할 것입니다. – LeffelMania
참고 : http://stackoverflow.com/questions/5626947/optimize-android-application-before-release – bigstones