Mobile games performance, let's be honest

  • 1. Do not ever use WebGL shader effects in Construct 2 for mobile games, it will cripple performance, I get the impression it is not hardware accelerated by the compilers.

    2. Use minimal Physics Behaviour.

    3. Don't use the PIN behaviour it cripples performance on mobiles. Also do not use rotate or angle every tick.

    There's a few others, but most functions in C2 are really efficient and fine on mobiles, but a few are to be avoided.

    I am not sure how complex your game is, can you do a youtube video/demo?

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • ByR please take this APK: https://dl.dropboxusercontent.com/u/447 ... signed.apk

    I have just tested this APK on my Tegra 3 tablet, its stuck at the blinking ludei logo.

    I see they have still not fixed this simple bug after over a year. And the App doesn't load btw.

    delgado

    I cannot test your game so I cannot see how complex it is, but my own game, 440MB ram required with CocoonJS, >3,600 events in Construct 2:

    Runs absolutely perfect even on older dual core phones. Intel XDK/Crosswalk is smoother than CocoonJS for my example, because I originally went with CocoonJS for this big game so I can compare both. Crosswalk reduced the ram requirements down to 250MB, as well as taking about 10 seconds to load with a progress bar near the finish instead of 40s with a blinking ludei logo.

  • I know your getting that reference from my post, but I think I need to clarify that. What I said was

    adding any non needed behaviours will slow down your performance. As an example even PIN when NOT PINNED to anything will still takes it's toll on performance. In my test on an iPod Touch 4g; I could have 500+ objects render on the screen(no behaviours or code) and maintain 30fps, however when adding PIN even when not PINNED reduced the count to 70(with only PIN).

    I did not say PIN was slow, what I meant to say was that ALL behaviours have a cost. So make sure the minimum number of objects use any behaviours at all that you can get away with.

    delgado

    You already posted in the thread. Just becareful. Get the lowest end device that you want to run on. Then make that your only test device for performance checking. Don't even really use a PC unless you need PC compatibility.

    If you need to use angle() and or any trig functions. Try to do it as little as possible. calculating angle() and lerp(), unlerp() often will slow everything down.

  • Yeah i export with cocoon apk few times and check, game stuck on ludei logo. What is better to use than 'every tick'?

    canvas 2d/webgl or WebView is better when i choose in cocoonjs compiler?

    This is working apk: https://dl.dropboxusercontent.com/u/447 ... signed.apk

    i dont use physics pin and webgl effects.

  • jayderyu

    If what you say is indeed true, then certainly PIN behaviour is a big bottleneck in performance. I do not see that kind of performance drop using other behaviours, for sure not sine, bullet, fade, spin etc, especially if they are disabled.

    delgado

    I just tested your game, there is definitely something wrong with your code or implementation within C2, because it is too simplistic for it to be running at 12 FPS on my quad core Tegra 3 tablet. When you run it via C2/Chrome, run in debug mode and look at the CPU usage, see where the bottleneck is highest at. There must be an event group in your code that's causing it, maybe a repeat/if/else trigger chain thats firing the entire group every tick by accident.

  • You mean debug inspector run from Construct 2?

    Where exacly i must look to find high CPU usage ?

  • How can your scene have 3682 object? Unless you have each grass blade as a separate object, and with some behaviour as well? 37.3% of CPU cycles eaten by the Engine alone is MASSIVE.

    I have a Core i5-3770K and my game has like 5 to 10% TOTAL CPU on the PC. I have over 3,600 events in C2... let me capture a debug shot for you asap.

  • my layout is very long but performance is low when its too much object ON WINDOW not on layout (i read about this somewhere in forum)

    If you need something let me know

  • If your off-layout objects are affecting performance, it is a serious issue.

    Ashley could help here if you send your CAPX, without it, nobody can figure it out. It feels like its rendering everything on your entire layout all at once, and its just so slow. Here's a shot from a more complex scene, lots of explosions and particles, 15% is about the max I see on CPU.

  • but what if nature of my game requires this solution? i need long layout ;/

  • delgado Yes indeed it is definitely the engine processing your entire layout, thats why its 37% of your CPU, and draw calls (on screen objects) are low at 10%.. behaviours of objects offscreen but on the layout are still functioning, if you got them all active it would definitely explain that.

    Perhaps disable the behaviours first, and make a trigger: If Object is onscreen (or check for X axis/location), Enable Behaviour.

    Another thing is to disable Collisions on all your objects, and have it Enable when its visible/onscreen with a trigger.

    Lots of tweaks and stuff you can do to improve performance. C2 is very easy to use but it takes some practice to optimize it for mobiles. Good luck!

  • ok i will try do some changes

  • hi, i do some changes. I create simple event when pickupable items are not on screen disable collisions but when is on screen enable (i dont use families) now when i pick up first items i have error

    And second thing, i prabably cant do anything more because in game only you pick up items i dont use any behaviors everything is static

  • anyway i disable collisions for all other sprites and this not help me. Anyone have some tips to improve performance?

  • bump

Jump to:
Active Users
There are 1 visitors browsing this topic (0 users and 1 guests)