Skip to content

Latest commit

 

History

History
51 lines (40 loc) · 2.06 KB

README.md

File metadata and controls

51 lines (40 loc) · 2.06 KB

ez-steam-api

This is a Node+JavaScript wrapper around the Steamworks SDK (based on Koffi), originally created for use in an Electron-based game on Steam.

Motivation

I opted to create my own wrapper instead of using Greenworks for a couple of reasons:

  • Greenworks is no longer maintained
  • Greenworks doesn't expose "friend leaderboard" functionality
  • I wanted a wrapper that could be reused easily from any language (with a foreign function interface-friendly, synchronous C API)

Usage

Currently, this library only exposes the functionality I needed for my game. Example code:

const { Steam } = require("ez-steam-api");

const appId = 12345; // Replace with your app id

(async () => {
    const shouldExit = Steam.start(appId);
    if (!shouldExit) {
        try {
            // Log the user's "persona" (display) name
            console.log(`Name: ${Steam.getUserName()}`);

            // Log the chosen language for the current app/game
            console.log(`Name: ${Steam.getAppLanguage()}`);

            // Set an achievement (this assumes an achievement named "FOOBAR" exists for the app)
            const newlyAchieved = Steam.setAchievement("FOOBAR");
            if (newlyAchieved) {
                await Steam.storeAchievementsAsync();
            }
    
            // Get a friend leaderboard (this assumes a leaderboard named "Score" exists for the app)
            const leaderboard = await Steam.getLeaderboardAsync("Score");
            const rows = await leaderboard.getFriendScoresAsync();
    
            console.log("Leaderboard:");
            for (const { name, score } of rows) {
                console.log(`${name}: ${score}`);
            }
        } finally {
            Steam.stop();
        }
    }
})();

Versioning and compatibility

The second (minor) version number corresponds to the Steamworks SDK's second version component. For example, X.57.Y is major version X, targeting Steamworks SDK 1.57, with patch version Y.