steamworks-ffi-node 0.5.3 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  # Steamworks FFI - Steamworks SDK Integration
5
5
 
6
- A production-ready TypeScript/JavaScript wrapper for the Steamworks SDK using Koffi FFI, designed for Node.js and Electron applications with **Steamworks SDK v1.62 integration**.
6
+ A TypeScript/JavaScript wrapper for the Steamworks SDK using Koffi FFI, designed for Node.js and Electron applications with **Steamworks SDK v1.62 integration**.
7
7
 
8
8
  > ✅ **No C++ Compilation Required**: Uses Koffi FFI for seamless installation without Visual Studio Build Tools!
9
9
 
@@ -68,7 +68,7 @@ A production-ready TypeScript/JavaScript wrapper for the Steamworks SDK using Ko
68
68
  - ✅ Cloud settings (check/toggle cloud sync for account and app)
69
69
  - **Steamworks Integration**: Direct FFI calls to Steamworks C++ SDK
70
70
  - **Cross-Platform**: Windows, macOS, and Linux support
71
- - **Batteries Included**: All Steamworks redistributables bundled - no SDK download needed!
71
+ - **Easy Setup**: Simple installation with clear SDK setup guide
72
72
  - **Electron Ready**: Perfect for Electron applications
73
73
  - **TypeScript Support**: Complete TypeScript definitions included
74
74
  - **No C++ Compilation**: Uses Koffi FFI for seamless installation
@@ -78,18 +78,25 @@ A production-ready TypeScript/JavaScript wrapper for the Steamworks SDK using Ko
78
78
  ### Installation
79
79
 
80
80
  ```bash
81
- # Install the package - includes all Steam redistributables!
81
+ # Install the package
82
82
  npm install steamworks-ffi-node
83
83
  ```
84
84
 
85
85
  ### Setup
86
86
 
