APK를 실행할 때 Android의 성능 저하, 브라우저에서 정상적으로 실행


12

Phaser 엔진을 사용하여 HTML5에서 작은 게임 프로젝트를 만들었습니다 (1.1.5 및 1.1.6 모두 시도). 그런 다음 모바일 플랫폼으로 이식하려면 Windows Phone 8, Android 및 iOS 용 Phonegap / Cordova를 사용하십시오.

내 게임에는 약 10 개의 요소가 있으며 애니메이션으로 표시됩니다 (점에서 점으로 이동하고 동시에 회전). iOS와 Windows Phone 8에서는 아무런 문제가 없었습니다.

그러나 Android의 경우 성능이 허용되지 않습니다. 반면에 장치 브라우저를 통해 게임을 실행하면 지연없이 원활하게 실행됩니다. 그러나 컴파일 된 APK는 매우 불안정하고 요소는 매우 느리게 깜박입니다.

매니페스트 파일에서 Android 하드웨어 가속 플래그가 "true"로 설정되어 있는지 확인했습니다. 그것도 거짓으로 바꾸려고 시도했지만 성능의 변화를 반영하지 않았습니다.

Samsung S2 기기의 Android 4.2에서 동일한 내용을 확인했으며 그 성능이 더 좋습니다. 그러나 Asus Nexus Tab 7 (Android 4.4 실행)에서는 매우 부드럽지만 OS와 장치는 모두 최신 버전입니다. 또한 Android 4.3 (Samsung Galaxy Grand Duos)을 실행하는 다른 기기에서 확인했는데 너무 성능이 좋지 않습니다.

내 게임에서 WebGL / Canvas 렌더링 (Phaser 엔진은 Pixi.js를 사용하며 WebGL이 지원되지 않으면 2d 캔버스로 폴백)을 시도했지만 변경 사항은 없습니다. easeljs와 마찬가지로.

다른 사람이 비슷한 문제에 직면하여 네이티브 성능을 얻는 방법을 제안 할 수 있다면. 나는 cocoonjs 예제를 확인했으며 매끄럽고 수용 가능해 보이지만 그 길을 갈 수는 없습니다.


3
이 질문은 아주 잘 쓰여 있습니다. 벤치 마크 또는 프로파일 러를 실행하여 범인이 될 수있는 범위를 좁히고 이것을 재현하기위한 일련의 쉬운 단계로 phonegap에 문의 한 경우 알고 싶습니다.
AturSams

아직 phonegap에 쓰지 않았습니다. 프로파일 러를 사용하려고 시도했지만 프레임 워크 또는 코드베이스에서 특이한 것을 찾을 수 없습니다. 아마도 이것이 모바일 브라우저뿐만 아니라 데스크탑에서도 모든 것이 원활하게 실행되는 이유 일 것입니다. 한 가지 발견은 Android가 WebView 기반 앱 및 브라우저 자체에 대해 다른 런타임을 가지고 있다는 것입니다. 그러나 이러한 작은 트위닝이 APK (WebView) 모드에서 너무 많은 지연을 일으키는 이유를 나타내는 것을 찾을 수 없습니다. 실제로이 문제는 KitKat을 실행하는 Nexus 탭에 표시되며 가장 빠른 웹뷰 (Chrome 기반)라고합니다.
devilzk83

이것은 내 입장에서 매우 피상적 ​​인 관찰이다. 당신이 버그에있을 것 같습니다. 고급형 장치간에 성능이 크게 차이가 나는 이유는 알 수 없습니다.
AturSams

1
CocoonJS 경로를 원하지 않는 이유가 궁금합니다. Phaser와 Pixi는 CocoonJS 내에서 잘 작동한다고 생각합니다. 이 옵션을 사용하지 못하게하는 이유는 무엇입니까?
Geoff

2
CSS3 & Canvas 렌더링을 방해하는 버그는 새로운 Chromium 기반의 웹뷰이며 Android에서 Cordova / Phonegap 개발자에게 큰 실패입니다. ? 제 3 자 고정 Android 빌드가있는 휴대폰 사용자에게 빠르고 투명하게 수정되기를 바랍니다. Utter fiasco. Cordova / Phonegap 개발자이거나 Webview를 사용하는 경우 Google Android 버그 보고서 로이 버그를 별표 표시하십시오. 추가 정보 : groups.google.com/forum/#!topic/phonegap/1ZxXe6chHZc code.googl

답변:


2

이 문제의 원인이되는 Chromium 기반 WebView는 2014 년 중반 KitKat 버전 4.4.3 / 4.4.4에서 업데이트되었지만 일부 공급 업체에서 업데이트를받은 휴대폰에 대한 임의의 결정을 내린 것으로 보아도 이는 매우 편안합니다. 아니. 예를 들어 Samsung Galaxy S4는 여전히 4.4.2에 갇혀 있습니다.

