[RPG Maker] Orange Greenworks

The OrangeGreenworks plugin will let you use Greenworks to integrate your Rpg Maker MV game with the Steamworks API, but the setup is a little complicated.

Configuring the Plugin:

If you simply put the OrangeGreenworks plugin on your project, it will simulate a steam connection so you don’t get any errors while playtesting, even if you don’t have greenworks properly configured.

Configuring Greenworks:

First of all, download the latest version of Greenworks (last time I checked the most recent version was 0.10.0). You need to pick the nwjs version (unless you’re using Electron). Make sure to download it for the right OS and CPU (most of time you’ll use win-x64). You can also download all 5 of them if you want, as the files will have different names and only the right one will be loaded.

You’ll get a zip file with a folder called “lib” and a file called greenworks.js. Put both of them on your project’s main folder. The JS file is the same regardless of which zip you downloaded, so you only need one copy if you downloaded multiple zips.

Next, download the version of the Steamworks SDK that your greenworks lib was compiled for (the greenworks download page should say what version it is. For greenworks 0.10, the best Steamworks SDK version is 1.40). You can find it for download on the steamworks site, if you log in with your steam account there.

On the steamworks SDK files, there will be a folder called redistributable_bin. Open it and copy the steam_api.dll file. Paste it inside the lib folder that you put on your project on the previous step.

With the newer versions of greenworks, there are several files that you have to copy and some that you have to rename, like this (you can ignore any OS/CPU you don’t care about):

Next, go to RPG Maker MV and deploy your game to any folder you want.

Go to the deployed folder and make sure that the lib folder and greenworks.js file are inside the www folder. Outside the www folder, delete everything except for the package.json file. We will replace those deleted files by a newer version of nw.js later.

Now create a file called steam_appid.txt on the same folder of the deleted files and put your game’s appid inside of it. You can find this ID on the Steamworks page (it usually ends with a zero). This file is only needed for testing purposes, when you send your game to steam’s servers, you don’t need to include it.

Finally, you’ll need to download nw.js. Once again, check the greenworks page to determine which version you should download (For greenworks 0.10, it is nw.js version 0.22.3). There are two different builds to choose from: Normal and SDK. In the SDK build, you can press the F12 key to open the console (good for testing). In the normal build, there’s no way to open the console (better for a final release). Place all of the nw.js files where you removed the old files earlier.

Everything should be ready now. Run the nw file and your steam status should indicate that you’re running your game. If it is, then everything is working.

Available Commands:

OrangeGreenworks.getScreenName();

This script call will return the Player’s Steam Screen Name. While playtesting, it will return “Play Test” instead.
You can set this name to a variable with the following script call:

$gameVariables.setValue(VARIABLE_ID, OrangeGreenworks.getScreenName());

just replace VARIABLE_ID for the number of the variable that you want to store the name on.

OrangeGreenworks.getUILanguage();

This script call will return the Player’s Steam UI Language. While playtesting, it will always return ‘english’.

OrangeGreenworks.getGameLanguage();

This script call will return the language that the player chose on the game settings. While playtesting, it will always return ‘english’.

OrangeGreenworks.activateAchievement('ACHIEVEMENT_NAME');

This script call will activate an achievement called ACHIEVEMENT_NAME. While playtesting, it will only display a message on the console indicating that the achievement was activated.

New commands (OrangeGreenworks 1.2):

$gameSwitches.setValue(SWITCH_ID, OrangeGreenworks.getAchievement('ACHIEVEMENT_NAME'));

Replace SWITCH_ID for the number of a switch in your game. This script call will check if the player already has the achievement called ACHIEVEMENT_NAME and change the value of the switch accordingly.

OrangeGreenworks.clearAchievement('ACHIEVEMENT_NAME');

This script call will remove the achievement from the user. It’s useful when you’re testing the game, but probably won’t be needed for anything else.

$gameVariables.setValue(VARIABLE_ID, OrangeGreenworks.getNumberOfAchievements());

Replace VARIABLE_ID for the number of a variable in your game. This script will put in that variable the number of achievements that your game has.

Commands pending documentation (Already available in the plugin):