自制《貪婪之秋》的漢化包文件(擴展名爲.spk和.stc)自動重新打包工具
自制《貪婪之秋》的漢化包文件(擴展名爲.spk和.stc)自動重新打包工具,可以方便地製作定製的漢化包文件。
截圖 共 8 張
模組介紹 作者原文
自制《貪婪之秋》的漢化包文件(擴展名爲.spk和.stc)自動重新打包工具,可以方便地製作定製的漢化包文件。
前言
《貪婪之秋》這遊戲挺好玩的,俺上個星期看到有水友發了“修正遊戲中若干翻譯錯誤,強迫症福音”的帖子,發現這遊戲的漢化文本是明文編碼保存的,故頗有興致的寫了個程序實現了自動重新打包.spk和.stc編碼文件的功能,特分享給各位強迫症水友!
正題
首先說明下此工具的使用步驟:
1、去俺之前發的這個帖子自制遊戲統一管理工具下載game.7z文件,並解壓到任意目錄,如:d:\tools;
2、以系統管理員身份運行“命令提示符”,輸入命令:
cd /d d:\tools\game\bin
3、用7zip等解壓工具解壓縮文件GreedFall\packs\loc_chn_data.spk到任意目錄,並用文本編輯工具修改好需要修改的遊戲中文文本文件(在解壓後的text子目錄中);
4、用文本編輯工具打開配置文件 d:\tools\game\bin\file-spk.xml,並修改下面標紅的節點值;
```
FileSPK配置節點結構說明:
FileSPK節點由comment、SPKCode節點按順序組成,comment節點必須在最前面,SPKCode節點可以有多個。
FileSPK::comment FileSPK配置節點結構說明,對文件重新打包無影響,僅此說明而已。
FileSPK::SPKCode SPK編碼對象,包含了自動修改.spk文件和其相對應的同名.stc文件所需的所有參數。
SPKCode節點由節點unpackPath、repackPath、filePath、fileName、queryRegex、STCFormat、SPKFormat按順序組成。
SPKCode::unpackPath.spk文件解包路徑,也是SPKCode::queryRegex進行正則查詢匹配的輸入路徑。
SPKCode::repackPath.spk文件重新打包路徑;不能與SPKCode::filePath同值。
SPKCode::filePath.spk文件和其相對應的同名.stc文件路徑,與SPKCode::fileName聯合以用於讀取文件內容。
SPKCode::fileName.spk文件和其相對應的同名.stc文件名稱,與SPKCode::filePath聯合以用於讀取文件內容。
SPKCode::queryRegex 文件名正則查詢表達式,用於查詢SPKCode::unpackPath路徑下的所有文件;支持引用表達式和特殊字符佔位符表達式(參見file命令參數說明)。
SPKCode::STCFormat.stc文件數據格式對象,用於解析該文件的數據結構。
STCFormat節點由節點HeaderInfo、BodyInfo、ListInfo按順序組成,描述了整個.stc文件的數據結構。
STCFormat::HeaderInfo.stc文件中文件頭部信息。
STCFormat::HeaderInfo節點由節點headerSize、headerFlag、recordSizeExpr按順序組成。
STCFormat::HeaderInfo::headerSize 文件頭部的頭部大小(以字節爲單位的自然數,下同)。
STCFormat::HeaderInfo::headerFlag 文件頭部的頭部起始標誌;支持16進制字符串表達式(匹配的正則表達式爲:(?i)\A0x([0-9a-f]+)$)、引用表達式及特殊字符佔位符表達式(下同)。
STCFormat::HeaderInfo::recordSizeExpr 文件頭部的記錄個數表達式;形如:起始位置[-,;][個數],若不指定個數,程序會取默認值1個;匹配的正則表達式爲:\A([1-9]\d*)(?:-,;)?$。
STCFormat::BodyInfo.stc文件中對象主體信息。
STCFormat::BodyInfo節點由節點headerSize、headerFlag、fileStartPosExpr、fileSizeExpr按順序組成。
STCFormat::BodyInfo::headerSize 對象主體的頭部大小。
STCFormat::BodyInfo::headerFlag 對象主體的頭部起始標誌。
STCFormat::BodyInfo::fileStartPosExpr 對象主體中文件起始位置表達式;形如:起始位置[-,;][個數],若不指定個數,程序會取默認值1個;匹配的正則表達式爲:\A([1-9]\d*)(?:-,;)?$。
STCFormat::BodyInfo::fileSizeExpr 對象主體中文件大小表達式;形如:起始位置[-,;][個數],若不指定個數,程序會取默認值1個;匹配的正則表達式爲:\A([1-9]\d*)(?:-,;)?$(下同)。
STCFormat::ListInfo.stc文件中對象列表信息。
STCFormat::ListInfo節點由節點headerSize、headerFlag按順序組成。
STCFormat::ListInfo::headerSize 對象列表的頭部大小。
STCFormat::ListInfo::headerFlag 對象列表的頭部起始標誌。
SPKCode::SPKFormat.spk文件數據格式對象,用於解析該文件的數據結構。
SPKFormat節點由節點BodyInfo、ListInfo、TailInfo按順序組成,描述了整個.spk文件的數據結構。
SPKFormat::BodyInfo.spk文件中對象主體信息。
SPKFormat::BodyInfo節點由節點headerSize、headerFlag、fileSizeExpr、filePathExpr按順序組成。
SPKFormat::BodyInfo::headerSize 對象主體的頭部大小。
SPKFormat::BodyInfo::headerFlag 對象主體的頭部起始標誌。
SPKFormat::BodyInfo::fileSizeExpr 對象主體中文件大小表達式。
SPKFormat::BodyInfo::filePathExpr 對象主體中文件路徑名長度表達式。
SPKFormat::ListInfo.spk文件中對象列表信息。
SPKFormat::ListInfo節點由節點headerSize、headerFlag、fileSizeExpr按順序組成。
SPKFormat::ListInfo::headerSize 對象列表的頭部大小。
SPKFormat::ListInfo::headerFlag 對象列表的頭部起始標誌。
SPKFormat::ListInfo::fileSizeExpr 對象列表中文件大小表達式。
SPKFormat::TailInfo.spk文件中文件尾部信息。
SPKFormat::TailInfo節點由節點headerSize、headerFlag按順序組成。
SPKFormat::TailInfo::headerSize 文件尾部的頭部大小。
SPKFormat::TailInfo::headerFlag 文件尾部的頭部起始標誌。
D:/360安全瀏覽器下載/GF/解包/loc_chn_data
D:/360安全瀏覽器下載/GF/修改
D:/360安全瀏覽器下載/GF/備份
loc_chn_data
(?i)`.txt`$
12
0x53544f43
9
72
0x70f7af789800000070f7af789800000070f7af789800000000000000fd7f00000000000000000000
49
57
2
0xd401
30
0x504b0304
19,2
27
46
0x504b0102
21,2
22
0x504b0506
```
所有的配置節點水友們可以查看配置文件中的詳細說明,俺特別說明下被標紅的需要修改的3個節點的含義:
unpackPath 指.spk編碼文件解壓縮的目錄,即保存你手動修改好的.txt漢化文本文件的目錄;
repackPath 指程序根據你已修改好的.txt漢化文本文件和遊戲原始.spk和.stc文件自動生成重新打包的.spk和.stc文件的輸出目錄;
filePath 指遊戲原始.spk和.stc文件的輸入目錄,建議不要直接指定爲遊戲目錄,而是從遊戲目錄中複製一份到指定的備份目錄;
5、輸入命令:
```
file -rfspk+ (?i)`file-spk.xml`$. 1
```
此時程序會根據配置文件自動完成文件loc_chn_data.spk和文件loc_chn_data.stc的重新打包;
6、將上一步生成的這兩個文件複製到遊戲目錄 GreedFall\packs 下覆蓋,即可運行遊戲查看效果了。
下面是俺的分析思路:.spk文件:
對象主體信息:
對象頭部長度:30字節+文件相對路徑名字節數
起始標誌:50 4b 03 04
文件大小:從第19個字節起,連續兩個雙字(19到22字節和23到26字節)同值文件相對路徑名長度:第27~28字節,是個短整型數據
文件相對路徑名:從第31個字節起,直到第一個00字節結束
文件內容:從.stc文件對應的對象主體信息的文件起 …
安裝與使用 安裝:按包內說明操作
- 解壓本站下載的壓縮包,先讀包內的 readme / 說明檔案。
- 這類遊戲沒有通用的模組管理器:有的模組直接替換遊戲檔案、有的放進遊戲專屬的 Mods 資料夾、有的要先裝遊戲對應的社群載入器或工具,以包內說明為準。
- 嚴格按說明放置檔案;標註「前置依賴」的模組需要把依賴一併裝好。
- 啟動遊戲確認載入成功;部分遊戲需要在設定或模組選單裡手動啟用。
不同遊戲、不同模組的安裝位置差異很大,包內說明是最可靠的依據。