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, 会话管理, 局域网游戏, 成就系统, 游戏后端服务, 游戏存档, 游戏破解/逆向, 离线游戏, 网络游戏单机化