kyo5uke/sushidash

GitHub: kyo5uke/sushidash

一款用于加速网页游戏「寿司打」Unity WebGL 加载速度的 Chrome 扩展,通过动态修补二进制数据跳过启动画面并缓存资源文件。

Stars: 0 | Forks: 0

# sushidash [English](README.en.md) | 日本語 加速寿司打 (Unity WebGL) 加载速度的 Chrome 扩展。 [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/114f836e71195114.svg)](https://github.com/kyo5uke/sushidash/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) ![有扩展(上)与无扩展(下)的启动比较。页面跳转的时机已对齐](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/a47694a5f5195121.gif) ``` [sushidash] patcher initialized (XHR override active) [sushidash] intercepting XHR: https://sushida.net/files/v1_3/Web.data.unityweb [sushidash] splash byte patched at block 0 offset 4200 [sushidash] web.data patched in 12.4ms: 7411331 → 7490398 B [sushidash] cache stored: Web.data.unityweb (7,490,398 B) [sushidash] canvas first draw via drawArrays ``` 每次打开寿司打都要盯着 Unity 的 Neutral logo (splash) 看 2 秒,实在是太无聊了。sushidash 不会将文件打包,而是在浏览器中动态修补 `Web.data.unityweb` 以跳过 splash,并将 3 个 `.unityweb` 文件缓存到 Cache Storage 中,使得第 2 次及以后的加载实现零网络请求。 这是一个为了个人学习而制作的非官方扩展,与 sushida.net 的运营方无关。 关于如何重写二进制文件(UnityWebData / UnityFS / LZ4 / splash byte)的细节,我详细写在了 [Zenn 文章](https://zenn.dev/kyo5uke/articles/ec6eb050427880) 中。 ## 功能 - 关闭 Unity splash (Neutral logo) — 启动缩短约 2 秒 - 将 3 个 `.unityweb` 文件保存到 Cache Storage — 第 2 次及以后实现零网络请求 - 在 `document_start` 阶段预取 3 个文件 — 首次加载也能通过并行下载提前进行 - 为 canvas 添加 500ms 的 fade-in 效果 - 将广告 (AdSense) 延迟至 canvas 首次绘制 +1.5 秒后显示(最终必定会显示) ## 安装说明 从 [Releases](https://github.com/kyo5uke/sushidash/releases) 下载最新的 `sushidash-*.zip` 并解压,然后 1. 打开 `chrome://extensions/` 2. 打开右上角的“开发者模式” 3. 点击“加载已解压的扩展程序” -> 选择解压后的文件夹 从源码安装(面向开发者): ``` git clone https://github.com/kyo5uke/sushidash ``` 进行克隆,然后在步骤 3 中选择 `src/` 文件夹。 扩展程序本身不包含游戏主体(`.unityweb`)。补丁每次都会针对从 sushida.net 获取的实时数据在浏览器内进行应用。 ## 使用方法 只需打开 [sushida.net/play.html](https://sushida.net/play.html)。如果没有出现 Neutral logo,并且游戏画面直接淡入,则说明运行成功。DevTools 的 Console 中会输出 `[sushidash]` 的日志。 | 日志 | 含义 | | --- | --- | | `splash byte patched at block 0 offset N` | splash 补丁成功 | | `web.data patched in Xms: A → B` | 补丁执行时间及前后大小 | | `cache stored: ...` | 已保存到 Cache Storage | | `cache hit (XHR/fetch): ...` | 第 2 次及以后,从缓存中提供 | | `prefetched: ...` | 预取完成 | | `canvas first draw via ...` | 游戏画面开始渲染 | 可以通过 `src/enhance.js` 开头的 `CONFIG`(fade 时间、广告延迟等)来调整运行行为。 ## 原理(简述) 文件不包含在扩展中,而是在浏览器内动态进行重写。 1. 在 `document_start` 阶段拦截 `XMLHttpRequest` / `fetch` 2. 展开 `Web.data.unityweb`(UnityWebData -> UnityFS -> LZ4 块),将 splash 标志的 1 个字节从 `0x01 -> 0x00` 3. 由于没有实现 LZ4 编码器,因此重写后的块将以未压缩的形式写回(数据会因此增加约 80KB) 4. 将已打补丁的数据保存到 Cache Storage,第 2 次及以后将从这里提供 关于二进制的解析步骤和遇到的坑,请参考 [Zenn 文章](https://zenn.dev/kyo5uke/articles/ec6eb050427880)。 ## 注意事项 - 这是一个非官方扩展。请各自确认 sushida.net 的使用条款。 - 如果网站端更新了文件版本 (`v1_3`),splash 补丁将变为 no-op,并恢复原始行为(故障安全)。预取会返回 404 并在 Console 中输出 warn,请更新 `patcher.js` 中的 `PREFETCH_VERSION`。 - 由于没有实现 LZ4 编码器,首块将以未压缩形式写回。Unity 读取的数据会增加约 80KB(从 sushida.net 的传输量是不变的)。 - 广告会延迟约 1.5 秒显示。 ## 许可证 [MIT](LICENSE)
标签:CMS安全, JavaScript, Unity WebGL, Web性能优化, 数据可视化, 浏览器扩展, 游戏辅助, 缓存管理, 自定义脚本