English | 日本語
寿司打 (Unity WebGL) の読み込みを高速化する Chrome 拡張。
[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 ロゴ (splash) を 2 秒眺めるのは退屈。sushidash は
ファイルを bundle せず、ブラウザ内で Web.data.unityweb を動的にパッチして splash を切り、
3 つの .unityweb を Cache Storage に貯めて 2 回目以降をネットワークゼロにします。
個人の学習用に作った非公式拡張です。sushida.net の運営とは無関係。 バイナリをどう書き換えているか(UnityWebData / UnityFS / LZ4 / splash byte)は Zenn 記事 に詳しく書きました。
- Unity splash (Neutral ロゴ) を OFF — 起動が ~2 秒短縮
.unityweb3 ファイルを Cache Storage に保存 — 2 回目以降はネットワークゼロdocument_startで 3 ファイルを prefetch — 初回も並行ダウンロードで前倒し- canvas を 500ms かけて fade-in
- 広告 (AdSense) を canvas 初回描画 +1.5 秒まで遅延(最終的には必ず表示)
Releases から最新の sushidash-*.zip を落として展開し、
chrome://extensions/を開く- 右上の「デベロッパーモード」を ON
- 「パッケージ化されていない拡張機能を読み込む」→ 展開したフォルダを選択
Chrome は zip や URL を直接は読み込めません(解凍したフォルダを選ぶ方式のみ)。起動のたびに出る「デベロッパーモードの拡張機能」警告と、自動更新が無いのはこの方式の制約です。
ソースから入れる場合(開発者向け):
git clone https://github.com/kyo5uke/sushidashで clone して、手順 3 で src/ フォルダを選択。
拡張にゲーム本体 (.unityweb) は同梱しません。パッチは毎回 sushida.net から取得したライブのデータに対して、ブラウザ内で適用します。
sushida.net/play.html を開くだけ。Neutral ロゴが出ずに
ゲーム画面が直接フェードインすれば成功です。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: ... |
prefetch 完了 |
canvas first draw via ... |
ゲーム描画開始 |
動作は src/enhance.js 冒頭の CONFIG(fade 時間・広告遅延など)で調整できます。
ファイルは拡張に同梱せず、ブラウザ内で動的に書き換えます。
document_startでXMLHttpRequest/fetchを乗っ取るWeb.data.unityweb(UnityWebData → UnityFS → LZ4 ブロック)を展開し、splash フラグの 1 byte を0x01 → 0x00- LZ4 エンコーダは持たないので、書き換えたブロックは無圧縮で書き戻す(その分 ~80KB 増)
- patch 済みデータを Cache Storage に保存し、2 回目以降はそこから供給
バイナリのパース手順やハマりどころは Zenn 記事 に。
- 非公式拡張です。sushida.net の利用規約は各自で確認してください。
- patch と cache はファイル名でマッチするので、サイト側がファイルのバージョン (
v1_3など) を更新しても動きます。prefetch するバージョンはページから自動検出し、取れなければv1_3にフォールバックします(外れても先読みが効かないだけ)。 - 新しい Unity でバンドル構造が変わった場合、splash パッチはフェイルセーフで no-op になり、通常の寿司打として起動します。
- LZ4 エンコーダは実装していないため先頭ブロックを無圧縮で書き戻します。Unity が読むデータが ~80KB 増えます(sushida.net からの転送量は不変)。
- 広告は ~1.5 秒遅れて表示されます(
enhance.jsのCONFIGで変更可)。
