iOS 10.0.1 performance issue

Hello guys, i do have some serious issues with touch performance on iOS 10.+ tested cocos version 3.10 and 3.13.1. After while for no clear reason - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event start to be called with 40ms+ delay even through the game is still running on 60fps, cpu usage is under 23% and there is no blocking logic inside touch implementation. In fact it does do the same thing even if i’ll comment out whole method and keep just logging here. Only way i was able to bypass the issue is using nstimer instead of displaylink :confused: It’s not happening all the time, sometime you have to switch between scenes few times.

I’m not encouter the same issue on empty project using GLKit… however i did not have enough time yet to try GLKit in cocos. Anyone encounter the same issue?

I am testing iOS 10 now. Can you give me steps to see this happening? Have you created a GitHub issue yet?

Is this in a simulator, on hardware or both?

Nope i did not create issue yet. It’s happening on devices (so far tested on i6 Plus, i6s, i6s Plus, iPad 3 and iPad Pro). Just build cpp tests (i noticed that in my game, but it’s happening even in those tests) keep finger on screen and start scrolling. Sooner or later it will start dropping moves even through the app is still running at 60fps. I noticed that it start happening when some metal thread start consuming resources (not much… just like 1% of cpu, but it seems that it’s blocking touch layer).

You might also try to switch scene for a few time or restart app. It’s not happening all the time, but sooner or later for sure.

Thanks. I will try cpp-tests now

I used 11: Click and Move test in cpp-tests and it seems responsive to me. I clicked around 100 times. I then exited the test, went into a few other tests and out to change Scenes and tested again with 11: Click and Move 100 clicks.

Click is absolutely fine. Just moving does not seems to be :confused: Cloud you try scrolling on first screen with test selection, try to switch scene few times and scroll again. It will never actually drop frames, but it will start dropping move calls so next move is delayed for a few frames and you can see that. If your eye it’s not trained to see 60fps you can simple add logging/profiling to move callback and you will see that after while the delay goes from 1/60s to something more like 1/30 or even less.

I’m not sure what might causes that, but it’s happening :confused:

My setup is iOS 10.0.1, Cocos2dx 3.13.1, Xcode 8.0 (8A218a), OS X 10.11.6 (15G31) and it’s happening on all devices i have :confused:

Sure, I can try this too. I will update this thread.

I’m not sure I can reproduce what you are seeing. Simulator and on hardware. I have gone in and out of every test, scrolling top to bottom of the test list after each one. I don’t notice anything. My FPS stays around 60 while scrolling. It varies depending upon which test I am running and then back to 60. In the simulator same thing except it is a simulator so the FPS stays around 30 while scrolling.

Plase do not look at FPS they are fine. The app is running on stable 60fps all the time. Just touch moved is triggered only 30/s after while so direct moving is laggy. It seems to be a bug in iOS 10. Already reported to apple from multiple developers. Only bypass i found so far i to use NSTimer instead of displaylink (even GCD does encounter the same issue) OR use glkit view, but that will mean bigger change in cocos architecture.

Do you have threads where others have reported this? We can create a GitHub issue from this so the engineering team can take a look.

Just this one… https://forums.developer.apple.com/thread/62315. Since Apple make some changes in CADisplayLink in iOS 10 (you can see that for example here https://github.com/Flipboard/FLAnimatedImage/pull/150/files) i guess, that they might make some mistake here. I do have the same issue even with empty GL project, but not when i’m using GLKit.

I did test already on 3 computers with 3 different versions of xcode/base sdk + 6 devices and it’s happening everywhere :confused:

Hi, have u managed to find solution for it?

@energyy
I have reproduced it. But so far, I don’t find a solution for this issue. I will keep investigating.

I am still facing this problem on iOS 11.0.3/ iPhone SE. Frame drops from 60fps to 40fps at the first touch only. I tried to disable main scheduler and all game logic but it still happens. Any idea?

Hi, this is common issue for IOS 11 seems, many games have such bug - when banner appear or somethingg happens game drops to 40fps - and gameplay looks like slowmotion - there is no real fix- it seems was fixed only on ios 11.2.5+ but still sometimes appear, workaround would be to manually kill and recreate banner if this happens - it helps but maybe not in all cases.

Thanks for your help. I will try your suggestion