Quick answer: Export your Construct 3 project as an NW.js desktop application, integrate Steamworks features using the Greenworks plugin, configure your depots and build scripts in Steamworks, then upload with the SteamPipe CLI tool. The entire pipeline from Construct 3 export to a live Steam store page is well-established, and many successful indie titles have shipped this way.
Getting your Construct 3 game onto Steam is one of the most impactful things you can do for visibility and sales. Steam remains the dominant PC game marketplace, and Construct 3’s NW.js export produces a native desktop application that runs identically to games built with traditional engines. This guide walks through every step from export settings to your first public build, including the Steamworks integrations that players expect — achievements, cloud saves, and overlay support.
Exporting as NW.js
NW.js (formerly node-webkit) wraps your game in a Chromium browser with Node.js integration, producing a standalone executable. In Construct 3, go to Menu → Project → Export and select NW.js as the platform.
Configure these export settings carefully:
// NW.js export settings for Steam
// Window
// Title: "Your Game Name"
// Width: 1920
// Height: 1080
// Resizable: Yes
// Fullscreen mode: Letterbox scale (maintains aspect ratio)
// NW.js options
// NW.js version: Use the latest stable (0.83+)
// Enable Node.js: Yes (required for Greenworks)
// Package as: Normal folder (not compressed, easier to patch)
// Icon: provide a 256x256 PNG icon
// The export produces a folder with your .exe and supporting files
After export, test the build by running the generated executable directly. Make sure the game runs, saves work, and there are no console errors. Open the developer console with F12 if you need to debug.
Setting Up Your Steamworks Account
If you have not already, create a Steamworks partner account at partner.steamgames.com. You will need to provide tax information and banking details for revenue payouts. Then create a new app listing and pay the $100 application fee.
Once your app is created, you will receive an App ID (a number like 2140780). This ID is critical — you will use it in your Greenworks integration and your depot configuration. Set up your store page with at least these assets:
// Required Steam store assets
// Header Capsule: 460 x 215 px (shown in library and search)
// Small Capsule: 231 x 87 px (shown in lists)
// Main Capsule: 616 x 353 px (shown on store page)
// Hero Graphic: 3840 x 1240 px (optional, store page background)
// Library Hero: 600 x 900 px (library detail view)
// Screenshots: min 5, 1920 x 1080 recommended
// Trailer: MP4, 1080p recommended, 1-2 min
// Store description: supports basic HTML formatting
// System requirements: NW.js games need at least:
// OS: Windows 7+, macOS 10.13+, Ubuntu 18.04+
// Processor: Any dual core
// Memory: 4 GB RAM
// Graphics: WebGL 2.0 capable GPU
// Storage: depends on your game assets
Integrating Steamworks with Greenworks
Greenworks is an open-source Node.js addon that exposes the Steamworks API to NW.js applications. It lets your Construct 3 game unlock achievements, save to Steam Cloud, show the Steam overlay, and read the player’s Steam name and ID.
Download the pre-built Greenworks binary that matches your NW.js version from the Greenworks releases page. Place the files in your exported game folder and create a steam_appid.txt file containing your App ID:
// File: steam_appid.txt (in the root of your export folder)
2140780
// Folder structure after adding Greenworks:
// YourGame/
// package.nw/ (your game files)
// nw.exe (NW.js runtime)
// steam_appid.txt (your app ID)
// greenworks.js (Greenworks API wrapper)
// greenworks-nw.node (native addon)
// steam_api.dll (Steamworks SDK)
// sdkencryptedappticket.dll
Now add JavaScript code in your Construct 3 project to initialize Greenworks and interact with Steam. Use a Script action or a dedicated script file loaded on startup:
// Initialize Greenworks in a Construct 3 script
const greenworks = require('./greenworks');
if (greenworks.init()) {
console.log("Steam API initialized successfully");
console.log("Player: " + greenworks.getSteamId().getPersonaName());
} else {
console.log("Steam API failed to initialize");
// Game should still work without Steam for testing
}
// Unlock an achievement
function unlockAchievement(achievementId) {
greenworks.activateAchievement(achievementId,
() => console.log("Achievement unlocked: " + achievementId),
(err) => console.log("Achievement error: " + err)
);
}
// Save data to Steam Cloud
function saveToCloud(filename, data) {
greenworks.saveTextToFile(filename, data,
() => console.log("Cloud save successful"),
(err) => console.log("Cloud save failed: " + err)
);
}
// Load data from Steam Cloud
function loadFromCloud(filename, callback) {
greenworks.readTextFromFile(filename,
(data) => callback(data),
(err) => console.log("Cloud load failed: " + err)
);
}
To call these functions from your Construct 3 event sheets, use the Run JavaScript action in the Browser object or the Script action in modern Construct 3. You can also expose them to the event sheet via window.unlockAchievement = unlockAchievement; and call them using the Call Function expression.
Configuring Depots and Uploading Builds
Steam uses a system called SteamPipe to upload and manage game builds. You define depots (collections of files) and build scripts (instructions for what to upload). In your Steamworks dashboard, create at least one depot for your app.
// File: app_build_2140780.vdf (build script)
"AppBuild"
{
"AppID" "2140780"
"Desc" "Version 1.0.0 release build"
"BuildOutput" "..\\output\\"
"ContentRoot" "..\\content\\"
"Depots"
{
"2140781"
{
"FileMapping"
{
"LocalPath" "*"
"DepotPath" "."
"Recursive" "1"
}
"FileExclusion" "*.pdb"
}
}
}
// Upload using the steamcmd tool:
// steamcmd +login your_username +run_app_build
// "C:\builds\app_build_2140780.vdf" +quit
Place your exported NW.js game folder in the content directory referenced by your build script. Run the steamcmd tool to upload. After uploading, go to your Steamworks dashboard, find the new build under “Builds,” and set it live on the default branch.
Pre-Launch Checklist
Before requesting the store page review, make sure everything is in order:
// Steam launch checklist for Construct 3 games
// 1. Remove steam_appid.txt from the uploaded build
// (Steam provides the app ID at runtime, the txt is dev-only)
// 2. Set the launch options in Steamworks:
// Executable: nw.exe (Windows) / nw (Linux) / nwjs.app (macOS)
// Launch type: Play default
// 3. Configure Steam Cloud in Steamworks settings:
// Byte quota per user: 10485760 (10 MB is plenty for save data)
// File count per user: 20
// 4. Create achievements in the Steamworks dashboard
// Each needs: API Name, Display Name, Description, Icon (64x64)
// 5. Test the build by installing from Steam (use a beta key)
// Verify achievements trigger, cloud saves sync, overlay works
// 6. Submit store page for review (takes 2-5 business days)
// 7. Submit build for review
// 8. Set a release date or click "Release now"
Related Issues
If your NW.js export crashes on launch, see Fix: Construct 3 NW.js Export Crash on Startup. For Greenworks initialization failures, check Fix: Construct 3 Greenworks Steam API Init Failed. If your game runs but Steam overlay does not appear, see Fix: Construct 3 Steam Overlay Not Showing. For depot upload errors, check Fix: SteamPipe Depot Upload Failed.
Ship a demo on Steam first. It validates your pipeline and builds wishlists before your full launch.