本文档全面介绍了 Hydra Launcher 仓库,解释了其目的、架构和核心组件。Hydra 是一个复杂的游戏平台,它将游戏管理、社交功能、云服务和多源下载整合为统一的体验。有关各个子系统的具体详细信息,请参阅其各自的文档页面。
Hydra Launcher 是一个基于 Electron 的应用程序,使用 TypeScript 和 Python 编写,作为一款全面的社交游戏平台。除了传统的游戏启动器功能外,它还为玩家提供了一个丰富生态系统,具有以下核心功能:
来源:README.md18-26 src/locales/en/translation.json1-549 src/types/index.ts1-371
| 类别 | 功能 | 描述 |
|---|---|---|
| 下载系统 | 多源下载 | 带有 aria2p HTTP 下载器和 libtorrent 种子客户端的 Python RPC 服务器 |
| 高级服务集成 | 支持 Real-Debrid、TorBox、Gofile、PixelDrain、Mediafire 以加速下载 | |
| 下载管理 | 队列管理、进度跟踪、自动解压、做种控制 | |
| 社交平台 | 用户资料 | 资料自定义、活动跟踪、好友管理、隐私控制 |
| 好友系统 | 好友请求、用户屏蔽、社交活动动态、好友代码 | |
| 成就分享 | 成就比较、排行榜、积分系统、资料显示 | |
| 游戏管理 | 库管理 | 游戏元数据、可执行文件管理、启动选项、Wine 前缀支持 |
| 游戏发现 | 目录搜索、筛选、Steam250 集成、随机游戏推荐 | |
| 进程监控 | 游玩时间跟踪、游戏状态管理、自动云同步触发 | |
| 云服务 | Hydra 云订阅 | 包括云存档、成就同步、动画资料在内的高级功能 |
| 存档同步 | Ludusavi 集成,用于游戏存档备份和跨设备恢复 | |
| 成就同步 | 基于云的成就持久化和跨设备同步 | |
| 平台功能 | 国际化 | 支持 29 种语言,采用分层翻译键 |
| 主题系统 | 基于 CSS 的主题编辑器、自定义主题创建、主题分享 | |
| 自动更新 | 自动更新检测、下载和安装系统 |
来源:README.md18-26 src/renderer/src/declaration.d.ts44-479 src/types/index.ts8-371
Hydra Launcher 实现了复杂的多进程架构,超越了传统 Electron 应用程序,以支持复杂的下载操作、社交功能和云服务。
来源:src/main/events/index.ts1-115 src/preload/index.ts1-480 src/types/index.ts1-371
来源:src/types/index.ts100-109 src/renderer/src/declaration.d.ts52-70 src/preload/index.ts28-63
应用程序采用复杂的多进程架构,职责明确
WindowManager、DownloadManager、HydraApi 客户端和系统集成aria2p 和 libtorrent 处理繁重的下载操作| 通信路径 | 协议 | 目的 |
|---|---|---|
| 主进程 ↔ 渲染进程 | Electron IPC | UI 事件、数据同步、用户操作 |
| 主进程 ↔ Python RPC | TCP 套接字/HTTP | 下载控制、进度更新、种子操作 |
| 渲染进程 → 外部 API | HTTP/WebSocket | Steam250 抓取、直接 API 调用 |
预加载脚本通过 window.electron 暴露了一个全面的 API 接口,包含 100 多个方法,涵盖下载、库管理、用户资料、成就和云服务。
来源:src/preload/index.ts27-479 src/renderer/src/declaration.d.ts44-368
主进程协调多个专门的服务,处理应用程序的不同方面
来源:src/renderer/src/declaration.d.ts50-363 src/main/events/index.ts1-115
Hydra 定义了全面的 TypeScript 接口,连接主进程服务和 UI
来源:src/types/index.ts99-371 src/renderer/src/declaration.d.ts2-40
Hydra 使用 LevelDB 进行持久化本地存储,数据组织成逻辑子层
| 存储层 | 目的 | 关键数据类型 |
|---|---|---|
gamesSublevel(游戏子层) | 游戏库管理 | LibraryGame[]、可执行文件路径、Wine 前缀、游玩时间 |
downloadsSublevel(下载子层) | 下载队列和进度 | Download[]、进度跟踪、文件验证状态 |
achievementsSublevel(成就子层) | 成就持久化 | UserAchievement[]、解锁时间戳、同步状态 |
userPreferences(用户偏好) | 应用程序配置 | UserPreferences、主题设置、API 令牌、通知偏好 |
windowState(窗口状态) | UI 状态持久化 | 窗口尺寸、位置、最大化状态 |
渲染进程使用 Redux 进行状态管理,具有以下关键状态切片:
| 状态切片 | 受管理数据 | 来源 |
|---|---|---|
| 库 | LibraryGame[]、筛选、收藏 | 对主进程的 IPC 调用 |
| 下载 | 活动下载、进度、队列状态 | 实时 IPC 更新 |
| 用户资料 | UserDetails、好友、成就 | HydraApi 响应 |
| 目录 | 搜索结果、筛选器、游戏发现 | Steam250 和 HydraApi |
| 通知 | 成就通知、好友请求 | 事件驱动更新 |
来源:src/types/index.ts169-182 src/types/index.ts341-362
渲染进程实现了具有多个专用界面的全面 React 应用程序
| 路由模式 | 组件用途 | 主要功能 |
|---|---|---|
/ | 主页仪表板 | 特色游戏、热门内容、用户活动动态 |
/catalogue | 游戏发现 | 搜索、筛选、Steam250 集成、随机推荐 |
/downloads | 下载管理 | 队列管理、进度跟踪、提取控制 |
/game/:shop/:objectId | 游戏详情 | 安装、选项、成就、云存档、好友活动 |
/settings | 应用程序配置 | 下载源、主题、隐私、账户管理 |
/profile/:userId | 用户资料 | 好友管理、成就比较、活动历史 |
/achievements/:objectId/:shop | 成就追踪 | 进度可视化、解锁历史、点数计算 |
应用程序为不同的功能区域实现了专门的组件
来源:src/locales/en/translation.json15-31 src/locales/en/translation.json64-223
应用程序遵循精心编排的初始化序列,以确保所有系统在需要时可用
HydraApi、DownloadManager、ProcessWatcher 和其他核心服务启动WindowManager 创建主窗口并加载渲染进程主进程注册了涵盖所有主要功能的综合 IPC 处理程序
| 事件类别 | 处理程序计数 | 关键事件 |
|---|---|---|
| 下载管理 | 15+ | startGameDownload、pauseGameDownload、checkDebridAvailability |
| 库操作 | 20+ | addGameToLibrary、openGame、updateExecutablePath、extractGameDownload |
| 用户与社交 | 15+ | getUser、sendFriendRequest、updateProfile、getUnlockedAchievements |
| 云服务 | 10+ | uploadSaveGame、downloadGameArtifact、toggleAutomaticCloudSync |
| 系统集成 | 10+ | showOpenDialog、checkForUpdates、installCommonRedist |
来源:src/main/events/index.ts4-114 src/preload/index.ts27-479
Hydra 使用 electron-vite 进行构建和打包,结构如下:
src/main - 主进程代码src/renderer - 渲染进程代码 (React 应用程序)src/preload - 用于安全 IPC 的预加载脚本python_rpc - 用于 BitTorrent 功能的 Python 代码构建系统配置为生成 Windows 和 Linux 版本,并为每个平台提供适当的打包。