PROJECT CHRONICLE · 2026

將不可見的意志
凝成可見的印記

以 Sigil 封裝 RPG Maker 遊戲資產,讓創作者能以技術手段清楚表達: 這些內容,不希望被隨意翻閱。

01

不是宣稱無法破解,而是提高取得成本。
封裝本身,就是一道清楚的界線。

沿著軌跡向下

守護,不一定要是一道
無法跨越的牆。

它也可以是一枚印記 - 讓看見的人理解創作者的意願,並在跨越之前,多一次停下來思考的機會。

核心
唯讀 VFS 封裝
起點
RMMV 1.6.1 / Linux
語言
Rust

從一個念頭
走向可運行的封裝

版本節點與開發細項沿中央軸線向下展開
實心節點代表完成,空心節點代表仍在路上

ORIGIN

起點

為創作者劃出界線

確立「不解壓至暫存檔」的方向:
資產在執行時留在記憶體,並以封裝提高隨意翻閱的成本。

  • 意志
  • 守護
  • 契約
M0 · DONE

開發基線

Rust workspace 就位

核心套件、CLI 與鎖定依賴建立完成;
格式、靜態檢查、測試流程成為後續開發的共同底線。

M1 · DONE

Archive format v1

第一枚可驗證的封印

完成唯讀封包核心。
以 XChaCha20-Poly1305 驗證索引與檔案,BLAKE3 建立內容識別,並保證相同輸入可重現。

185個測試資產
完整封裝與還原
M3 · IN PROGRESS

Bundle

完整輸出樹已經成形

正式 bundle 流程已能安全複製 NW.js runtime、將唯讀資產封裝爲 assets.sigil,並把存檔留在外部可寫目錄。
所有內容先在 staging 完成,再以 no-clobber 操作原子發布;來源遊戲、既有輸出與開發者金鑰都不會被帶入或覆寫。

184個唯讀資產
完成真實遊戲封裝
已接上原生攔截層
M4 · DONE

Launcher

玩家不需要看見金鑰

每份遊戲都有自己的 Sigil launcher:它從自身位置找到 runtime 與封包,先完成驗證,再讓金鑰只在記憶體中交接至 NW.js。
不要求玩家輸入參數,也不把金鑰檔放進遊戲目錄。

Launcher 已就位
M5 · IN PROGRESS

Native interception

NW.js 開始看見封包裡的世界

第一條原生讀取路徑已經接通:NW.js 照常開啓檔案,Sigil 在背後驗證並解密資產,再交回只存在於記憶體的匿名檔案。
open、read、seek 與 mmap 已經打通;stat、access 及虛擬目錄資訊也能正確回答 NW.js 的預先檢查。真實遊戲以新版攔截層再次進入持續運行。

17項自動測試通過
真實 NW.js 持續運行
下一步:虛擬目錄列舉
日期未定M6 · PLANNED

下一個切片

讓存檔走向可寫的出口

將遊戲對 www/save/ 的操作導向外部可寫目錄;
保留設定、備份與存檔流程,同時不讓任何寫入碰觸唯讀封包。

日期未定M7 · PLANNED

End-to-end

從封裝一路走進遊戲

從全新輸出目錄啟動真實遊戲,逐一驗證標題、地圖、對話、圖片、字型、音樂、音效與存檔流程。
同時確認資產不落地、損壞資料會被拒絕,並記錄效能基線與已知限制。

端到端整合與驗收
日期未定M8 · PLANNED

v0.1 delivery

讓成果可以被重建與交付

完成建置與使用文件、高階技術流程圖、Linux runtime 假設及第三方授權檢查。
最後在乾淨環境重建、封裝與執行,產生 release artifact 及 checksum。

  • 交付物不含金鑰、測試素材或本機絕對路徑
  • 未參與開發者也能依文件重建 v0.1
  • release 只保留必要元件與授權資訊
DATE · 遙遙無期THE DISTANT FUTURE

正式發佈

Sigil v1.0

當封裝、執行、相容性與交付都足以承受「穩定」兩個字... 才會抵達這裡。

真正重要的不是無法打開
而是打開之前,你知道那是一道界線

Sigil · Built deliberately in Rust