Skip to content

Alpha v0.22 - Steam DLL Fix

Choose a tag to compare

@binary-knight binary-knight released this 06 Feb 07:37
· 374 commits to main since this release

Usurper Reborn v0.22.0-alpha - Steam Native Libraries

Release Date: February 2026

Summary

This release fixes a critical issue where Steam builds were failing to initialize Steamworks due to missing native libraries. Steam achievements and stats should now properly sync when running through the Steam client.

Critical Fix

Steam Native Library Bundling

Problem: Steam builds showed "Non-Steam build - Steam features disabled" or "Failed to initialize Steam: Dll was not found" even when launched through Steam.

Root Cause: The Steamworks.NET NuGet package only includes the managed DLL (Steamworks.NET.dll), not the native platform libraries (steam_api64.dll for Windows, libsteam_api.so for Linux). These native libraries must be downloaded separately from either the Steamworks SDK or Steamworks.NET GitHub releases.

Solution: Updated the CI/CD pipeline to:

  1. Attempt to locate native libraries in the NuGet package runtimes folder
  2. Fall back to downloading from Steamworks.NET GitHub releases if not found
  3. Copy the appropriate native library to each platform's Steam depot folder

Files Changed

  • .github/workflows/ci-cd.yml

    • Added comprehensive native library extraction step
    • Implemented GitHub release fallback download mechanism
    • Bundled steam_api64.dll (295KB) for Windows depot
    • Bundled libsteam_api.so (416KB) for Linux depot
  • usurper-reloaded.csproj

    • Added local development support via SteamNative/ folder structure
    • Conditional inclusion for local native libraries (won't break builds if absent)

Previous Fixes (v0.20-v0.21)

These releases also included:

  • CI/CD Steam Configuration Fix: Changed Steam builds from -c Release to -c Steam to ensure STEAM_BUILD preprocessor directive is defined
  • Achievement Syncing: Manual achievement unlocking now properly calls Steam API
  • Dev Menu Steam Tools: Added ability to reset Steam stats for testing
  • SyncUnlockedToSteam(): Syncs previously-unlocked achievements on game load

Verification

After updating, you can verify Steam integration is working by:

  1. Launch Usurper Reborn through Steam
  2. Check logs/debug.log for:
    [STEAM] Steam initialized successfully
    
  3. Unlock any achievement and verify it appears on your Steam profile

For Local Development

If you want to build Steam builds locally:

  1. Download native libraries from Steamworks.NET releases
  2. Extract to your project:
    SteamNative/
    ├── win64/steam_api64.dll
    ├── win32/steam_api.dll
    ├── linux64/libsteam_api.so
    └── osx/libsteam_api.dylib
    
  3. Build with Steam configuration: dotnet build -c Steam