Skip to content
Michaël Picovschi edited this page Apr 18, 2015 · 9 revisions

Library not loaded: @loader_path/libsteam_api.dylib (or .dll for windows)

That means you didn't copy this file to your app directory and it can't link it at runtime.

SteamAPI_Init() failed; unable to locate a running instance of Steam, or a local steamclient.dll

Your steam client should be running (or you can copy the steamclient dynamic library into your app directory).

SteamAPI_Init() failed; no appID found.

Steam can't determine for which steam application you are trying to initialise the API. Either launch the game from Steam, or put the file steam_appid.txt containing the correct appID in your app folder. steam_appid.txt should contain just your application id, nothing else.

PublishWorkShopFile API returns k_EResultInsufficientPrivilege

This indicated your Steam account is limited, missing some features of Steam. You need to do one of the following things to access all Steam features:

  1. Purchase a game for Steam store
  2. Redeem a Steam gift
  3. Complete a microtransaction

For more details, please refer to Steam support.

Steam Overlay is unresponsive / frozen

In order for the Steam Overlay (activated by "Shift + Tab" by default) to work properly, you need to have your Node-Webkit draw every frame. Normally, the browser won't redraw every frame when it's idle.

One possible solution to this would be, to insert a small 1x1 pixel canvas element, which you update in every frame. Example:

<html>
<head>
<script>
    function forceRefresh() {
        var canvas = document.getElementById("forceRefreshCanvas");
        var ctx = canvas.getContext("2d");
        ctx.clearRect(0, 0, canvas.width, canvas.height);
        window.requestAnimationFrame(forceRefresh);
    }
</script>
<body onload="forceRefresh();">
    <canvas id="forceRefreshCanvas" width="1" height="1"></canvas>
</body>
</html>

Now Node-Webkit will redraw every frame at the current refresh rate (in most cases 60 fps). This hack might not be necessary for game using WebGL because a canvas is probably already refreshed every frame for rendering.

If this doesn't seem to work, try adding the chromium flag "--in-process-gpu" to your package.json as well.

If the overlay appears strange, like other background windows are mixing with it try to remove the transparent flag in windows property of package json.

  "window": {
    "toolbar": false,
    "fullscreen": true,
    "frame": false,
    //"transparent": true, // now should work correctly
    "no-edit-menu" : true
  },

Feel free to update this Wiki if you find a better solution.

Clone this wiki locally