87
- 1. **Create `steam_appid.txt`** in your project root:
87
+ 1. **Download Steamworks SDK** (required separately due to licensing):
88
+ - Visit [Steamworks Partner site](https://partner.steamgames.com/)
89
+ - Download the latest Steamworks SDK
90
+ - Extract and copy `redistributable_bin` folder to your project
91
+ - See [STEAMWORKS_SDK_SETUP.md](https://github.com/ArtyProf/steamworks-ffi-node/blob/main/docs/STEAMWORKS_SDK_SETUP.md) for detailed instructions
92
+
93
+ 2. **Create `steam_appid.txt` (optional)** in your project root:
88
94
  ```bash
89
95
  echo "480" > steam_appid.txt # Use 480 for testing, or your Steam App ID
90
96
  ```
97
+ *Note: You can skip this file and pass the App ID directly to `steam.init(appId)` instead*
91
98
 
92
- 2. **Make sure Steam is running** and you're logged in
99
+ 3. **Make sure Steam is running** and you're logged in
93
100
 
94
101
  ### Basic Usage
95
102
 
@@ -336,66 +343,33 @@ app.on('before-quit', () => {
336
343
  });
337
344
  ```
338
345
 
339
- ### 📦 Packaging with ASAR
340
-
341
- When packaging your Electron app with ASAR archives, **native modules must be unpacked**. The library automatically detects ASAR and looks for files in `.asar.unpacked`.
346
+ ### 📦 Electron Packaging
342
347
 
343
- #### electron-builder Configuration
348
+ For Electron applications, the library will automatically detect the Steamworks SDK files in your project directory. No special packaging configuration is needed - just ensure your `steamworks_sdk/redistributable_bin` folder is present in your project.
344
349
 
345
- Add to your `package.json` or `electron-builder.yml`:
346
-
347
- ```json
348
- {
349
- "build": {
350
- "asarUnpack": [
351
- "node_modules/steamworks-ffi-node/**/*"
352
- ]
353
- }
354
- }
355
- ```
356
-
357
- #### electron-forge Configuration
358
-
359
- Add to your `forge.config.js`:
360
-
361
- ```javascript
362
- module.exports = {
363
- packagerConfig: {
364
- asar: {
365
- unpack: "**/{node_modules/steamworks-ffi-node}/**/*"
366
- }
367
- }
368
- };
369
- ```
370
-
371
- The library will automatically:
372
- 1. Detect if running inside an ASAR archive
373
- 2. Replace `.asar` with `.asar.unpacked` in the library path
374
- 3. Load the Steamworks SDK from the unpacked directory
375
-
376
- This ensures native libraries work correctly in packaged Electron apps!
350
+ The library searches for the SDK in standard locations within your Electron app bundle.
377
351
 
378
352
  ## 🔧 Requirements
379
353
 
380
354
  - **Node.js**: 18+
381
355
  - **Steam Client**: Must be running and logged in
382
356
  - **Steam App ID**: Get yours at [Steamworks Partner](https://partner.steamgames.com/)
383
- - **steam_appid.txt**: Create in your project root with your App ID
357
+ - **steam_appid.txt**: Optional - create in your project root OR pass to `steam.init(appId)`
384
358
 
385
359
  ### Platform Support
386
- - ✅ **Windows**: Included (steam_api64.dll / steam_api.dll)
387
- - ✅ **macOS**: Included (libsteam_api.dylib)
388
- - ✅ **Linux**: Included (libsteam_api.so)
360
+ - ✅ **Windows**: steam_api64.dll / steam_api.dll
361
+ - ✅ **macOS**: libsteam_api.dylib
362
+ - ✅ **Linux**: libsteam_api.so
389
363
 
390
364
  **Steamworks SDK Version**: v1.62 (Latest)
391
365
 
392
- All redistributable binaries are included in the package - no manual SDK download required!
366
+ *Note: You must download and install the SDK redistributables separately as described in the Setup section above.*
393
367
 
394
368
  ## 🔧 Troubleshooting
395
369
 
396
370
  ### "SteamAPI_Init failed"
397
371
  - ❌ Steam client not running → **Solution**: Start Steam and log in
398
- - ❌ `steam_appid.txt` missing → **Solution**: Create file in project root with your App ID
372
+ - ❌ No App ID specified → **Solution**: Create `steam_appid.txt` in project root OR pass App ID to `steam.init(appId)`
399
373
  - ❌ Invalid App ID → **Solution**: Use 480 for testing, or your registered App ID
400
374
 
401
375
  ### "Cannot find module 'steamworks-ffi-node'"
@@ -409,16 +383,11 @@ All redistributable binaries are included in the package - no manual SDK downloa
409
383
  ### Electron-specific issues
410
384
  - ❌ Initialized in renderer → **Solution**: Only initialize in main process
411
385
  - ❌ Not cleaning up → **Solution**: Call `shutdown()` in `before-quit` event
412
- - ❌ "cannot open shared object file: Not a directory" (Linux) → **Solution**: Add `asarUnpack` configuration (see Electron Integration section above)
413
- - ❌ Native module errors in packaged app → **Solution**: Ensure `steamworks-ffi-node` is in `asarUnpack` list
386
+ - ❌ "Steamworks SDK library not found" in packaged app → **Solution**: Include SDK redistributables in your build (see Electron Packaging section above)
387
+ - ❌ Native module errors in packaged app → **Solution**: Ensure Steamworks SDK files are properly included in your app bundle
414
388
 
415
389
  ## 📄 License
416
390
 
417
391
  MIT License - see LICENSE file for details.
418
392
 
419
- ### Steamworks SDK Redistributables
420
-
421
- This package includes redistributable binaries from the Steamworks SDK (© Valve Corporation).
422
- These are distributed under the Steamworks SDK Access Agreement in accordance with Section 1.1(b).
423
-
424
- See [THIRD_PARTY_LICENSES.md](https://github.com/ArtyProf/steamworks-ffi-node/blob/main/THIRD_PARTY_LICENSES.md) for full details.
393
+ **Note**: This package requires the Steamworks SDK redistributables to be installed separately by users. Users are responsible for complying with Valve's Steamworks SDK Access Agreement when downloading and using the SDK.
@@ -111,6 +111,7 @@ export declare class SteamLibraryLoader {
111
111
  SteamAPI_ISteamRemoteStorage_SetCloudEnabledForApp: koffi.KoffiFunction;
112
112
  /**
113
113
  * Get platform-specific Steam library path
114
+ * Users must download and install Steamworks SDK redistributables separately
114
115
  */
115
116
  private getSteamLibraryPath;
116
117
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"SteamLibraryLoader.d.ts","sourceRoot":"","sources":["../../src/internal/SteamLibraryLoader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SteamLibraryLoader.d.ts","sourceRoot":"","sources":["../../src/internal/SteamLibraryLoader.ts"],"names":[],"mappings":"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"}
@@ -46,51 +46,81 @@ class SteamLibraryLoader {
46
46
  }
47
47
  /**
48
48
  * Get platform-specific Steam library path
49
+ * Users must download and install Steamworks SDK redistributables separately
49
50
  */
50
51
  getSteamLibraryPath() {
51
52
  const platform = process.platform;
52
53
  const arch = process.arch;
53
- let libPath;
54
- let basePath = __dirname;
55
- // Handle ASAR archives in Electron
56
- // When packaged in .asar, native modules need to be in .asar.unpacked
57
- if (basePath.includes('.asar')) {
58
- // Replace .asar with .asar.unpacked
59
- basePath = basePath.replace(/\.asar([/\\])/, '.asar.unpacked$1');
60
- console.log(`[Steamworks] Detected ASAR archive, using unpacked path`);
61
- }
62
- if (platform === 'win32') {
63
- if (arch === 'x64') {
64
- libPath = path.join(basePath, '../../steamworks_sdk/redistributable_bin/win64/steam_api64.dll');
54
+ let steamworksSdkPaths = [];
55
+ // Define possible Steamworks SDK locations (user must install these)
56
+ const possibleBasePaths = [
57
+ // Current working directory (most common for Node.js projects)
58
+ process.cwd(),
59
+ // Project root (if running from subdirectory)
60
+ path.resolve(process.cwd(), '..'),
61
+ path.resolve(process.cwd(), '../..'),
62
+ // Parent directories relative to this module
63
+ path.resolve(__dirname, '../..'),
64
+ path.resolve(__dirname, '../../..'),
65
+ path.resolve(__dirname, '../../../..'),
66
+ ];
67
+ // Build platform-specific library paths
68
+ for (const basePath of possibleBasePaths) {
69
+ let platformLibPath;
70
+ if (platform === 'win32') {
71
+ if (arch === 'x64') {
72
+ platformLibPath = path.join(basePath, 'steamworks_sdk/redistributable_bin/win64/steam_api64.dll');
73
+ }
74
+ else {
75
+ platformLibPath = path.join(basePath, 'steamworks_sdk/redistributable_bin/steam_api.dll');
76
+ }
77
+ }
78
+ else if (platform === 'darwin') {
79
+ platformLibPath = path.join(basePath, 'steamworks_sdk/redistributable_bin/osx/libsteam_api.dylib');
80
+ }
81
+ else if (platform === 'linux') {
82
+ platformLibPath = path.join(basePath, 'steamworks_sdk/redistributable_bin/linux64/libsteam_api.so');
65
83
  }
66
84
  else {
67
- libPath = path.join(basePath, '../../steamworks_sdk/redistributable_bin/steam_api.dll');
85
+ throw new Error(`Unsupported platform: ${platform}`);
68
86
  }
87
+ steamworksSdkPaths.push(path.resolve(platformLibPath));
69
88
  }
70
- else if (platform === 'darwin') {
71
- libPath = path.join(basePath, '../../steamworks_sdk/redistributable_bin/osx/libsteam_api.dylib');
72
- }
73
- else if (platform === 'linux') {
74
- libPath = path.join(basePath, '../../steamworks_sdk/redistributable_bin/linux64/libsteam_api.so');
75
- }
76
- else {
77
- throw new Error(`Unsupported platform: ${platform}`);
78
- }
79
- // Resolve to absolute path
80
- libPath = path.resolve(libPath);
81
- // Check if the library exists
82
- if (!fs.existsSync(libPath)) {
83
- throw new Error(`Steamworks SDK library not found at: ${libPath}\n` +
84
- 'Please download Steamworks SDK and place it in the steamworks_sdk/ directory.\n' +
85
- 'For Electron apps, make sure native modules are in the .asar.unpacked directory.');
89
+ // Check each possible path
90
+ for (const checkPath of steamworksSdkPaths) {
91
+ if (fs.existsSync(checkPath)) {
92
+ return checkPath;
93
+ }
86
94
  }
87
- return libPath;
95
+ // If no library found, provide detailed error message
96
+ const expectedPath = steamworksSdkPaths[0]; // Use the first (most common) path for error message
97
+ console.error(`[Steamworks] Steamworks SDK library not found!\n\n` +
98
+ ` Expected location: ${expectedPath}\n\n` +
99
+ ` To fix this issue:\n` +
100
+ ` 1. Download the Steamworks SDK from: https://partner.steamgames.com/\n` +
101
+ ` 2. Extract the SDK to your project root directory\n` +
102
+ ` 3. Ensure the following structure exists:\n` +
103
+ ` steamworks_sdk/\n` +
104
+ ` └── redistributable_bin/\n` +
105
+ ` ├── win64/steam_api64.dll (Windows 64-bit)\n` +
106
+ ` ├── steam_api.dll (Windows 32-bit)\n` +
107
+ ` ├── osx/libsteam_api.dylib (macOS)\n` +
108
+ ` └── linux64/libsteam_api.so (Linux)\n\n` +
109
+ ` Note: Due to Valve's licensing terms, the Steamworks SDK redistributables\n` +
110
+ ` cannot be bundled with this package and must be downloaded separately.\n\n` +
111
+ ` Quick verification: Run 'npm run verify-sdk' to check your setup\n\n` +
112
+ ` Searched paths:\n${steamworksSdkPaths.map(p => ` - ${p}`).join('\n')}`);
113
+ return null;
88
114
  }
