tunepunk's Forum Posts

  • Chrome 69.0.3497.92 with performance related hotfixes just got released. Might want to re-run the available tests in here and see if it's fixed.

    TheRealDannyyy

    Might, improve it a bit. Canary was slightly less jank for me. But as this seems to be a power saving OS especially on laptops and such. I'm not sure how it can be improved really.

    As someone else reported text object also quite a big factor. Not updating text every tick certainly helps quite a bit. At least for me.

    Endless Runner in Firefox - Surface Pro 4, on battery, recommended power mode.

    - Unplayable.

    Disabling text update event, playable with a few janks here and there that seems to be related to GC and Vsync

    Computer throttles down to low 0.5 Ghz or something like that. But when there's actually a major GC happening, it's throttled down so much that the CPU can't speed up fast enough again to do the GC, so you notice a quite significant jank.

    Some minor dropped frames here and there seems to be v-sync. V-sync seems to fail more on battery, and power plans set to recommended settings.

    What irritates me is that these power saving features ruins the experience. Imagine if you were watching youtube or a movie on battery power and the videos keeps janking. That would be unacceptable! There would be a public outcry probably. HTML5 games on the other hand, seem to suffer more from these power saving features, especially when in battery power.

    As no-one seem to wanna touch the issue, there's not much else than inform your players to change power mode if they play your games on laptops, and notice bad performance.

    Exported Mobile projects seem to be fine though, an occasional dropped frame here and there. But recommended not to use any text object that updates frequently.

  • Ok so I'm back with a test.

    I'm just looping something based on dt, to tax the cpu a bit, when dt is low, but reduce tax when dt is high. Seems to work well on Surface Pro 4, i5. I havn't figured out a formula to set the base value (5000) automatically but maybe someone else can help with that.

    Using this method i could run the test with very little to no, jank even on recommended power setting and battery.

    Here's a link to c3p file if anyone feels like investigating further.

    dropbox.com/s/imk1n0aatytqkef/janktest2.c3p

    edit: taxing the cpu on battery works well on some modes, but not on the lowest ones, might be that gpu is being throttled down as well. Adding some webgl effect to layer, seems to have a positive effect, but can't get it perfectly jank free with 60fps just yet.

    Seems like the less gpu and cpu is utilized on standard and low power modes, the worse performance i get.

    Checking, task manager performance task can give some indication on how many Ghz the processor is currently running at.

  • > Solution: Add a lot of junk events doing absolutely nothing else than increasing CPU load?... haha

    Thats not such a crazy idea.

    I actually just did a small test for that to test that theory out. Going to run it on my surface when i get back home.

    Increases repeat loop count if cpu is less than X, reduces the loop count if higher. CPU report updates only every 1 second though, so might be better to base it on dt, or a combination of the both.

  • > Mostly grey for me. Once every 15-30 seconds or so. Just slighty more fails on battery.

    >

    > Edit: well I take that back. Second run plugged in, It was failing constantly, at least the fist 30 seconds or so, then It get's better.

    The manual is quite interesting vsynctester.com/manual.html

    Under 4.3 : In Chrome on battery power, timer accuracy is reduced from 1ms to 4ms (which the Windows OS may then map to 2.5ms).

    That's very interesting indeed. That might explain why I get less stutter in high-CPU heavy games on balanced mode/battery. Small simple games seem to stutter more, because the CPU winds down, reducing clock speed, and can't catch up fast enough when needed?

    Solution: Add a lot of junk events doing absolutely nothing else than increasing CPU load?... haha

  • Could people with the jank problem try this : vsynctester.com

    Does the janks appear here too (VSNYC on the right isn't always gray)?

    Mostly grey for me. Once every 15-30 seconds or so. Just slighty more fails on battery.

    Edit: well I take that back. Second run plugged in, It was failing constantly, at least the fist 30 seconds or so, then It get's better.

  • That's fine, but can we at least get some support by Scirra team, confirming similar finds and raising issues in other places, about this?

    I think it would be in the interest of Scirra that games created with your engine will run smooth for casual players, on laptops, and lower spec machines on "recommended" power saving modes etc.

    It's pretty bad marketing if a new potential C3 dev customer, opens C3 for the first time, tries some templates and notices janks and stutter previewing a simple built in template, on a laptop for example.

    That's exactly what happened to me, when I demoed C3 for peers and team, trying to convince them to invest in a few licences for work. I was demoing some small projects i made on battery, with recommended power setting, and they asked:

    -"what's all the jank about"? ,and that's why i started this thread for further investigation

    Or games exported still with C3 logo showing at start stutters for players on sites like kongregate etc.

    Plugging in power, and changing power mode are not obvious fix.

    I would probably also investigate if other engines have similar stutter, and If they are doing anything to mitigate it.

  • Maybe it would help to use, "on created" condition, instead of every tick?

  • I also create a bug with edge, who might be able to escalate the issue, if it's an OS power saving mode issue.

    developer.microsoft.com/en-us/microsoft-edge/platform/issues/18921895

    Please go there and comment and upvote in case you're having similar stutters and janks.

    Edit: Filed an issue with chrome as well. Just in case.

    bugs.chromium.org/p/chromium/issues/detail

  • Created a post on feedback hub. Please upvote or add comments, maybe windows can look in to this as it seems related to your power mode.

    aka.ms/AA2jyqy

    Might be worth it if you are developing for win10/desktop.

    -

    Power mode causing gc to jank, when it shouldn't? The plot thickens.

    Ashley Do you have any suggestions on how to deal with this? Many here are probably targeting casual players on lower spec machines and laptops, with (recommended) power mode set as default. Probably guaranteed jank fest playing a html5 game. You can't tell your players to start messing too much with windows settings to have a decent experience. Simple games like these shouldn't have any issues on recommended power mode.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • sizcoz Tested your export. These are my results:

    Surface pro 4:

    Firefox: See very noticeable janks.

    Chrome: 69, janky.

    Canary: janky but a bit less.

    Now here comes the twist though!

    I connected the power cable because my surface was getting a bit low on battery. Hmmmmm....janks suddenly decreased quite a lot. Chrome 69 and firefox still had some, but not as frequent, and not as heavy. I thought, that's odd so i tried something else. I clicked the battery icon in the task bar, and changed setting to best performance.

    Result after setting:

    Firefox: no janks

    Chrome: no janks

    Canary: no janks

    Are you testing on a laptop? or using balanced power scheme?

    Results on Sony Xperia XZ1

    Chrome: Some very rare janks far between.

    Edge: Some occasional jank.

    So on windows, power mode setting seems to make a huge difference. In other desktop games(non html5) this usually only lowers framerate when on battery, but does not cause janks.

    I only have laptops, tablets and mobiles to test on. No regular gaming computer, workstation or anything like that.

    I'll test on macbook pro when I'm back at work tomorrow.

  • In my experience jank is most of the times a problem with Intel HD graphics ... besides the time v-sync was broken.

    Laptops and sometimes even desktop PC's don't use the dedicated GPU for browsers, you can add the "rendererDetail" expression to see which GPU is in used.

    Tried that expression to endless runner text object, Was using AMD radeon pro 560 instead of the intel, on Macbook Pro in Chrome 69. Still very janky.

    For me jankyness kan differ greatly from run to run also. Some runs quite smooth with very little jank, some runs completely unplayable even on the same browser, a few previews in between. Have to close preview and try again. Might be a longshot, but can it be that the game starts before everything is ready, before things are loaded properly, causing something to get out of sync? No idea? Very odd though.

    But from todays tests with apk and nw.js export seems way better than preview and html export. Little to no jank in apk and nw.js but some very noticeable janks in preview and html5 export.

  • Ashley Canary did help a bit for me. I did get the an occasional minor jank similar to what you're describing.

    I would say there are 3 types, in various browsers/platforms.

    1. Minor frame drops that are barely visible, those doesn't really bother me, you need eagle vision to detect them.

    2. Bigger janks, that are clearly visible, that sometimes even cause input like clicks and touch not to be detected.

    3. Several seconds of unstable framerate. Seems to be completely random, don't know where these come from. Goes away after a while but can return.

    They look like this:

  • A profile showed it did occasionally skip a single frame, but that could just be something in background scheduling in the OS or driver.

    So that means i'm not going bonkers. They do happen, but seems to be no way to eliminate them completely, even if they are not caused by GC?

    Some games i've played, mostly older poorly optimized 3d games uses tripple buffering to even out the framerate a bit. Is that something that could help in these cases? and is it worth it for a bit more vram usage, depending on what type of game and platform you're targeting?

    From what I understand Tripple buffer is sometimes used to smooth the experience, similar to v-sync?

    Or these dropped out frames would not be helped by this kind of thing?

    Edit: Found this link and reading a bit. Just dropping link here in case there might be any useful things that can be done in WebGL to reduce jank on some platforms/browsers? Why knows, maybe there are some neat tricks online somewhere that might help.

    kripken.github.io/emscripten-site/docs/optimizing/Optimizing-WebGL.html

  • I created a bug report with Chrome here:

    https://bugs.chromium.org/p/chromium/issues/detail?id=881174

    It might be helpful if everyone posts there with names of devices that stutter. Maybe Ashley might have something to add.

    apk

    I tried your APK on my Sony Xpera XZ1, didn't notice any janks at all. Android version: 8.0.0

    Chrome version: 68.0.3440.91

    nw.js

    I also exported Endless runner for Mac with latest NW.js, and during a 2 minute play session i only noticed 2 barely noticeable janks. (macbook pro 2017)

    html5

    I also exported a html5 export and uploaded to my hosting service. tunepunk.com/endless Every other run, is extremely janky on the same machine, but most runs only a few minor janks. (macbook pro 2017)

    Same html5 export on Sony Xperia XZ1 android is a bit janky at times.

    -

    I can't draw any conclusions from this. But For exported project (apk, nw.js) for me runs better than html5 export, and preview, and not the other way around like you're describing in your bug report. Might be very dependent on browser version, browser brand, what os version, and the hardware itself? sometimes heavy janks, sometimes less, Don't know what to make of it.

    The only thing i can see and record is that in cases where there are janks, it somehow seems to be related to major GC in the debugger as they happen at the same time.

  • I created a bug report with Chrome here:

    https://bugs.chromium.org/p/chromium/issues/detail?id=881174

    It might be helpful if everyone posts there with names of devices that stutter. Maybe Ashley might have something to add.

    Cool. I'll post there too, but the jank in preview in chrome is one thing.

    If you're targeting online market like kongregate etc, where people might play on a variety of browsers and OS, should we file bugs with every browser vendor?

    If you usually export NW.js, do they have their own bug reporting? Do we get janks there?

    If you're targeting Mobile, Android, iOS we need to file bugs for those platforms/wrappers as well? I doubt filing a bug with only chrome solves anything at all, maybe for a few people, or at least we don't get stutters when we preview but those who play our games might get.

    How can we make sure that our exported games doesn't come with a stuttery experience? We simply have to rely on a heap of browser vendors and wrappers that may or may not think it's important enough to spend time on?

    My own projects run constant 60 fps on most platforms, but with the occasional jank. And one thing i noticed with the jank is not really the jank itself, is that if you get a jank exactly when you're klicking, tapping or any other input it may or may not register the input. I've played the endless runner template extensively for only testing the jank, and died due to failed input when a jank happens.

    I don't think it's as simple as filing bugs with browser vendors hoping they will fix it.

    I've tried demo games from other html5 engines as well, and they also have some degree of jank, some more, some less.

    The import thing is the final product. The export... is your game gonna be a janky experience for your customer, which may result in bad reviews, bad rating, fewer download, less profit, because of something we can't even control?