I'm deploying with Crosswalk, reference device is Samsung GT-I9300 (aka Galaxy S3) - that's slowest hardware I'm targeting to support. Unfortunately, performance is uneven at best. Initial, vanilla deployment (with all plugins disabled) worked at uneven 15 FPS with drops below 1 FPS in some cases - especially playing combat animations and on fist few steps on any map. Also, only BGM was playing - no other sounds whatsoever. With plugins enabled FPS dropped below 10.
I have performed following tests and actions. Some of them actually had results to share:
1. Downgraded Crosswalk to 18.48.477.13. This worked around sound issue. It seems that newer versions of Crosswalk have some issue with playing WebAudio.
2. Upgraded Pixi to 4.1.1. This was a hit, instant ~50% performance boost. Game is now running at 22-25FPS on the average, with drops to ~10FPS in first few steps on the map, but there are spikes down to below 1 FPS when playing combat animations.
3. Optimized parts of core engine. Specifically, changed few instances of this.children.forEach to simple loops. While forEach is more elegant, it's not as efficient. This yield ~20% performance gain, up to 25-30FPS.
4. Forced WebGL renderer and disabled GPU blacklist. This was disaster, WebGL is actually slower on GT-I9300 (framerate dropped down to below 10FPS) and it crashed frequently.
I'm testing with following plugins:
Spoiler
- "TerraxLighting" (modified for performance, gives ~5FPS performance hit)
- "YEP_CoreEngine"
- "YEP_BattleEngineCore"
- "YEP_X_AnimatedSVEnemies"
- "YEP_BattleStatusWindow"
- "YEP_ElementCore"
- "YEP_VictoryAftermath"
- "YEP_X_AftermathLevelUp"
- "HIME_GameOverEvents"
- "YEP_CreditsPage"
For now, my biggest issue is a lag when playing combat animations. I get one or two frames at most, and sometimes lag measured in seconds, which is a game-breaker level issue. This happens both in and out of combat. Curiously, some of the combat animations play smooth, ie: default "Ball of Light" (Light4.png).