Skip to content

About

一款为游戏《光点之旅》专门开发的启动器。

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

TOLP Launcher · 光点之旅启动器

TOLP Launcher · 光点之旅启动器

《光点之旅(Tour of Light Point)》的桌面启动器:启动本地目录下的网页版游戏,并提供游戏版本管理、启动方式(全屏 / 窗口化 + 可调窗口分辨率)等设置。

技术栈:Vue 3 + TypeScript + Vite(前端)/ Tauri 2 + Rust(后端)。

工作方式

  • 启动器内嵌一个仅监听 127.0.0.1 随机端口的静态文件服务器(Rust / tiny_http)来提供游戏文件——GDevelop 网页版导出必须经 HTTP 访问。
  • 点击「启动游戏」会按启动设置新开一个独立游戏窗口:全屏(无边框)或窗口化(分辨率可在启动器设置中选择预设或自定义);关闭游戏窗口即退出游戏,启动器不受影响。
  • 主界面实时显示游戏运行状态:游戏窗口启动后主按钮变为红色「取消运行」(点击关闭游戏),状态行小绿点呼吸闪烁;游戏关闭后自动恢复「启动游戏」。
  • 游戏存档(localStorage 等浏览器数据)写入数据文件夹的 saves/,随启动器目录移动。
  • 游戏地址使用 localhost 而非回环 IP,避免被系统代理规则拦截;游戏窗口不拥有任何 IPC 权限,与启动器相互隔离。
  • 启动命令为 async command:窗口创建需要与主线程事件循环交互,同步 command 会与其互锁导致应用挂起。

游戏文件放置

启动器首次运行会在 exe 同目录创建数据文件夹 launcher-data/(游戏版本与存档的统一存放位置)。快速启动页可用下拉列表选择启动版本:4.0.002 DEV 或 自定义启动。

  • 内置版本 4.0.002 DEV:按以下顺序解析游戏目录:
    1. 数据文件夹 launcher-data/versions/4.0.002/(版本管理页会自动识别 versions/ 下所有含 index.html 的子目录);
    2. 版本管理中指定的自定义位置;
    3. 旧版约定:exe 同目录 games/<版本>/;
    4. exe 同目录 game/ 文件夹(便携版默认约定);
  • 自定义启动:按以下顺序查找游戏目录:
  1. 「自定义启动 → 选择文件夹」中指定的目录;
  2. 启动器 exe 同目录的 game/ 文件夹(便携版默认约定);
  3. 开发构建(tauri dev)下回退到仓库根目录的 game/。

要求目录中直接包含 GDevelop「网页版 / HTML5」导出的 index.html。若目录中带有 manifest.webmanifest,启动器会读取其中的 version(版本号)与 id(官方 id 为 com.mws.tolp)用于版本识别。也可以用 dev/sample-game/ 里的测试页验证整条链路。

设置保存在 exe 同目录的 launcher-settings.json(便携约定,不写注册表 / AppData)。

本地开发

要求:Node.js ≥ 20、Rust stable(MSVC)、WebView2 Runtime(Win10/11 一般自带)。

npm install
npm run tauri dev      # 开发调试
npm run tauri -- build --no-bundle   # 构建便携版裸 exe

构建产物:src-tauri/target/release/TOLP-Launcher.exe(或 target/<target>/release/ 下)。把它和 game/ 文件夹放在一起即可分发。

资源再生成

  • 图标(白色圆角矩形底 + 紫色品牌图形,取自 src/assets/tolpl-graphic-logo.svg): npm run icons → src-tauri/icons/ 与 public/favicon.svg
  • 字体子集(游戏项目「未来圆」字体,仅保留界面字符):node scripts/subset-fonts.mjs "<未来圆系列字体目录>" → src/assets/fonts/

两者产物均已提交入库,日常构建无需重新生成。发布前请自行确认字体授权允许随应用分发。

CI

.github/workflows/ci.yml:在 windows-latest 上构建 Windows x64 便携版(裸 exe + 说明文件打包为 zip,不打安装包)。触发方式:

  • 推送到 main 分支或提交 Pull Request:自动构建并上传构建产物(验证用);
  • 推送 v* 标签:构建并创建 GitHub Release,附上便携版压缩包;
  • Actions 页面手动触发(workflow_dispatch)。

发布流程:修改版本号(package.json / src-tauri/tauri.conf.json / src-tauri/Cargo.toml)→ 更新 CHANGELOG.md → 提交并打 v0.x.0 标签推送,CI 自动完成构建与发布。

目录结构

├─ src/                  # Vue 前端
│  ├─ components/        # 顶栏(品牌 Logo / 页面导航 / 窗口按钮)/ 快速启动 / 版本管理 / 启动器设置 / 关于
│  └─ lib/tauri.ts       # 后端命令封装
├─ src-tauri/            # Tauri + Rust 后端
│  └─ src/
│     ├─ data_dir.rs     # 数据文件夹(versions/ 游戏版本、saves/ 游戏存档)
│     ├─ game_server.rs  # 本地静态服务器
│     ├─ launcher.rs     # 游戏目录解析、版本识别与窗口启动
│     └─ settings.rs     # 设置读写(exe 同目录 JSON)
├─ game/                 # 游戏文件放置处(README.txt 入库,游戏本体不入库)
├─ dev/sample-game/      # 开发用测试页
├─ scripts/              # 图标 / 字体子集生成脚本
└─ .github/workflows/    # CI

UI 设计说明

视觉语言来自游戏 4.0 的 UI 设计稿:纯黑背景、发光球体(紫色 = 主操作、白色 = 次级操作)、白色圆角图标与克制的单一紫色强调色;交互动效遵循即时按压反馈、可打断过渡与 prefers-reduced-motion 降级。

About

一款为游戏《光点之旅》专门开发的启动器。

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages