{"id":28420602,"url":"https://github.com/snxd/interop-steam","last_synced_at":"2026-04-28T01:04:00.520Z","repository":{"id":56728872,"uuid":"477788066","full_name":"snxd/interop-steam","owner":"snxd","description":"Example DIRECT interop shows how to get information from the Steamworks API.","archived":false,"fork":false,"pushed_at":"2026-03-31T01:34:40.000Z","size":2122,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"dev","last_synced_at":"2026-04-02T02:46:05.911Z","etag":null,"topics":["client","direct","interop","steam"],"latest_commit_sha":null,"homepage":"https://solidstatenetworks.com","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/snxd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-04-04T16:41:33.000Z","updated_at":"2026-03-31T01:34:42.000Z","dependencies_parsed_at":"2023-02-18T01:31:54.395Z","dependency_job_id":null,"html_url":"https://github.com/snxd/interop-steam","commit_stats":null,"previous_names":[],"tags_count":246,"template":false,"template_full_name":null,"purl":"pkg:github/snxd/interop-steam","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snxd%2Finterop-steam","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snxd%2Finterop-steam/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snxd%2Finterop-steam/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snxd%2Finterop-steam/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/snxd","download_url":"https://codeload.github.com/snxd/interop-steam/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/snxd%2Finterop-steam/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31421869,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T00:25:07.052Z","status":"online","status_checked_at":"2026-04-05T02:00:05.211Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["client","direct","interop","steam"],"created_at":"2025-06-05T03:48:50.576Z","updated_at":"2026-04-05T02:00:58.635Z","avatar_url":"https://github.com/snxd.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Steam Interop Example for DIRECT 7.2\n\nThe steam interop example shows how to get information from the Steamworks API. It retrieves information such as whether or not the user is logged on, what their steam ID is, and what their session token is. The Javascript classes provided mirror the classes that the Steamworks API provides.\n\n\u003e **Note**\n\u003e Please use the branch corresponding to your version of DIRECT.\n\n### Contents\n\n* steamworks - Steamworks libraries and headers\n* js - Javascript classes\n* interop - DIRECT interop headers\n* mac - macOS specific files\n* linux - Linux specific files\n* windows - Windows specific files\n\n### Requirements\n\n* CMake 3.15\n\n### Build Instructions\n\nFetch submodules using Git:\n\n```bash\ngit submodule update --init\n```\n\nCMake is a makefile generator that produces solutions and project files for various compiler toolkits. To generate the solution files for your environment and to build the project:\n\n```bash\ncmake -S . -B build\ncmake --build build --config Debug\n```\n\nThe target architecture of the shared library must match the architecture of the DIRECT client you are using. For example, if you are using host.exe for 32-bit Windows, then you must configure for x86 by using CMake argument -A Win32. If configuring on Windows, it is recommended that you statically link against MSVC runtime using `-D CMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded` to prevent the user from having to install the Visual C++ runtime separately. To build on macOS, using Xcode, supply the `-G Xcode` argument.\n\n### Setup Instructions\n\nFirst copy the interop the SteamWorks shared libraries to the directory where you intended to load it from. For our example, we use the same directory as the client's executable: `{moduleAppDirectory}`\n\n### JavaScript Integration\n\nIf you intend to use the interop with-in JavaScript use the following steps:\n\n1. Copy all of the javascript source files from the `js` directory to a directory in your skin called `src/interop`.\n2. Load the example code and interop in `/src/App.jsx` using `app.loadInterop`:\n    ```js\n    import \"./interop/SteamExample.js\";\n\n    const steamPath = app.expandString(\"{moduleAppDirectory}{libraryPrefix}steam.{libraryExtension}\");\n    app.loadInterop(\"steam\", steamPath);\n    ```\n3. Call `app.unloadInterop` before `skinWindow.close()` in `src/App.jsx`:\n    ```js\n    app.unloadInterop(\"steam\", steamPath);\n    ``` \n4. Modify app.yaml and set `cef.enabled: true`\n5. Add the following React component to your React app which will draw the friends list in a canvas element:\n    ```html\n    import FriendsList from \"../interop/FriendsList.jsx\";\n    \u003cFriendsList/\u003e\n    ```\n6. Run `host` application with `--devtools --disablesecurity` (during production if you sign the dll you won't need this).\n7. If it integrated properly, you will see the following lines in console window. \u003cbr/\u003e\u003cimg src=\"screenshots/console-ok.png\"/\u003e\u003cbr/\u003eAnd you will see the Steam friends list populated. \u003cbr/\u003e\u003cimg src=\"screenshots/friendslist.png\"/\u003e \u003cbr/\u003eIf you do not have steam running you will see a warning in the console window. \u003cbr/\u003e\u003cimg src=\"screenshots/console-fail.png\"/\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnxd%2Finterop-steam","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsnxd%2Finterop-steam","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsnxd%2Finterop-steam/lists"}