Appearance
Steamworks Integration
Add Steam features to your game.
PRO FEATURE
Steamworks integration requires GemShell Pro.
Setup
1. Enable Steamworks
In GemShell settings, enable Steamworks Integration.
2. Set App ID
Enter your Steam App ID. For testing, use 480 (Spacewar demo app).
3. Build
Build your game. GemShell automatically:
- Bundles the Steam runtime
- Configures the
steam_appid.txt - Injects the Steam API
Using the Steam API
In your game code:
javascript
// Check if Steam is available
if (typeof steam !== 'undefined' && await steam.isAvailable()) {
// Steam features available
const name = await steam.getPersonaName();
console.log(`Hello, ${name}!`);
}Available Features
User Info
javascript
const steamId = await steam.getSteamID();
const name = await steam.getPersonaName();
const level = await steam.getPlayerSteamLevel();Achievements
javascript
// Unlock achievement
await steam.unlockAchievement('FIRST_BOSS');
await steam.storeStats();
// Check achievement
const unlocked = await steam.getAchievement('FIRST_BOSS');Cloud Saves
javascript
// Save to cloud
await steam.fileWrite('save.json', JSON.stringify(data));
// Load from cloud
if (await steam.fileExists('save.json')) {
const content = await steam.fileRead('save.json');
const data = JSON.parse(content);
}Rich Presence
javascript
await steam.setRichPresence('status', 'In Battle');
await steam.setRichPresence('level', '42');Leaderboards
javascript
const board = await steam.findLeaderboard('HighScores');
if (board) {
await steam.uploadLeaderboardScore(board, score);
}Callbacks
Call runCallbacks() in your game loop:
javascript
function gameLoop() {
if (typeof steam !== 'undefined') {
steam.runCallbacks();
}
// ... game logic
requestAnimationFrame(gameLoop);
}Testing
Local Testing
- Have Steam running
- Build your game
- Run the built executable (not from IDE)
With Your App ID
- Own the game on Steam
- Set your App ID in GemShell
- Build and run
Test App (480)
Use App ID 480 for testing without a real Steam app:
- Basic features work
- Achievements use Spacewar's achievements
- Cloud saves work
Steamworks SDK
GemShell bundles the official Steamworks SDK v1.62.
SDK Version
GemShell uses Steamworks SDK version 1.62 (March 2025). This version includes Remote Play Together improvements, UGC load order controls, and the latest API updates.
Supported platforms:
| Platform | Library |
|---|---|
| Windows x64 | steam_api64.dll |
| Windows x86 | steam_api.dll |
| macOS | libsteam_api.dylib |
| Linux x64 | libsteam_api.so |
Troubleshooting
Steam Not Detected
- Ensure Steam is running
- Run the built executable, not from IDE
- Check
steam_appid.txtexists next to executable
Achievements Not Working
- Call
storeStats()after unlocking - Verify achievement ID matches Steamworks dashboard
- Test with App ID 480 first
Cloud Saves Not Syncing
- Enable Steam Cloud in Steamworks dashboard
- Check
isCloudEnabledForApp()returns true - File size must be within limits
Full API Reference
See Steamworks API for complete documentation.
