Fillrate can be a big bottleneck on high desktop resolutions and weak gpu's, so I've been looking into ways to force resolution switches to deal with it. The best resolution switch program I was able to find was Display Changer so I wrote a little launcher program to set preferred game resolutions without having to mess around with .bat files. You can get it here if you want to check it out (PC only nw.js builds):
https://dl.dropboxusercontent.com/u/70562654/Launcher.zip
Place 'Launcher.exe' and 'launch.txt' in your game folder, open launch.txt and set 'Prototype.exe' to whatever your game.exe file is called. The next lines are resolutions you want the game to be run in:
Prototype.exe (replace with name of your .exe)
1366 (target resolution width 1st priority)
768 (target resolution height 1st priority)
1024 (target resolution width 2nd priority)
768 (target resolution height 2nd priority)
800 (3rd priority)
600 (etc)
640
480
The launcher will try to run the game in the resolution on top of the list. If the graphics card or monitor can't do it it'll try the next one instead, and then the next one etc. If none of the resolutions are available it'll settle for running the game in native desktop resolution. There's a maximum of four resolutions you can include in the text file but you don't need to put that many in there if you don't want to. Include three, two, or one and it'll work just as well.
You'll also need to download Display Changer and place dccmd.exe in your game folder. Link here:
http://12noon.com/?page_id=80
Some problems:
No proper switching to window mode. The custom resolution will stay in effect until you quit the game. Same with Alt-Tab.
Display Changer license fee for commercial projects is pretty brutal: 500$.
So I've been thinking about trying to write my own. Maybe even go for a fully customizable launcher window. But before I look into it more I'd like to know is there any way for C2 nw.js builds to communicate with external apps, through a plugin or otherwise? For instance, if the browser object does a 'Cancel Fullscreen' then it would be great if the launcher app could get informed about it so that it can restore the desktop resolution until 'Request Fullscreen' is run again.