Scirra cog

About Us

We're a London based startup that develops Construct 2, software that lets you make your own computer games!

Archives

Browse all our blog posts

Latest Blog Entries

We love brains!

Join us! Joiiinnn ussss! Mooooree brains!

NW.js improvements in Construct 3

by Ashley | 16th, May 2017

When adding the NW.js exporter in Construct 3, we made a series of improvements to make using NW.js easier and more flexible. Here's a few of the changes we've made.

Remember we've started the Newgrounds Gamejam and all Construct 3's features are enabled until May 28th — so you can try all of this right now!

New Version Manager

In Construct 2, you had to download and install a single version of NW.js (equivalent to a single version of Chromium). You ended up downloading all platforms even if you didn't need them all, and you couldn't use more than one version at a time.

For Construct 3 we added a new NW.js Version Manager to help give you more control.

The NW.js version manager in Construct 3

With this dialog you can see all available NW.js versions, which have been downloaded, and download all or just some of the platforms for each version. The downloaded versions are saved to browser storage so it's quick to export with them, since it doesn't have to download it again. Downloading lots of NW.js versions can end up using a lot of storage space though, so there are options to delete versions as well.

Manage individual platforms

If you are only interested in a few platforms — for example just Windows, or just the 64-bit platforms across Windows, Mac and Linux — you can download (or delete) individual platforms for each NW.js version. This saves bandwidth and storage space for platforms you don't need.

The NW.js platforms manager in Construct 3

Download in the background

The NW.js downloads may take a while to complete, especially on slow connections. So if you start a series of downloads from the version manager, they run in the background and show their progress in a small status bar at the bottom of the screen. This means you can continue working on your project while the download is progressing, and come back when it's finished.

New export options

There weren't many options available when exporting to NW.js in Construct 2. In Construct 3 we added several more, allowing for much better configuration.

NW.js export options in Construct 3

First of all there's a new version selector, allowing you to switch between any version of NW.js. If you choose one which hasn't been downloaded, it downloads the selected platforms for that version when you export. The new Latest option is also useful for staying automatically up to date. While you can select any specific version of NW.js from the list, if you leave it on the "latest" option, it will switch to a new version when it's released. This means you always export with the latest version without having to do anything!

The Platforms section lets you select which individual platforms you want exported. This helps speed up exports by skipping platforms you don't care about.