다른 답변으로 제공되는 조언을 따르십시오. 캔버스 기반 게임을 사용하는 경우 KitKat 버전 4.4.3 이하를 실행하는 전화기를 제외하는 것이 허용되는 경우를 제외하고 PhoneGap을 피하십시오.


1

libgdx에서 게임을 다시 만들어보십시오. Libgdx는 충분히 빠르며 이와 같은 문제가 없으며 모든 플랫폼에서 작동합니다. 불행히도 이것은 내가 지금 생각할 수있는 것 일 뿐이며 js를 android java로 변환하거나 그 취재가하는 모든 것을 좋아하지 않습니다. 시간이 걸리지 만 LibGDX에 테스트를 제공하십시오.


1

대부분의 게임 개발자에게는 이것이 문제인 것 같습니다. 비슷한 문제

"저는 캔버스 게임을 만들고 싶을 때 phonegap이 최선의 선택이 아니라고 들었습니다. 웹 응용 프로그램을 기본 응용 프로그램에 더 적합합니다."

안드로이드 폰의 렌더링 기능을 사용하는 것 같습니다. 더 많은 스프라이트 렌더링을 처리 할 수없는 엔진이 있습니다. 10 개의 객체를 렌더링하기 쉽지만 렌더링 기능에 문제가있는 것으로 보입니다.

내 제안은 당신이 cocoonjs 와 함께 가라는 것 입니다.


1

Phaser와 동일한 문제가 발생했습니다 ( 이 간단한 게임 사용 ). 불행히도 HTML5 및 웹 / 캔버스 렌더링을 사용하면 휴대 전화를 사용할 수 있습니다. 브라우저가 깨지거나 성능이 저조한 사용자 (예 : 내 브라우저)가 있습니다.

@ captainbuzz123이 제안한 것처럼 실제 해결책은 HTML5가 아닌 플랫폼으로 옮기는 것입니다. 내가 선택한 도구는 OpenFL 입니다.

내 (매우 간단한) Phaser 앱이 내 휴대 전화에서 약 8-12FPS로 실행되지만 OpenFL을 사용하면 (C ++로 변환되고 Android NDK를 통해 실행되기 때문에) 휴대 전화에서 매우 부드럽고 유동적 인 성능을 얻습니다.

시도해 볼 가치가 있습니다.


1

2020 년 첫 주 업데이트 :

Cocoonjs는 아마도 과거에이 문제에 대한 고용했지만 그들이 종료된다 .. 자신의 말을 인용 공식 웹 사이트는 모두를 말한다

우리가 사랑하는 서비스 인 Cocoon을 더 이상 제공하지 않겠다고 발표하게되어 유감입니다.

앱과 게임 개발의 미래는 HTML5를 기반으로 할 것이라고 믿었 기 때문에 Ludei / Cocoon을 시작했습니다. 불행히도, 그것은 일어나지 않았으며 네이티브 개발은 그 어느 때보 다 강력합니다.

이것은 실제로 2019 년 모바일 용 HTML5 개발을 반영합니다. 불가능하지는 않지만 예상대로 효과적이지 않습니다 ...

IOS 및 Android 용 PhaserCordova 로 빌드 된 일부 프로덕션 게임 후 기본 개발로 전환합니다 . 중형 장치에서 가장 간단한 기계조차도 성능 한도에 도달했습니다.

현재 또는 가까운 미래에 이것을 볼 수있는 사람을 위해 다음 기술 / 스택 솔루션 옵션을 공유하기 만하면됩니다.

  • IOS 용 SpriteKit 및 Android 용 LibGDX : 각 플랫폼에 대해 개별적으로 개발해야하지만 가장 성능이 낮은 솔루션 일 것입니다.

  • Cocos2D-X 는 그것이 얼마나 잘 지원되는지 확실하지 않으며 여전히 올바른 선택이지만 여전히 성숙하고 성능이 뛰어나야합니다. + C ++로 작성하고 모든 플랫폼을 구축 할 수 있습니다

  • 코로나 (Corona) 는 흥미롭고 (무료) 크로스 플랫폼 및 성능 프레임 워크 인 것 같습니다. Lua 를 사용 하면 여기에 언급 된 다른 솔루션과 비교하여 테스트해야합니다.

  • UnityGodot 와 같은 최신 엔진 중 하나를 사용하십시오 . 이것이 언급 된 프레임 워크 성능과 어떻게 비교되는지 잘 모르겠습니다.

이것이 누군가를 돕기를 바랍니다 ..


0

다른 날에 이것을 보았습니다.이 문제를 해결하는 것이 좋습니다. 나에게 꽤 좋은 생각처럼 들린다 : http://tmtg.net/glesjs/

브라우저에서는 작동하지만 Phonegap / Cordova에서는 작동하지 않는 것이 매우 이상합니다. 안드로이드의 전체 캔버스 / webGL 상황 (iOS에서는 말할 수 없음)은 항상 나에게 매우 끔찍한 것처럼 보였습니다. 확실히 GOogle은 더 많은 에너지를 투입해야 할 것입니다. 아마도 Lollipop이 개선 될 것입니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.