菜单

核心架构

相关源文件

本文档概述了 Hydra Launcher 的核心架构,描述了该应用程序如何作为 Electron 应用程序进行构建,包括其主进程和渲染进程,这些进程如何相互通信,以及驱动应用程序功能的关键服务。

有关设置开发环境的信息,请参阅开发设置。有关下载系统或游戏库管理等特定子系统的详细信息,请参阅其在下载系统游戏库管理中的相应部分。

Electron 架构概述

Hydra Launcher 使用 Electron 构建,Electron 是一个将 Chromium(用于渲染)和 Node.js(用于后端)结合起来,以网络技术创建跨平台桌面应用程序的框架。该应用程序遵循 Electron 的进程模型,包括:

  1. 主进程:运行后端代码的 Node.js 进程
  2. 渲染进程:显示用户界面的 Chromium 进程
  3. 预加载脚本:安全地连接这两个进程的特殊脚本

主进程和渲染进程架构

来源

主进程

主进程负责:

  1. 应用程序生命周期管理
  2. 窗口创建和管理
  3. 与操作系统交互
  4. 管理核心服务
  5. 处理与渲染进程的 IPC 通信

应用程序入口点

应用程序的入口点是src/main/index.ts。此文件:

  1. 初始化 Electron 应用程序
  2. 设置深层链接的协议处理器
  3. 通过 WindowManager 创建主窗口
  4. 设置应用程序生命周期事件的事件监听器
  5. 初始化系统托盘

来源

服务初始化

src/main/main.ts 文件负责加载应用程序状态并初始化所有核心服务

  1. 从 LevelDB 加载用户偏好设置
  2. 导入所有事件处理程序
  3. 初始化用于 HTTP 下载的 Aria2 服务
  4. 设置 API 客户端(Real-Debrid,TorBox)
  5. 初始化用于种子下载的 Python RPC
  6. 设置游戏追踪和成就系统

来源

窗口管理

src/main/services/window-manager.ts 中的 WindowManager 类处理:

  1. 创建和管理主应用程序窗口
  2. 处理窗口状态(大小、位置、最大化)
  3. 设置系统托盘
  4. 创建辅助窗口(认证窗口、编辑器窗口)
  5. 处理应用程序不同部分之间的导航

来源

渲染器进程

渲染进程是一个提供用户界面的 React 应用程序。关键组件包括:

  1. React 用于 UI 渲染
  2. Redux 用于状态管理
  3. React Router 用于导航
  4. i18next 用于国际化

React 应用程序结构

来源

IPC 通信

主进程和渲染进程之间的通信通过 Electron 的 IPC(进程间通信)系统进行。

  1. 预加载脚本向渲染进程公开了一个安全的 API
  2. 主进程注册 IPC 事件的处理程序
  3. 渲染进程通过公开的 window.electron 对象调用方法
  4. 事件在进程之间双向流动

IPC 通信流程

src/preload/index.ts 中的预加载脚本向渲染进程公开了一个全面的 API,涵盖:

  1. 游戏库管理
  2. 下载操作
  3. 用户认证和资料管理
  4. 硬件交互
  5. 系统功能

来源

数据存储

Hydra Launcher 使用多种存储机制:

  1. LevelDB:用于持久化应用程序数据(游戏、下载、设置)
  2. Redux:用于渲染进程中的运行时状态
  3. localStorage:用于在会话之间缓存一些用户数据

LevelDB 数据库通过 db 对象访问,并组织成子层级:

  • gamesSublevel:游戏信息
  • downloadsSublevel:下载进度和状态
  • 其他各种特定数据类型的子层级

来源

主要服务

HydraApi

HydraApi 服务处理与 Hydra 后端 API 的通信,包括:

  1. 身份验证
  2. 游戏元数据
  3. 用户资料和社交功能
  4. 云存档同步
  5. 成就追踪

DownloadManager

DownloadManager 使用以下方式协调游戏下载:

  1. 用于种子下载的 Python RPC(通过 libtorrent)
  2. Aria2 用于 HTTP 下载
  3. 与高级服务(Real-Debrid, TorBox)集成
  4. 下载队列管理
  5. 进度跟踪和报告

PythonRPC

PythonRPC 服务管理与 Python 进程的通信,该进程处理:

  1. 通过 libtorrent 进行种子下载
  2. 通过 aria2p 进行 HTTP 下载
  3. 下载内容的 文件操作

WindowManager

如前所述,WindowManager 处理窗口创建和管理。

ProcessWatcher

ProcessWatcher 服务跟踪正在运行的游戏进程,以实现:

  1. 监控游戏执行
  2. 追踪游玩时间
  3. 检测游戏何时关闭
  4. 支持成就检测

来源

应用程序启动流程

下图说明了应用程序的启动顺序

来源

结论

Hydra Launcher 的架构围绕 Electron 的进程模型构建,主进程(处理后端操作)和渲染进程(管理用户界面)之间有明确的分离。这些进程之间的通信通过精心设计的 IPC 接口实现。

该应用程序在前端利用了 React、Redux 和 React Router 等现代网络技术,同时利用 Node.js 的能力和外部进程实现后端功能。这种架构使 Hydra 能够为游戏管理提供无缝的桌面体验,同时保持网络技术的灵活性和强大功能。