89
115
  /**
90
116
  * Load the Steamworks library and bind all FFI functions
91
117
  */
92
118
  load() {
93
119
  const libPath = this.getSteamLibraryPath();
120
+ if (!libPath) {
121
+ console.error('[Steamworks] Cannot load Steamworks library: SDK not found');
122
+ return;
123
+ }
94
124
  console.log(`[Steamworks] Loading library: ${libPath}`);
95
125
  this.steamLib = koffi.load(libPath);
96
126
  // Define function signatures using Koffi
@@ -1 +1 @@
1
- {"version":3,"file":"SteamLibraryLoader.js","sourceRoot":"","sources":["../../src/internal/SteamLibraryLoader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SteamLibraryLoader.js","sourceRoot":"","sources":["../../src/internal/SteamLibraryLoader.ts"],"names":[],"mappings":"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"}
package/docs/README.md ADDED
@@ -0,0 +1,155 @@
1
+ # Steamworks FFI Documentation
2
+
3
+ Complete API documentation for all Steamworks FFI functionality.
4
+
5
+ ## 🎯 Manager-Based API
6
+
7
+ Steamworks FFI uses a **manager-based architecture** for better organization:
8
+
9
+ ```typescript
10
+ import SteamworksSDK from 'steamworks-ffi-node';
11
+
12
+ const steam = new SteamworksSDK();
13
+ steam.init({ appId: 480 });
14
+
15
+ // Access features through specialized managers
16
+ steam.achievements.* // Achievement operations
17
+ steam.stats.* // Statistics operations
18
+ steam.leaderboards.* // Leaderboard operations
19
+ steam.friends.* // Friends and social operations
20
+ steam.richPresence.* // Rich Presence operations
21
+ steam.overlay.* // Overlay control operations
22
+ steam.cloud.* // Cloud storage operations
23
+ ```
24
+
25
+ This design:
26
+ - ✅ **Groups related functions** - Easy to discover all achievement/stats/leaderboard methods
27
+ - ✅ **Clear namespacing** - No naming conflicts
28
+ - ✅ **Better IDE support** - Autocomplete shows relevant methods
29
+ - ✅ **Logical organization** - Matches Steamworks SDK structure
30
+
31
+ ---
32
+
33
+ ## 📚 Available Documentation
34
+
35
+ ### Core API
36
+ - **[SteamAPICore Documentation](https://github.com/ArtyProf/steamworks-ffi-node/blob/main/docs/STEAM_API_CORE.md)**
37
+ - Initialization and lifecycle management
38
+ - Steam callbacks and event handling
39
+ - Status checking and diagnostics
40
+ - Platform-specific library loading
41
+
42
+ ### Achievement System
43
+ - **[Achievement Manager API](https://github.com/ArtyProf/steamworks-ffi-node/blob/main/docs/ACHIEVEMENT_MANAGER.md)**
44
+ - **20 Functions** - 100% Achievement API coverage
45
+ - Core operations (get, unlock, clear, check status)
46
+ - Visual features (icons, progress notifications)
47
+ - Progress tracking (get limits for progress bars)
48
+ - Friend comparisons (see friend achievements)
49
+ - Global statistics (unlock percentages, popularity sorting)
50
+ - Testing tools (reset stats/achievements)
51
+
52
+ ### Statistics System
53
+ - **[Stats Manager API](https://github.com/ArtyProf/steamworks-ffi-node/blob/main/docs/STATS_MANAGER.md)**
54
+ - **14 Functions** - 100% Stats API coverage
55
+ - User stats (get/set int/float, average rate tracking)
56
+ - Friend comparisons (compare stats with friends)
57
+ - Global statistics (worldwide aggregated data with history)
58
+
59
+ ### Leaderboard System
60
+ - **[Leaderboard Manager API](https://github.com/ArtyProf/steamworks-ffi-node/blob/main/docs/LEADERBOARD_MANAGER.md)**
61
+ - **7 Functions** - 100% Leaderboard API coverage
62
+ - Leaderboard management (find, create, get info)
63
+ - Score operations (upload with optional details)
64
+ - Entry download (global, friends, specific users)
65
+ - UGC integration (attach replays/screenshots to entries)
66
+
67
+ ### Friends & Social System
68
+ - **[Friends Manager API](https://github.com/ArtyProf/steamworks-ffi-node/blob/main/docs/FRIENDS_MANAGER.md)**
69
+ - **22 Functions** - Complete friends and social features
70
+ - Current user info (get persona name, online status)
71
+ - Friends list management (count, iterate, retrieve all)
72
+ - Friend information (names, status, relationship types, Steam levels)
73
+ - Friend activity (check what games friends are playing)
74
+ - Friend avatars (small/medium/large avatar handles)
75
+ - Friend groups (manage and query friend tags/categories)
76
+ - Coplay tracking (recently played with users)
77
+
78
+ ### Rich Presence System
79
+ - **[Rich Presence Manager API](https://github.com/ArtyProf/steamworks-ffi-node/blob/main/docs/RICH_PRESENCE_MANAGER.md)**
80
+ - **6 Functions** - Complete Rich Presence support
81
+ - Set/clear rich presence key/value pairs
82
+ - Query friend rich presence data
83
+ - Display custom status in Steam friends list
84
+ - Enable friend join functionality
85
+ - Player groups and localization support
86
+
87
+ ### Overlay System
88
+ - **[Overlay Manager API](https://github.com/ArtyProf/steamworks-ffi-node/blob/main/docs/OVERLAY_MANAGER.md)**
89
+ - **7 Functions** - Complete overlay control
90
+ - Open overlay to various dialogs (friends, achievements, etc.)
91
+ - Open overlay to user profiles and stats
92
+ - Open overlay browser to URLs
93
+ - Open store pages with purchase options
94
+ - Show invite dialogs for multiplayer
95
+
96
+ ### Cloud Storage System
97
+ - **[Cloud Manager API](https://github.com/ArtyProf/steamworks-ffi-node/blob/main/docs/CLOUD_MANAGER.md)**
98
+ - **14 Functions** - Complete Steam Cloud (Remote Storage) support
99
+ - File operations (write, read, delete, check existence)
100
+ - File metadata (size, timestamp, persistence status)
101
+ - File listing (count, iterate, get all with details)
102
+ - Quota management (track storage usage and limits)
103
+ - Cloud settings (check/toggle cloud sync for account and app)
104
+
105
+ ## 🚀 Quick Links
106
+
107
+ ### Getting Started
108
+ - [Installation Guide](https://github.com/ArtyProf/steamworks-ffi-node#installation)
109
+ - [Quick Start Examples](https://github.com/ArtyProf/steamworks-ffi-node#quick-start)
110
+ - [Electron Integration](https://github.com/ArtyProf/steamworks-ffi-node#electron-integration)
111
+
112
+ ### Testing
113
+
114
+ **JavaScript Tests** (Production - Uses compiled dist/):
115
+ - Run Achievement Tests: `npm run test:achievements:js` - Tests all 20 achievement functions
116
+ - Run Stats Tests: `npm run test:stats:js` - Tests all 14 stats functions
117
+ - Run Leaderboard Tests: `npm run test:leaderboards:js` - Tests all 7 leaderboard functions
118
+ - Run Friends Tests: `npm run test:friends:js` - Tests all 22 friends functions
119
+ - Run Cloud Tests: `npm run test:cloud:js` - Tests all 14 cloud storage functions
120
+ - Run Rich Presence & Overlay Tests: `npm run test:richpresence-overlay:js` - Tests 6 rich presence + 7 overlay functions
121
+
122
+ **TypeScript Tests** (Development - Direct src/ imports, no rebuild needed):
123
+ - Run Achievement Tests: `npm run test:achievements:ts` - With type safety ✨
124
+ - Run Stats Tests: `npm run test:stats:ts` - With type safety ✨
125
+ - Run Leaderboard Tests: `npm run test:leaderboards:ts` - With type safety ✨
126
+ - Run Friends Tests: `npm run test:friends:ts` - With type safety ✨
127
+ - Run Cloud Tests: `npm run test:cloud:ts` - With type safety ✨
128
+ - Run Rich Presence & Overlay Tests: `npm run test:richpresence-overlay:ts` - With type safety ✨
129
+
130
+ 📁 All tests are in `tests/` folder with separate `js/` and `ts/` subfolders.
131
+
132
+ 💡 **Pro tip**: TypeScript tests import directly from `src/` so you can test changes immediately without running `npm run build`!
133
+
134
+ ### Additional Resources
135
+ - [GitHub Repository](https://github.com/ArtyProf/steamworks-ffi-node)
136
+ - [NPM Package](https://www.npmjs.com/package/steamworks-ffi-node)
137
+ - [Report Issues](https://github.com/ArtyProf/steamworks-ffi-node/issues)
138
+
139
+ ---
140
+
141
+ ## 📖 Documentation Structure
142
+
143
+ Each API documentation includes:
144
+ - **Overview** - Architecture and design patterns
145
+ - **Quick Reference** - Function categories and counts
146
+ - **Detailed Functions** - Parameters, returns, SDK mappings, examples
147
+ - **Configuration** - Steamworks Partner setup instructions
148
+ - **TypeScript Types** - Interface definitions
149
+ - **Complete Examples** - Real-world usage scenarios
150
+ - **Best Practices** - Guidelines and recommendations
151
+ - **Error Handling** - Common issues and solutions
152
+
153
+ ---
154
+
155
+ **Need help?** Check the [troubleshooting section](https://github.com/ArtyProf/steamworks-ffi-node#troubleshooting) in the main README or [open an issue](https://github.com/ArtyProf/steamworks-ffi-node/issues).
@@ -0,0 +1,209 @@
1
+ # Steamworks SDK Setup Guide
2
+
3
+ This guide explains how to properly set up the Steamworks SDK redistributables for use with steamworks-ffi-node, in compliance with Valve's licensing requirements.
4
+
5
+ ## ⚠️ Important Legal Notice
6
+
7
+ **The Steamworks SDK redistributables cannot be bundled with this package due to Valve's licensing terms.** Users must download and install the Steamworks SDK separately from Valve's official source.
8
+
9
+ ## Quick Setup
10
+
11
+ ### 1. Download Steamworks SDK
12
+
13
+ 1. Visit the [Steamworks Partner site](https://partner.steamgames.com/)
14
+ 2. Log in with your Steam account (you need to be a registered Steamworks developer)
15
+ 3. Download the latest Steamworks SDK
16
+ 4. Extract the downloaded archive
17
+
18
+ > **Note**: This package was built and tested with Steamworks SDK v1.62. While newer versions should be compatible, v1.62 or later is recommended for optimal compatibility.
19
+
20
+ ### 2. Install SDK Redistributables
21
+
22
+ Copy the `redistributable_bin` folder from the Steamworks SDK to your project:
23
+
24
+ ```
25
+ your-project/
26
+ ├── steamworks_sdk/
27
+ │ └── redistributable_bin/
28
+ │ ├── win64/
29
+ │ │ └── steam_api64.dll
30
+ │ ├── steam_api.dll
31
+ │ ├── osx/
32
+ │ │ └── libsteam_api.dylib
33
+ │ └── linux64/
34
+ │ └── libsteam_api.so
35
+ ├── package.json
36
+ └── your-app-files...
37
+ ```
38
+
39
+ ### 3. Verify Installation
40
+
41
+ Run this command to verify the SDK is properly installed:
42
+
43
+ ```bash
44
+ npm run verify-sdk
45
+ ```
46
+
47
+ This will check your steamworks_sdk installation and provide detailed feedback about any missing files or configuration issues.
48
+
49
+ ## Detailed Setup Instructions
50
+
51
+ ### For Game Developers
52
+
53
+ 1. **Get Steamworks Access**
54
+ - Register as a Steamworks developer at [partner.steamgames.com](https://partner.steamgames.com/)
55
+ - Complete the registration process and pay the one-time fee if required
56
+
57
+ 2. **Download SDK**
58
+ - Go to the "Downloads" section in Steamworks Partner
59
+ - Download the latest Steamworks SDK (typically a .zip file)
60
+ - Extract the archive to a temporary location
61
+
62
+ 3. **Copy Redistributables**
63
+ - Navigate to the extracted SDK folder
64
+ - Find the `redistributable_bin` directory
65
+ - Copy the entire `redistributable_bin` folder to your project's `steamworks_sdk/` directory
66
+
67
+ ### For Open Source Projects / Contributors
68
+
69
+ If you're contributing to an open source project that uses steamworks-ffi-node:
70
+
71
+ 1. **SDK Access Required**
72
+ - You'll need your own Steamworks developer account to download the SDK
73
+ - The redistributables cannot be shared or bundled due to licensing restrictions
74
+
75
+ 2. **Development Setup**
76
+ - Download the SDK using your own Steamworks account
77
+ - Set up the folder structure as described above
78
+ - Never commit the `steamworks_sdk/` folder to version control
79
+
80
+ 3. **Testing**
81
+ - Use Spacewar (App ID 480) for testing - it's free and available to all developers
82
+ - Either create a `steam_appid.txt` file with content `480` OR pass `480` to `steam.init(480)`
83
+
84
+ ## Supported Platforms and Files
85
+
86
+ ### Windows
87
+ - **64-bit**: `steamworks_sdk/redistributable_bin/win64/steam_api64.dll`
88
+ - **32-bit**: `steamworks_sdk/redistributable_bin/steam_api.dll`
89
+
90
+ ### macOS
91
+ - **Universal**: `steamworks_sdk/redistributable_bin/osx/libsteam_api.dylib`
92
+
93
+ ### Linux
94
+ - **64-bit**: `steamworks_sdk/redistributable_bin/linux64/libsteam_api.so`
95
+
96
+ ## Project Structure Examples
97
+
98
+ ### Basic Node.js Project
99
+ ```
100
+ my-steam-game/
101
+ ├── steamworks_sdk/
102
+ │ └── redistributable_bin/
103
+ │ ├── win64/steam_api64.dll
104
+ │ ├── steam_api.dll
105
+ │ ├── osx/libsteam_api.dylib
106
+ │ └── linux64/libsteam_api.so
107
+ ├── package.json
108
+ ├── steam_appid.txt
109
+ └── src/
110
+ └── main.js
111
+ ```
112
+
113
+ ### Electron Application
114
+ ```
115
+ my-electron-app/
116
+ ├── steamworks_sdk/
117
+ │ └── redistributable_bin/
118
+ │ └── [platform files...]
119
+ ├── package.json
120
+ ├── steam_appid.txt
121
+ ├── src/
122
+ │ ├── main.js
123
+ │ └── renderer.js
124
+ └── dist/
125
+ └── [built app...]
126
+ ```
127
+
128
+ ### Monorepo Setup
129
+ ```
130
+ my-monorepo/
131
+ ├── steamworks_sdk/
132
+ │ └── redistributable_bin/
133
+ │ └── [platform files...]
134
+ ├── packages/
135
+ │ ├── game-client/
136
+ │ │ ├── package.json
137
+ │ │ └── src/
138
+ │ └── game-server/
139
+ │ ├── package.json
140
+ │ └── src/
141
+ └── steam_appid.txt
142
+ ```
143
+
144
+ ## Troubleshooting
145
+
146
+ ### "Steamworks SDK library not found" Error
147
+
148
+ This error means the redistributables are not properly installed. Check:
149
+
150
+ 1. ✅ The `steamworks_sdk/redistributable_bin` folder exists in your project root
151
+ 2. ✅ Platform-specific libraries are in the correct subfolders
152
+ 3. ✅ File permissions allow reading the library files
153
+ 4. ✅ You're running from the correct working directory
154
+
155
+ ### "Cannot find function 'SteamAPI_Init'" Error
156
+
157
+ This usually indicates:
158
+ - Wrong library architecture (32-bit vs 64-bit)
159
+ - Corrupted or incomplete SDK download
160
+ - Incompatible SDK version
161
+
162
+ **Solution**: Re-download the latest Steamworks SDK and replace the redistributables.
163
+
164
+ ### Permission Issues (macOS/Linux)
165
+
166
+ If you get permission errors:
167
+ ```bash
168
+ # Make library executable
169
+ chmod +x steamworks_sdk/redistributable_bin/osx/libsteam_api.dylib
170
+ chmod +x steamworks_sdk/redistributable_bin/linux64/libsteam_api.so
171
+ ```
172
+
173
+ ## Version Compatibility
174
+
175
+ - **steamworks-ffi-node v0.5.x**: Compatible with Steamworks SDK v1.58+
176
+ - **Always use the latest** Steamworks SDK from Valve for best compatibility
177
+ - **Check release notes** for any breaking changes in new SDK versions
178
+
179
+ ## Legal Compliance
180
+
181
+ ### ✅ Allowed
182
+ - Downloading SDK with your own Steamworks developer account
183
+ - Using redistributables in your own games
184
+ - Distributing your game with embedded redistributables
185
+
186
+ ### ❌ Not Allowed
187
+ - Redistributing SDK files in npm packages
188
+ - Sharing SDK files with non-developers
189
+ - Using SDK without proper Steamworks registration
190
+
191
+ ### 📋 Requirements for Distribution
192
+ - Register as Steamworks developer
193
+ - Agree to Steamworks SDK license
194
+ - Include redistributables only with your shipped game
195
+
196
+ ## Support
197
+
198
+ If you encounter issues:
199
+
200
+ 1. **Check this guide** for common solutions
201
+ 2. **Verify SDK installation** using the verification script above
202
+ 3. **Update to latest SDK** from Valve
203
+ 4. **Open an issue** at [steamworks-ffi-node GitHub](https://github.com/ArtyProf/steamworks-ffi-node/issues)
204
+
205
+ For Steamworks SDK licensing questions, contact Valve directly through the Steamworks Partner portal.
206
+
207
+ ---
208
+
209
+ **Note**: This package is not affiliated with Valve Corporation. Steamworks is a trademark of Valve Corporation.
package/package.json CHANGED
@@ -1,11 +1,14 @@
1
1
  {
2
2
  "name": "steamworks-ffi-node",
3
- "version": "0.5.3",
3
+ "version": "0.6.0",
4
4
  "description": "Steamworks SDK wrapper using FFI for Node.js/Electron - Full Steam Integration",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "scripts": {
8
8
  "build": "tsc",
9
+ "postinstall": "node postinstall.js",
10
+ "verify-sdk": "node verify-sdk-setup.js",
11
+ "test:discord": "node test-discord-integration.js",
9
12
  "test:achievements:js": "node tests/js/test-complete-achievements.js",
10
13
  "test:stats:js": "node tests/js/test-complete-stats.js",
11
14
  "test:leaderboards:js": "node tests/js/test-complete-leaderboards.js",
@@ -30,10 +33,11 @@
30
33
  },
31
34
  "files": [
32
35
  "dist/**/*",
33
- "steamworks_sdk/redistributable_bin/**/*",
34
36
  "README.md",
35
37
  "LICENSE",
36
- "THIRD_PARTY_LICENSES.md"
38
+ "docs/STEAMWORKS_SDK_SETUP.md",
39
+ "verify-sdk-setup.js",
40
+ "postinstall.js"
37
41
  ],
38
42
  "keywords": [
39
43
  "steam",
package/postinstall.js ADDED
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Post-installation script for steamworks-ffi-node
5
+ *
6
+ * This script provides guidance to users after package installation
7
+ * about setting up the Steamworks SDK redistributables.
8
+ */
9
+
10
+ console.log('');
11
+ console.log('🎉 steamworks-ffi-node installed successfully!');
12
+ console.log('');
13
+ console.log('📋 Next Steps:');
14
+ console.log('==============');
15
+ console.log('');
16
+ console.log('1. 📥 Download Steamworks SDK redistributables');
17
+ console.log(' - Get them from: https://partner.steamgames.com/');
18
+ console.log(' - Extract and copy "redistributable_bin" to "steamworks_sdk/" in your project');
19
+ console.log('');
20
+ console.log('2. 🔧 Configure your Steam App ID');
21
+ console.log(' - Option A: Create steam_appid.txt with your App ID');
22
+ console.log(' - Option B: Pass App ID to steam.init(yourAppId)');
23
+ console.log(' - For testing: Use App ID 480 (Spacewar)');
24
+ console.log('');
25
+ console.log('3. ✅ Verify setup');
26
+ console.log(' Run: npm run verify-sdk');
27
+ console.log('');
28
+ console.log('📖 Complete setup guide:');
29
+ console.log('https://github.com/ArtyProf/steamworks-ffi-node/blob/main/docs/STEAMWORKS_SDK_SETUP.md');
30
+ console.log('');
31
+ console.log('⚠️ Legal Notice:');
32
+ console.log('Due to Valve\'s licensing terms, the Steamworks SDK redistributables');
33
+ console.log('cannot be bundled with this package and must be downloaded separately.');
34
+ console.log('');
@@ -0,0 +1,220 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Steamworks SDK Installation Verification Script
5
+ *
6
+ * This script checks if the Steamworks SDK redistributables are properly installed
7
+ * and provides helpful guidance if they're missing.
8
+ */
9
+
10
+ const fs = require('fs');
11
+ const path = require('path');
12
+
13
+ function checkSteamworksSDK() {
14
+ console.log('🔍 Steamworks SDK Installation Verification');
15
+ console.log('===========================================');
16
+ console.log('');
17
+
18
+ const possibleBasePaths = [
19
+ process.cwd(),
20
+ path.resolve(process.cwd(), '..'),
21
+ path.resolve(process.cwd(), '../..'),
22
+ ];
23
+
24
+ let foundSdk = false;
25
+ let sdkPath = '';
26
+
27
+ // Check for steamworks_sdk folder
28
+ for (const basePath of possibleBasePaths) {
29
+ const checkPath = path.join(basePath, 'steamworks_sdk', 'redistributable_bin');
30
+ if (fs.existsSync(checkPath)) {
31
+ foundSdk = true;
32
+ sdkPath = checkPath;
33
+ console.log(`✅ Found steamworks_sdk at: ${checkPath}`);
34
+ break;
35
+ }
36
+ }
37
+
38
+ if (!foundSdk) {
39
+ console.log('❌ Steamworks SDK not found!');
40
+ console.log('');
41
+ console.log('Expected folder structure:');
42
+ console.log(' steamworks_sdk/');
43
+ console.log(' └── redistributable_bin/');
44
+ console.log(' ├── win64/steam_api64.dll');
45
+ console.log(' ├── steam_api.dll');
46
+ console.log(' ├── osx/libsteam_api.dylib');
47
+ console.log(' └── linux64/libsteam_api.so');
48
+ console.log('');
49
+ console.log('📖 Setup Instructions:');
50
+ console.log('1. Download Steamworks SDK from: https://partner.steamgames.com/');
51
+ console.log('2. Extract the SDK archive');
52
+ console.log('3. Copy the "redistributable_bin" folder to "steamworks_sdk/" in your project');
53
+ console.log('4. See https://github.com/ArtyProf/steamworks-ffi-node/blob/main/docs/STEAMWORKS_SDK_SETUP.md for detailed instructions');
54
+ console.log('');
55
+ console.log('Searched paths:');
56
+ possibleBasePaths.forEach(p => {
57
+ console.log(` - ${path.join(p, 'steamworks_sdk', 'redistributable_bin')}`);
58
+ });
59
+ return false;
60
+ }
61
+
62
+ // Check platform-specific files
63
+ console.log('');
64
+ console.log('🔍 Checking platform-specific libraries...');
65
+
66
+ const requiredFiles = [
67
+ { path: 'win64/steam_api64.dll', platform: 'Windows 64-bit' },
68
+ { path: 'steam_api.dll', platform: 'Windows 32-bit' },
69
+ { path: 'osx/libsteam_api.dylib', platform: 'macOS' },
70
+ { path: 'linux64/libsteam_api.so', platform: 'Linux 64-bit' }
71
+ ];
72
+
73
+ let allFilesPresent = true;
74
+ let currentPlatformFileExists = false;
75
+ const currentPlatform = process.platform;
76
+ const currentArch = process.arch;
77
+
78
+ requiredFiles.forEach(file => {
79
+ const filePath = path.join(sdkPath, file.path);
80
+ const exists = fs.existsSync(filePath);
81
+
82
+ console.log(` ${exists ? '✅' : '❌'} ${file.platform}: ${file.path}`);
83
+
84
+ if (!exists) {
85
+ allFilesPresent = false;
86
+ }
87
+
88
+ // Check if current platform file exists
89
+ if (currentPlatform === 'win32' && currentArch === 'x64' && file.path === 'win64/steam_api64.dll' && exists) {
90
+ currentPlatformFileExists = true;
91
+ } else if (currentPlatform === 'win32' && currentArch !== 'x64' && file.path === 'steam_api.dll' && exists) {
92
+ currentPlatformFileExists = true;
93
+ } else if (currentPlatform === 'darwin' && file.path === 'osx/libsteam_api.dylib' && exists) {
94
+ currentPlatformFileExists = true;
95
+ } else if (currentPlatform === 'linux' && file.path === 'linux64/libsteam_api.so' && exists) {
96
+ currentPlatformFileExists = true;
97
+ }
98
+ });
99
+
100
+ console.log('');
101
+
102
+ // Check steam_appid.txt (optional)
103
+ const steamAppIdPath = path.join(process.cwd(), 'steam_appid.txt');
104
+ const hasAppId = fs.existsSync(steamAppIdPath);
105
+
106
+ console.log('🔍 Checking steam_appid.txt (optional)...');
107
+ if (hasAppId) {
108
+ const appId = fs.readFileSync(steamAppIdPath, 'utf8').trim();
109
+ console.log(`✅ steam_appid.txt found with App ID: ${appId}`);
110
+ if (appId === '480') {
111
+ console.log(' Note: Using Spacewar (480) - perfect for testing!');
112
+ }
113
+ } else {
114
+ console.log('ℹ️ steam_appid.txt not found (this is optional)');
115
+ console.log(' You can either create this file OR pass the App ID to steam.init(appId)');
116
+ }
117
+
118
+ console.log('');
119
+ console.log('📊 Summary');
120
+ console.log('==========');
121
+
122
+ if (foundSdk && currentPlatformFileExists) {
123
+ console.log('🎉 Great! Your Steamworks SDK setup is ready.');
124
+ console.log('');
125
+ console.log('✅ Steamworks SDK redistributables installed');
126
+ console.log(`✅ ${getCurrentPlatformName()} library available`);
127
+ if (hasAppId) {
128
+ console.log('✅ steam_appid.txt configured');
129
+ } else {
130
+ console.log('ℹ️ steam_appid.txt not found (pass App ID to steam.init() instead)');
131
+ }
132
+ console.log('');
133
+ console.log('You can now use steamworks-ffi-node in your project!');
134
+ console.log('');
135
+ console.log('Next steps:');
136
+ console.log('1. Make sure Steam client is running');
137
+ console.log('2. Import steamworks-ffi-node in your code');
138
+ if (hasAppId) {
139
+ console.log('3. Initialize the SDK with steam.init()');
140
+ } else {
141
+ console.log('3. Initialize the SDK with steam.init(yourAppId) or create steam_appid.txt');
142
+ }
143
+ return true;
144
+ } else {
145
+ console.log('⚠️ Setup incomplete. Please address the issues above.');
146
+ console.log('');
147
+
148
+ if (!foundSdk) {
149
+ console.log('❌ Steamworks SDK redistributables missing');
150
+ } else if (!currentPlatformFileExists) {
151
+ console.log(`❌ Library for ${getCurrentPlatformName()} missing`);
152
+ }
153
+
154
+ console.log('');
155
+ console.log('📖 See https://github.com/ArtyProf/steamworks-ffi-node/blob/main/docs/STEAMWORKS_SDK_SETUP.md for detailed setup instructions');
156
+ return false;
157
+ }
158
+ }
159
+
160
+ function getCurrentPlatformName() {
161
+ const platform = process.platform;
162
+ const arch = process.arch;
163
+
164
+ if (platform === 'win32') {
165
+ return arch === 'x64' ? 'Windows 64-bit' : 'Windows 32-bit';
166
+ } else if (platform === 'darwin') {
167
+ return 'macOS';
168
+ } else if (platform === 'linux') {
169
+ return 'Linux 64-bit';
170
+ } else {
171
+ return `${platform} (${arch})`;
172
+ }
173
+ }
174
+
175
+ // Test basic functionality if SDK is installed
176
+ function testBasicFunctionality() {
177
+ console.log('');
178
+ console.log('🧪 Testing Basic Functionality');
179
+ console.log('===============================');
180
+
181
+ try {
182
+ console.log('Attempting to load steamworks-ffi-node...');
183
+
184
+ // Try to require the package
185
+ const SteamworksSDK = require('./dist/index.js').default || require('./dist/index.js');
186
+ console.log('✅ Package loaded successfully');
187
+
188
+ // Try to create instance (this will test SDK loading)
189
+ console.log('Testing SDK initialization...');
190
+ const steam = new SteamworksSDK();
191
+ console.log('✅ SteamworksSDK instance created');
192
+
193
+ console.log('');
194
+ console.log('🎉 Basic functionality test passed!');
195
+ console.log('Your setup appears to be working correctly.');
196
+
197
+ } catch (error) {
198
+ console.log('❌ Basic functionality test failed');
199
+ console.log(`Error: ${error.message}`);
200
+ console.log('');
201
+ console.log('This could indicate:');
202
+ console.log('- Package not built (run "npm run build")');
203
+ console.log('- Missing dependencies');
204
+ console.log('- Incorrect SDK installation');
205
+ }
206
+ }
207
+
208
+ // Main execution
209
+ if (require.main === module) {
210
+ const success = checkSteamworksSDK();
211
+
212
+ if (success) {
213
+ testBasicFunctionality();
214
+ }
215
+
216
+ console.log('');
217
+ console.log('For more help, visit: https://github.com/ArtyProf/steamworks-ffi-node');
218
+ }
219
+
220
+ module.exports = { checkSteamworksSDK };
@@ -1,24 +0,0 @@
1
- # Third-Party Licenses
2
-
3
- ## Steamworks SDK Redistributables
4
-
5
- This package includes redistributable binaries from the Steamworks SDK.
6
-
7
- **Copyright**: © Valve Corporation. All rights reserved.
8
-
9
- **License**: These redistributables are distributed under the Steamworks SDK Access Agreement.
10
-
11
- The Steamworks SDK redistributables are provided by Valve Corporation and are subject to the Steamworks SDK Access Agreement available at:
12
- https://partner.steamgames.com/documentation/sdk_access_agreement
13
-
14
- ### Included Components:
15
- - `steamworks_sdk/redistributable_bin/` - Platform-specific Steam API libraries
16
- - Windows: steam_api64.dll, steam_api.dll
17
- - macOS: libsteam_api.dylib
18
- - Linux: libsteam_api.so
19
-
20
- These files are distributed in accordance with Section 1.1(b) of the Steamworks SDK Access Agreement, which permits reproduction and distribution of SDK Redistributables in object code form along with licensee software.
21
-
22
- ## Package License
23
-
24
- The wrapper code in this package (excluding Steamworks SDK redistributables) is licensed under the MIT License. See LICENSE file for details.