There are several more new options:

  • Package assets compresses all your game's files in to a single file. Construct 2 always did this, creating a package.nw file. This slightly obscures your game's data, but has the downside that NW.js has to extract all the files from the package on startup, which can cause long startup times for very large games. Turning off this option means the game files are not packaged (they're simply copied to the same folder), which makes startup faster.
  • Compress final zip means the final zip that Construct 3 produces, which contains all the exported platforms, is compressed to reduce its size. If you turn it off, the final zip skips compression (using store-only mode in the zip). The main reason for this is to speed up exports: the zip can easily be hundreds of megabytes, and compressing it can often take a while.
  • Window frame, resizable window and kiosk mode are the same as they were in C2, affecting the style of the window.
  • Ignore GPU blacklist lets you control software rendering in NW.js. Some systems with poor quality graphics drivers can end up crashing or causing severe display glitches in your game. (This happens in the driver's native code — it's not the fault of HTML5, Chrome, NW.js or Construct, it's something everyone developing with computer graphics has to deal with.) Browsers provide blacklists to recognise faulty drivers or hardware and fall back to software rendering. This makes a trade-off: it guarantees the game works (if slowly), but in some cases games which by chance don't run in to driver problems, get unnecessarily slowed down. Rather than make a decision for you, we've added a checkbox so you can decide which trade-off you prefer.
  • Finally, Command line options lets advanced users add custom Chromium command line arguments. These can sometimes be handy for testing or for compatibility with other platforms, e.g. specifying --in-process-gpu in case your Steam game needs it.

Improved packaging

NW.js exports from Construct 2 often ran in to annoying file permission issues. Copying files from Windows to Mac would sometimes lose certain file attributes and the resulting app wouldn't work. There were workarounds to copy the files while keeping these attributes, but it could be inconvenient. Additionally on Linux you'd have to configure a few files to add execute permission before the NW.js app was allowed to be started.

The ZIP format is pretty old and obscure, but we did a lot of research, reverse-engineering and experimentation and finally solved this by customising the fine details of the zip file format to ensure compatibility across all systems. This means Construct 3 produces a zip which you can copy anywhere without worrying about how you copy it, and then when you extract the files from the zip on the destination system, everything is already correctly set up so it can immediately be executed! This means:

  • The extracted file permissions on Mac are correctly configured so the app can run without any fuss or further configuration
  • On Mac, the exported NW.js app is now also a directly runnable app bundle, so you can just drag-drop it out of the zip and double-click to run
  • The extracted file permissions on Linux are already configured to allow execute permission on executable files, so you can also run the app right away with no further configuration.

This all works regardless of which platform you export from originally; as long as you extract the files on the system itself, your app should run out-of-the-box.

Conclusion

Construct 3 provides far more customisation options when exporting with NW.js, ranging from choosing specific platforms in specific NW.js versions, auto-updating, adjusting packaging and compression options, and advanced options like ignoring the GPU blacklist or adding custom Chromium arguments. The improved packaging makes it much easier to test and deploy as well, providing apps that can run out-of-the-box across Windows, Mac and Linux, directly from the browser, and regardless of which platform you exported on.

Want to try it for yourself? You can use it now during the Gamejam!

Now follow us and share this

Tags:

Comments

2
Havok 4,783 rep

Great! It's definitely already easier to export whilst providing more customization - especially on Mac.

Tuesday, May 16, 2017 at 1:41:14 PM
2
Rable 2,360 rep

Excellent additions. Thanks for your hard work on this!

Tuesday, May 16, 2017 at 2:02:29 PM
1
Lordshiva1948 40.0k rep

Thanks, boys nice to see you all working hard

Tuesday, May 16, 2017 at 3:08:42 PM
1
tgenedavis 2,165 rep

"On Mac, the exported NW.js app is now also a directly runnable app bundle"

You just made my day!

Tuesday, May 16, 2017 at 4:12:35 PM
1
lemo 6,611 rep

Awesome updates, I like how you can select platforms especially.
Now we would just need custom executable icons in export options,
to make it more straight forward than third party apps

Tuesday, May 16, 2017 at 4:46:39 PM
0
narFsnw 1,338 rep

Is there a way to rename the executable file? So that it's clear to the end user which file to launch? I remember it to be confusing in Construct 2, especially for Linux (the file to run was called "nw", which is not very descriptive).

Wednesday, May 17, 2017 at 4:32:07 PM
0
DKinGer 420 rep

Interesting...

Wednesday, May 17, 2017 at 8:10:15 PM
0
triptych 4,653 rep

Why use NW.js vs Electron? Curious about your choice of runtimes. tangiblejs.com/posts/nw-js-and-electron-compared-2016-edition

Friday, May 19, 2017 at 5:00:10 AM
0
Robsonrpr 1,021 rep

This is great! Only problem with NW.JS remains, the over size of the generated file. A 5MB project turns a folder of more than 140MB just for WIn64. This is not cool! :(

Friday, May 19, 2017 at 6:44:00 AM
0
Fib 1,503 rep

That you Scirra! This is extremely helpful. I'm not sure if this is possible but I would love to choose an icon for the executable as well.

Friday, May 19, 2017 at 5:29:01 PM
0
Iftikhar555 940 rep

Construct 3 could be more fun if we can download from Android Play Store or Apple store like we downloading Games or apps

Friday, May 19, 2017 at 7:24:43 PM
0
LaDestitute 19.4k rep
Why use NW.js vs Electron? Curious about your choice of runtimes. tangiblejs.com/posts/nw-js-and-electron-compared-2016-editionquoted from triptych

www.scirra.com/blog/204/the-future-of-the-construct-3-runtime
You may want to give this a read if you're curious why they're going for nw.js or even not native exporters

Sunday, May 21, 2017 at 6:58:09 AM
0
JoeHorzen 1,062 rep

I love C3 - good work
my vk page vk.com/mrugamer

Sunday, May 21, 2017 at 10:18:12 AM
0
prabakaran 213 rep

Its nice one......

Monday, May 22, 2017 at 5:24:15 PM
0
Joksioskok 461 rep

Guys
I bought construct 3 yesterday for 1 year 99$
I want to sell it now for 40$ paypal

Contact :
[email protected]

I can give you proofs as much as you want !

Wednesday, June 07, 2017 at 4:05:44 PM

Leave a comment

Everyone is welcome to leave their thoughts! Register a new account or login.