菜单

概述

相关源文件

本文档全面介绍了 Hydra Launcher 仓库,解释了其目的、架构和核心组件。Hydra 是一个复杂的游戏平台,它将游戏管理、社交功能、云服务和多源下载整合为统一的体验。有关各个子系统的具体详细信息,请参阅其各自的文档页面。

目的与范围

Hydra Launcher 是一个基于 Electron 的应用程序,使用 TypeScript 和 Python 编写,作为一款全面的社交游戏平台。除了传统的游戏启动器功能外,它还为玩家提供了一个丰富生态系统,具有以下核心功能:

  • 游戏库管理:完整的游戏元数据、启动功能和进度跟踪
  • 多源下载:基于 Python RPC 的下载系统,支持种子下载、高级服务(Real-Debrid、TorBox)和直接 HTTP 下载
  • 社交游戏功能:用户资料、好友系统、成就比较和活动分享
  • 云服务:通过 Hydra Cloud 订阅实现游戏存档同步、成就跟踪和跨设备连续性
  • 成就系统:实时成就解析、进度跟踪和社交比较
  • 全球平台:支持 29 种语言的国际化和广泛本地化
  • 自定义:高级主题系统,带有基于 CSS 的主题编辑器

来源: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

进程结构和通信

应用程序采用复杂的多进程架构,职责明确

  1. 主进程:基于 Node.js 的进程,管理应用程序生命周期、WindowManagerDownloadManagerHydraApi 客户端和系统集成
  2. 渲染进程:基于 Chromium 的进程,运行带有 Redux 状态管理和 React Router 导航的 React 应用程序
  3. Python RPC 进程:外部基于 Flask 的 RPC 服务器,通过 aria2plibtorrent 处理繁重的下载操作

进程间通信

通信路径协议目的
主进程 ↔ 渲染进程Electron IPCUI 事件、数据同步、用户操作
主进程 ↔ Python RPCTCP 套接字/HTTP下载控制、进度更新、种子操作
渲染进程 → 外部 APIHTTP/WebSocketSteam250 抓取、直接 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成就追踪进度可视化、解锁历史、点数计算

核心 UI 组件

应用程序为不同的功能区域实现了专门的组件

来源:src/locales/en/translation.json15-31 src/locales/en/translation.json64-223

应用程序生命周期和初始化

启动序列

应用程序遵循精心编排的初始化序列,以确保所有系统在需要时可用

  1. Electron 应用程序启动:主进程启动并注册自定义 URL 方案的协议处理程序
  2. 系统集成:自动更新器、系统托盘和原生集成已配置
  3. 数据库初始化:LevelDB 开启,包含所有用于游戏、下载、成就和偏好设置的子层
  4. 外部进程启动:Python RPC 服务器启动以进行下载操作
  5. 服务初始化HydraApiDownloadManagerProcessWatcher 和其他核心服务启动
  6. 窗口创建WindowManager 创建主窗口并加载渲染进程
  7. 状态恢复:继续之前的下载,加载用户认证状态,恢复窗口位置
  8. UI 渲染:React 应用程序初始化,加载 Redux 存储和路由系统

IPC 事件注册

主进程注册了涵盖所有主要功能的综合 IPC 处理程序

事件类别处理程序计数关键事件
下载管理15+startGameDownloadpauseGameDownloadcheckDebridAvailability
库操作20+addGameToLibraryopenGameupdateExecutablePathextractGameDownload
用户与社交15+getUsersendFriendRequestupdateProfilegetUnlockedAchievements
云服务10+uploadSaveGamedownloadGameArtifacttoggleAutomaticCloudSync
系统集成10+showOpenDialogcheckForUpdatesinstallCommonRedist

来源: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 版本,并为每个平台提供适当的打包。

来源:electron.vite.config.ts12-62 package.json16-31