Hackerprod/-SKYNET-Steam-Emulator

GitHub: Hackerprod/-SKYNET-Steam-Emulator

基于 ASP.NET Core 后端的 Steam 客户端模拟器,通过替换 steam_api DLL 实现局域网无互联网环境下的 Steam 游戏联机。

Stars: 122 | Forks: 12

# [SKYNET] Steam 模拟器 `steam_api` 替代项目,专注于模拟 Steam DLL ABI,同时将面向游戏的状态转移至本地后端服务器。 本仓库不再作为客户端模拟器进行文档编写。当前架构为: - `steam_api/`:直接替换 Steam DLL 并作为 ABI 桥接层 - `SKYNET server/`:ASP.NET Core 后端,负责处理会话、好友、统计、大厅、存储、票据、游戏服务器状态、P2P 事件中继以及 Game Coordinator 消息中继 ## 当前架构 该 DLL 现在是**服务器优先**的。`steam_api` 不再仅将权限保留在本地 LAN 状态中,而是通过 HTTP 和事件轮询在 `SKYNET server` 上解析核心行为: - 用户身份和会话引导 - 好友和角色信息/富文本状态 - 统计数据和成就 - 匹配和大厅状态 - 远程存储元数据和文件内容 - 认证票据和验证 - 游戏服务器注册和统计 - P2P 数据包中继 - Game Coordinator 消息中继 - 源自远程事件的 Steam 式回调 ## 主要改进 - 重构了回调系统,以分离广播回调、调用结果和手动分发行为。 - `ISteamGameCoordinator` 队列/回调流程现在更紧密地遵循 Steam 语义。 - 增加了本仓库使用的更新接口覆盖范围,包括较新的 Friends、UGC、Remote Play、Game Server 和 Timeline 接口。 - 匹配系统现在使用后端拥有的大厅,而不仅仅是本地套接字状态。 - `RemoteStorage`、票据/认证流程、`SteamGameServer`、`SteamGameServerStats`、P2P 和 GC 已移至后端支持的路径。 - `SKYNET server` 现在暴露真实的 `/api/...` 接口层,而不仅仅是 Razor 模拟页面。 ## 仓库结构 ``` steam_api/ Steam DLL replacement, exported interfaces, callback manager, backend client SKYNET server/ ASP.NET Core backend and Razor admin UI ``` ## 构建说明 ### `steam_api` 需要 `.NET Framework 4.7.2 Developer Pack`。如果缺少该组件,MSBuild 将失败并提示 `MSB3644`。 ### `SKYNET 服务器` ``` dotnet build "SKYNET server/SKYNET server.csproj" dotnet run --project "SKYNET server/SKYNET server.csproj" ``` 默认 DLL 配置指向: ``` http://127.0.0.1:27080/ ``` ## 状态 本项目仍然是一个模拟器和兼容层,而非完整的 Steamworks 实现。核心方向现在是后端支持的行为,而不是独立的 LAN 模拟。 ## 贡献 欢迎代码贡献。 请保持 pull request 聚焦,记录所更改的行为,并包含足够的细节以复现或验证结果。对于 `steam_api`,请保持 Steam ABI 兼容性,并优先遵循文档记录的 Steam 行为,而非临时的变通方案。对于 `SKYNET server`,请保持端点和负载与 DLL 客户端契约一致。
标签:ASP.NET Core, C#/.NET, DLL替换, LAN联机, Matchmaking大厅, P2P中继, Python脚本, SKYNET, Steam API, Steamworks接口, Steam模拟器, UML, 会话管理, 局域网游戏, 成就系统, 游戏后端服务, 游戏存档, 游戏破解/逆向, 离线游戏, 网络游戏单机化