本文档概述了 Hydra Launcher 的核心架构,描述了该应用程序如何作为 Electron 应用程序进行构建,包括其主进程和渲染进程,这些进程如何相互通信,以及驱动应用程序功能的关键服务。
有关设置开发环境的信息,请参阅开发设置。有关下载系统或游戏库管理等特定子系统的详细信息,请参阅其在下载系统和游戏库管理中的相应部分。
Hydra Launcher 使用 Electron 构建,Electron 是一个将 Chromium(用于渲染)和 Node.js(用于后端)结合起来,以网络技术创建跨平台桌面应用程序的框架。该应用程序遵循 Electron 的进程模型,包括:
来源
主进程负责:
应用程序的入口点是src/main/index.ts。此文件:
来源
src/main/main.ts 文件负责加载应用程序状态并初始化所有核心服务
来源
src/main/services/window-manager.ts 中的 WindowManager 类处理:
来源
渲染进程是一个提供用户界面的 React 应用程序。关键组件包括:
来源
主进程和渲染进程之间的通信通过 Electron 的 IPC(进程间通信)系统进行。
window.electron 对象调用方法src/preload/index.ts 中的预加载脚本向渲染进程公开了一个全面的 API,涵盖:
来源
Hydra Launcher 使用多种存储机制:
LevelDB 数据库通过 db 对象访问,并组织成子层级:
gamesSublevel:游戏信息downloadsSublevel:下载进度和状态来源
HydraApi 服务处理与 Hydra 后端 API 的通信,包括:
DownloadManager 使用以下方式协调游戏下载:
PythonRPC 服务管理与 Python 进程的通信,该进程处理:
如前所述,WindowManager 处理窗口创建和管理。
ProcessWatcher 服务跟踪正在运行的游戏进程,以实现:
来源
下图说明了应用程序的启动顺序
来源
Hydra Launcher 的架构围绕 Electron 的进程模型构建,主进程(处理后端操作)和渲染进程(管理用户界面)之间有明确的分离。这些进程之间的通信通过精心设计的 IPC 接口实现。
该应用程序在前端利用了 React、Redux 和 React Router 等现代网络技术,同时利用 Node.js 的能力和外部进程实现后端功能。这种架构使 Hydra 能够为游戏管理提供无缝的桌面体验,同时保持网络技术的灵活性和强大功能。