Skip to content

maincoretech/WebGAL_k

 
 

Repository files navigation

WebGAL_k

English

WebGAL + hexz = 加密 · 随机访问 · 差量更新的桌面端视觉小说引擎

基于 WebGAL / Tauri v2 / hexz,将游戏资源打包为独立 .hxz 加密归档文件,支持 Steamworks 差量更新。


架构

%%{init: {'theme': 'dark', 'themeVariables': {'fontSize': '13px'}}}%%
flowchart LR
    subgraph Disk["💾 分发"]
        HXZ["📦 game.hxz<br/>AES-256-GCM 加密<br/>随机访问索引"]
        APP["🖥️ webgal-k.app"]
        HXZ -. "独立于 .app<br/>差量更新友好" .- APP
    end

    subgraph Rust["🦀 src-tauri/src/lib.rs"]
        Protocol["hexz:// protocol"]
        IPC["read_hexz_file IPC"]
        Store["Arc&lt;ResourcePack&gt;<br/>无锁并发读"]
    end

    subgraph JS["📦 hexzFetch.ts"]
        Text["hexzText() / hexzJson()"]
        Asset["assetSetter() → hexz://localhost/xxx"]
    end

    HXZ --> Protocol
    HXZ --> IPC
    Protocol -- "img/audio/video/font" --> Browser["🌐 WebView"]
    IPC -- "json/txt/scss" --> Text
    Text --> Browser
    Asset --> Protocol
    Asset --> Text
Loading

双通道设计hexz:// protocol 处理 no-cors 媒体,Tauri IPC 处理文本资源(WKWebView 阻止跨域 XHR)。

资源类型 通道 原因
图片 / 音频 / 视频 / 字体 hexz:// protocol 浏览器原生,零开销
json / txt / scss Tauri IPC WKWebView CORS 限制

与上游 WebGAL 差异

资源加载

上游 WebGAL WebGAL_k
资源散落在 public/game/ 目录 打包为单个 game.hxz 加密归档
通过相对路径 ./game/xxx 加载 通过 hexz://localhost/xxx 协议加载
所有请求走浏览器 fetch/XHR 双通道:no-cors 走 protocol,文本走 IPC
依赖 Service Worker 做缓存/转发 无 SW(WKWebView 不支持)

安全性

上游 WebGAL WebGAL_k
资源明文存储在文件系统 AES-256-GCM 加密
密码无原生支持 HEXZ_PASSWORD 环境变量解密

分发与更新

上游 WebGAL WebGAL_k
Web 端部署,资源随页面加载 桌面端 Tauri 打包
更新需重新部署全部文件 .hxz 独立于可执行文件,支持 Steamworks 差量更新
客户端每次请求完整资源 O(1) 随机访问,按需读取单个文件

并发性能

上游 WebGAL WebGAL_k
浏览器原生并发 Arc<ResourcePack> 无锁并发,protocol + IPC 多通道并行

UI 微调

  • 文本框移除 backdrop-filter: blur(),背景加深

构建

# 1. 打包游戏资源为 .hxz 归档(无加密情况)
# 同样的你可以使用gui工具来做这一步
cargo run --manifest-path hexz_k/Cargo.toml -- pack game/ game.hxz

# 2. 构建桌面应用
bun tauri build

# 3. 部署:game.hxz 放在可执行文件同目录
cp game.hxz src-tauri/target/release/bundle/macos/webgal-k.app/Contents/MacOS/

find_hexz() 自动搜索 exe 同目录、上级目录、macOS .app 同级。


hexz 特性利用

特性 实现
加密 AES-256-GCM,HEXZ_PASSWORD 环境变量
随机访问 O(1) 索引查找,按需读取单文件
并发读 Arc<ResourcePack>,protocol + IPC 并行
差量更新 .hxz 独立于可执行文件,Steamworks 友好

许可

MIT · 基于 WebGAL 构建

About

modified WebGAL used on our games

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • TypeScript 86.8%
  • SCSS 8.7%
  • HTML 1.8%
  • Rust 1.3%
  • JavaScript 1.0%
  • CSS 0.3%
  • Shell 0.1%