GameHub 是一个 Windows 本地游戏库,把 Steam、Epic Games、Battle.net 已经安装到本机的游戏集中到一个入口。它不接账号、不读云库、不上传任何数据,只负责把本地已经存在的游戏找出来,给你一个统一好看的管理界面。
- 只展示已安装游戏:Steam、Epic、战网各自从本机清单文件读取,不依赖账号登录
- 统一卡片:封面、大小、最近游玩时间、安装路径一目了然
- 一键启动:点击“启动”交给对应平台拉起,也可以直接“打开位置”
- 自动识别路径缺失:游戏被移动后会在卡片上明确标记
- 已安装优先排序:常玩的游戏排在最前面,方便快速启动
- 自动过滤 Demo、试用内容、DLC 与 Steam 组件
- 搜索、平台筛选、排序、收藏、网格/列表视图
- 封面本地缓存:优先用官方 CDN 高清封面,失败时回退到 exe 图标,不会阻塞扫描
- 完全离线可用:封面缓存后不联网也能正常浏览和启动
| 平台 | 本机数据来源 | 启动协议 |
|---|---|---|
| Steam | 所有库目录下的 steamapps/appmanifest_*.acf | steam://rungameid/<appid> |
| Epic Games | C:\ProgramData\Epic\EpicGamesLauncher\Data\Manifests\*.item | com.epicgames.launcher://apps/... |
| Battle.net | C:\ProgramData\Battle.net\Agent\aggregate.json | 经由战网客户端 --exec="launch <code>" 登录会话启动 |
npm install
npm start也可以直接双击项目根目录的 start-gamehub.cmd。
Web 版是扫描器生成的静态页面,不需要安装任何东西:
powershell -NoProfile -ExecutionPolicy Bypass -File .\web\GameHub.ps1
start .\web\GameHub.htmlnpm run scan # 只运行扫描器,输出 JSON
npm run pack # 生成未安装的目录版本
npm run dist # 生成 NSIS 安装包与便携版构建产物输出到 dist/。
扫描器按以下顺序尝试获取封面:
- Steam 本地
appcache/librarycache高清封面 - Steam 官方 CDN 竖版封面
- Epic Store 官方内容接口的竖版图片
- Battle.net 清单中的
box_art_uri - 游戏 exe 自带图标
封面会缓存到 Electron 用户数据目录或 data/covers。下载失败的记录会暂时跳过,避免每次扫描都重复请求。
- 不需要登录 Steam / Epic / 战网,也不读取在线游戏列表
- 不上传游戏数据,不发送统计信息
- 封面只来自各平台官方公开的 CDN 或内容接口
- 游戏清单、收藏和封面全部保存在本机
GameHub/
├── main.js # Electron 主进程
├── preload.js # 安全的 IPC 桥接
├── src/
│ ├── renderer/ # 自绘界面(HTML/CSS/JS)
│ └── scanner/ # Steam / Epic / 战网扫描器
├── web/
│ ├── GameHub.ps1 # 生成静态网页版
│ └── GameHub.template.html
├── assets/icon.png # 应用图标
└── dist/ # 打包输出(不提交到 git)
当前构建没有商业代码签名证书,Windows 智能应用控制(Smart App Control)可能会拦截。可以关闭“Windows 安全中心 → 应用和浏览器控制 → 智能应用控制”后再运行,或在项目目录用 npm start / start-gamehub.cmd 开发模式启动。
说明游戏清单还在,但安装目录已经被移动或删除。检查该游戏的安装路径,或把游戏重新装回对应位置后重新扫描。
battlenet://game/<product_id> 和直接调用游戏本体 Hearthstone.exe -launch -uid hs_beta 拿不到战网客户端的登录会话,所以游戏会拒绝登录。现在 GameHub 会先确保战网客户端在线,再调用 Battle.net.exe --exec="launch WTCG" 这类命令,让战网客户端像点击“开始游戏”一样带上账号令牌启动游戏。Web 版会随扫描生成 launch_battlenet_*.cmd 启动器,Electron 版也会自动使用同一套命令。
离线或官方 CDN 未收录时,会显示平台配色的首字母占位图;重新联网后再次扫描会自动补上。
- Electron
- 原生 Node.js 文件扫描,无第三方运行时依赖
- 原生 HTML/CSS/JS 界面,无前端框架
- PowerShell 生成静态 Web 版
- electron-builder 打包
