Add NativeGameLink for Steam - #244
Open
senkumil wants to merge 1 commit into
Open
Conversation
|
Testing Environment
Solid and innovative plugin that greatly enhances non-Steam library management. Everything works as intended! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
NativeGameLink for Steam
NativeGameLink for Steam is a Millennium plugin that transforms non-Steam shortcuts into native-style Steam Library experiences by linking them to their corresponding Steam AppIDs.
The original non-Steam executable and launch behavior remain intact. NativeGameLink uses the linked Steam AppID to reconstruct applicable Steam Library surfaces locally, providing a significantly richer experience for external games without converting them into owned Steam licenses.
Repository: https://github.com/senkumil/NativeGameLink-for-Steam
Current version: 3.0.0
Main Features
NativeGameLink does not grant ownership of Steam games, licenses, DLC, inventory items, trading cards, badges, XP, or Steam Cloud storage.
Linking a non-Steam shortcut does not unlock official Steam achievements. Native Steam achievement-state management is a separate, explicitly invoked optional feature.
Task Checklist
Developer
Plugin Functionality
Backend Configuration
No: I do not use a standard Millennium Python backend.
NativeGameLink uses Millennium's Lua backend:
backendType: "lua"Yes: NativeGameLink includes custom binaries that are not implemented directly through Millennium's backend runtime.
The plugin includes two optional Windows C# helper executables:
backend/bin/steam_achievement_sync.exebackend/bin/steam_card_farmer.exeThe complete corresponding C# source code is included in the repository:
backend/src/steam_achievement_sync.csbackend/src/steam_card_farmer.csAchievement helper
steam_achievement_sync.execommunicates with the locally installed Steam client.It can perform explicitly requested operations for native Steam games, including:
This functionality is optional and separate from NativeGameLink's non-Steam achievement presentation.
No native Steam achievement is modified merely by linking or opening a non-Steam shortcut.
AppID idling helper
steam_card_farmer.execommunicates with the locally installed Steam client and maintains an active local Steam session for a selected AppID until explicitly stopped by the user.It is used by the optional AppID idling functionality.
The helper does not directly grant:
Eligibility and item drops remain controlled by Steam.
Both helper executables operate locally and their complete source code is included in the repository for review.
External Services
NativeGameLink does not operate or depend on a proprietary remote backend service.
SteamGridDB integration is optional.
Users who choose to enable SteamGridDB fallback provide their own API key. The integration is used only to retrieve artwork when an appropriate official Steam asset is unavailable.
Platform
This submission has been tested on:
The two optional C# helper executables are currently Windows-specific.
Big Picture functionality has been tested through the Steam client.
Testing Instructions
1. Installation
2. Add a non-Steam game
3. Link the shortcut to a Steam AppID
4. Library integration
After linking a compatible non-Steam game, verify the applicable Steam-style surfaces.
Depending on the information exposed by Steam for the selected AppID, NativeGameLink can display:
Not every Steam AppID exposes every surface, so availability can vary between games.
5. Artwork
SteamGridDB fallback can optionally be tested by providing the tester's own SteamGridDB API key.
6. Non-Steam achievement presentation
7. Playtime
8. Persistence
9. Big Picture
10. Native Steam achievement-state management
Implementation source:
backend/src/steam_achievement_sync.cs11. AppID idling
Implementation source:
backend/src/steam_card_farmer.csScreenshots
1. Before linking — original non-Steam shortcut
2. After linking — NativeGameLink Library integration
3. Achievements / activity / game information
4. Artwork customization / Properties integration
5. Big Picture integration
6. AppID linking / automatic detection
Steam Client Testing
The plugin author has tested NativeGameLink for Steam on:
Testing included the primary non-Steam linking workflow, Library integration, persistence, artwork, and Big Picture functionality.
Community Contribution
#218 (comment)
#204 (comment)
Third-party Verification
Additional Notes
NativeGameLink is designed primarily to enhance the Steam Library experience of non-Steam shortcuts while preserving their original executable and launch configuration.
The plugin intentionally separates non-Steam presentation features from the optional functionality that operates on native Steam games.
All custom helper source code required for reviewing the included C# executables is available directly in the repository.