Finally fixed! Node-Webkit WebGL issue on Win7/8 laptops

  • Pardon me if this has been mentionned before but I just solved an issue I've had literraly for months and couldn't find the answer anywhere.

    My game is running perfectly fine on my Win7 workstation and was just horrible on a Win7 laptop with intel HD graphics 3000.

    Seems like Scirra was still searching for an answer: https://www.bountysource.com/issues/2781707-terrible-performance-in-node-webkit-0-10-rc1?utm_campaign=plugin&utm_content=tracker%2F51989&utm_medium=issues&utm_source=github Ashley

    This helped me: https://github.com/rogerwang/node-webkit/issues/185 but I still had the issue with the previous Node-Webkit release.

    I've seen lots of threads where people encounter this issue. And all kinds of suggested solutions that didn't work as far as defragging your harddrive...

    Here's how I solved it.

    I just downloaded the latest Node-Webkit version release today (22 July 2014)

    Here it is http://dl.node-webkit.org/v0.10.0/node-webkit-v0.10.0-win-ia32.zip (from: https://github.com/rogerwang/node-webkit)

    Add your package.nw file to the new node-webkit files, rename the nw.exe to your game name.

    (The name you get when the project is exported to node-webkit)

    And finally, move these two files in the same folder than all the rest of the files.

    "d3dcompiler_43.dll" & "D3DX9_43.dll"

    You will find the first file in the installer of Chrome, and you should already have the last one somewhere on your computer. I found mine in an Adobe folder. If not, just search it on google.

    You should finally be able to run your game at full speed.

    This was tricky since the "renderer" expression used in a text object would tell you tha tit's using WebGL but it was in fact disabled as all object with effects would be left unaffected.

    I hope Scirra will be able to find a way to integrate this in later releases.

  • Last I looked in to this you were not legally allowed to distribute d3dcompiler_43.dll and D3DX9_43.dll: you must instead provide the Microsoft-approved dxwebsetup.exe installer which shows a EULA agreement for those components that the user must agree to. The installer then installs those files.

    Construct 2 already shipped dxwebsetup.exe with every node-webkit export and running that on any system which has poor performance/no webgl support should have already fixed the problem. You may want to add this to an installer for your game. Of course, web-based HTML5 games have no such issues, the browsers already include these components.

  • The dxwebsetup.exe indeed installs these files but for some reason it doesn't change anything, the WebGL effects still don't run and the framerate is very low.

    Both files mentioned above need to be in the Node-Webkit folder when launching the .exe.

    And the latest version of Node-Webkit must be used. That's the only way I managed to fix it.

  • Hello everyone,

    I would like to update this topic due to some recent findings when I was trying to get WebGL to run with Node-WebKit on my laptop (radeon hd 5650 GPU).

    On my laptop WebGL was running fine on browsers but not on Node-WebKit builds.

    And so, I took Telyko's advice and downloaded the two previously mentioned files "d3dcompiler_43.dll" & "D3DX9_43.dll", however, I did not need to download the latest Node-Webkit version for it to work.

    In conclusion, all I needed to fix said issue was to simply add these two DLL files to the root folder of my Node-WebKit build..

    @ashley Do you think there is a way to implement this somehow into a future release, or is it impossible due to the legality reasons that you spoke of before? Without these specific DLL files, my laptop would not have been able to play WebGL games released on platforms such as Steam. Maybe this is something worth looking into which could actually help broaden future GPU support?

  • Someone finally got my point!

  • Someone finally got my point!

    Indeed! And it was a very good one, at that!

  • performance not change while added the two dll

  • purplemonkey - no, my last post is still true. The solution is to make an installer for your game that runs the dxwebsetup file.

  • purplemonkey - no, my last post is still true. The solution is to make an installer for your game that runs the dxwebsetup file.

    No Ashley, that is not the solution in this case and that is exactly why I updated this specific topic. I've tried the dxwebsetup installer on several different laptops and it is not a guaranteed method regardless of how many times I try the dxwebsetup installer.

    As I did state before, in the cases where dxwebsetup did not work, copying the two previously mentioned files into the root folder of a project would insure success where dxwebsetup would not.

    This is why I worry about future game releases on Steam where people will download a game and run the standard dxwebsetup installer which will then ostensibly not work for everyone.

    Thank you for your support on this matter.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Are you sure? Did you try rebooting after the setup? It should drop those DLLs in the system folder so they're available to all applications, not just the node-webkit one.

  • Rebooting seems like a very inconvenient solution. Don't you have a laptop with Win7 and intel HD graphics 3000 on which you could try?

  • Rebooting seems like a very inconvenient solution. Don't you have a laptop with Win7 and intel HD graphics 3000 on which you could try?

    Inconvenient or no, rebooting is the standard after many installations. It allows the computer to reinitialize the OS from a clean start with the new files/services running as intended. It's not always necessary to reboot to access/run the newly installed files, but it's good practice.

    I don't really have anything of value to add, just wanted to point out Ashley's reasoning.

    As an IT guy, this is the troubleshooting process I would try: Clear out the files and .dlls you have in place (make backups of those individual .dll files) and uninstall dx to get rid of residual files. Then reboot, reinstall with dxwebsetup.exe (might as well try elevated/admin priveledge on install) and reboot after install finishes.

    If that doesn't make the game work, drop the individual .dlls back into the root project folder. If it works after that, it sounds like the .dlls aren't being accessed properly from the system folder and only from the root project folder?

    I dunno.

    PS: I think I've had problems with dxwebsetup.exe being a pos in the past, getting stuck/not completing installation successfully. I hate web setups.

  • Yeah, welcome to native development. One of the advantages of web delivery is you don't have to deal with all of this. It was a constant thorn in our side when we were working on Construct Classic, too.

  • Hello everyone,

    So I did some quick testing in regards to this discussed issue and thought I'd update you all on the results of it all..

    First and foremost I removed the two .dll-files from the root folder of my project and ran my build in which webgl did not run successfully.

    After this experiment I tried reinstalling directx (by using the included dxwebsetup.exe) as well as rebooting my system. This was not a successful operation either.

    Lastly, I tried uninstalling directx all together and reinstalling it once again (as well as rebooting my system). This, however, did seem to do the trick as I now require no seperate .dll files in the root of my build folder for the project to run webgl successfully.

    Thus, In conclusion, I'm not entirely sure what to make of all this other than directx seems to be a bit iffy when installing? I haven't a clue why it worked this time as compared to the first time I installed it when it did not. I hope this brings some insight on the issue..

  • Thank you all for your explanations and testings.

    The only thing I think about is the customer experience. You buy a game, you install it, and you play it. No one wants to have to ask people to uninstall / re-install directX, reboot their computer and move a bunch of .dlls around.

    I'm also kinda into IT and know very well that rebooting is the standard procedure on a lot of cases but this cannot reasonably apply to the gaming business.

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