模组:編輯 XNB 文件

出自Stardew Valley Wiki
跳至導覽 跳至搜尋

目錄

本頁描述了如何編輯遊戲文件以更改遊戲中的數據、圖像和地圖。

介紹

什麼是 XNB 文件?

遊戲將數據、地圖和紋理存儲在 .xnb 這種壓縮數據文件中,它們在遊戲的 Content 文件夾中。

例如,對話期間顯示的阿比蓋爾的頭像來自這個文件: Content\Portraits\Abigail.xnb。解包這個文件,你會得到 Abigail.png 這個圖片文件,內容如下:
Modding - creating an XNB mod - example portraits.png

(如果你使用 xnbcli 來解包,你通常會得到 Abigail.json 文件。 那只是用來打包回 .xnb 所需的文件,通常不需要更改它。)

如何將更改應用到遊戲中?

有3個方法可以使你的修改應用到遊戲中:

  1. 創建一個Content Patcher內容包(也見:nexusmods.com上的Content Patcher)。這不需要編程,僅編輯 JSON 文件就可以更改遊戲的 XNB 數據,也無需替換實際的遊戲文件。
  2. 製作一個 SMAPI 模組 並使用 內容 API。不過,這需要編程。
  3. 通過替換原始遊戲文件來創建 XNB 模組。不再建議使用,本頁面沒有講解; 訪問 使用 XNB 模組 獲取更多信息。

在哪裏可以得到幫助?

歡迎前往星露谷物語模組社區尋求幫助。

解包遊戲文件

你無法編輯 .xnb 文件其本身,你需要編輯其中的文件。

將文件從中取出叫做 解包

把文件放入其中叫做 打包

有兩個主要的 XNB 解包工具可用:

StardewXnbHack

StardewXnbHack 是用於解包 XNB 文件的開源且跨平台的工具。

它不能打包回 .xnb ,不過你也只在創建內容包時才需要打包回去。

如何操作:

  1. 安裝 SMAPI
  2. 下載 StardewXnbHack(確保你下載的文件適用於你的系統,例如在Windows平台需要下載: StardewXnbHack-*-for-windows.zip 而不是 source code!)
  3. 解壓縮並放進 你的遊戲文件夾, 也就是讓 StardewXnbHack.exe 文件位於與Stardew Valley executable icon.png StardewValley.exe相同的目錄下.
  4. 雙擊運行 StardewXnbHack.exe (Windows)、StardewXnbHack.sh (Linux)、 StardewXnbHack.command (MacOS) 來解包遊戲文件夾中 Content 文件夾下的所有 XNB 文件。

就是這樣!它將會把解包的內容放入遊戲文件夾下的 Content (unpacked) 文件夾。解包出的文件可用於創建 Content Patcher 的內容包。

xnbcli

xnbcli 是用於打包和解包 XNB 文件的開源且跨平台的工具。它無法解包帶有數據模型的 XNB 文件 (例如 Data\FishPondData 或者 Data\Movies),並且需要手動編輯數據文件才能與 Content Patcher 等模組一起使用。

如何操作:

  1. 下載 xnbcli。 (確保你下載的文件適用於你的系統,例如在Windows平台需要下載:xnbcli-windows-x64.zip 而不是 source code!)
  2. 解壓縮下載的文件:
    1. 找到你要解包的文件。
    2. 將它放進 xnbcli 的 packed 文件夾。
    3. 雙擊 unpack.bat (Windows)、unpack.sh (Linux)、unpack.command (Mac)。
    4. 檢查 Unpacked 文件夾,解包後的文件在該文件夾中 (如果你沒有一次性解包很多文件,它可能會在屏幕上閃爍並瞬間消失,這很正常!無論如何,請注意檢查 Unpacked 文件夾。注意 1.4 引入了 xnbcli 無法處理的新數據模型格式;對於某些數據文件,你需要使用 StardewXnbHack 才行。)
  3. 編輯解壓縮的文件(請參見下文)。
  4. 如果這是一個數據文件(而不是圖像或地圖),要替換或編輯該文件,則需要刪除 XNB 元數據。當前的 JSON 文件內容應如下所示:
    {
        "header": {
            "target": "w",
            "formatVersion": 5,
            "hidef": true,
            "compressed": true
        },
        "readers": [
            {
                "type": "Microsoft.Xna.Framework.Content.DictionaryReader`2[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]",
                "version": 0
            },
            {
                "type": "Microsoft.Xna.Framework.Content.Int32Reader",
                "version": 0
            },
            {
                "type": "Microsoft.Xna.Framework.Content.StringReader",
                "version": 0
            }
        ],
        "content": {
            "0": "Weeds/0/-1/Basic/Weeds/A bunch of obnoxious weeds."
        }
    }
    

    只需刪除 除了內容字段(content)以外的所有內容,就像這樣:

    {
        "0": "Weeds/0/-1/Basic/Weeds/A bunch of obnoxious weeds."
    }
    

故障排除:

  • 如果您在 Linux 或者 Mac 上遇到權限問題:
    1. 打開一個終端(在 MacOS 中,在 Spotlight 中搜索「終端」或者英文「Terminal」)
    2. 輸入 chmod +x , 並以一個空格結束輸入,現在不要按 Enter 鍵。
    3. 拖拽 unpack.sh (Linux) 或 unpack.command (Mac) 到終端窗口上以輸入文件路徑。
    4. 按 Enter 鍵。如果操作正確,終端將不會顯示任何消息,權限問題應該解決了。
    5. 重新嘗試運行 pack.sh (Linux) 或 pack.command (Mac).
  • 如果在 Windows 上遇到無法識別的命令,請執行以下操作:
    1. 確保你沒有誤下載 原始碼zip!

打包遊戲文件

你不需要打包遊戲文件,如果你正在使用 Content Patcher 的話。
使用 .json, .png, 或者 .tbin 文件連接到你的 content.json.

如果你確實想打包,則需要使用 xnbcli

  1. 找到你要重新打包的文件。
  2. 複製到 xnbcli 的 unpacked 文件夾。
  3. 雙擊 pack.bat (Windows)、pack.sh (Linux)、pack.command (Mac)。
  4. 移動打包後的 .xnb 文件至原來的位置。

進行修改

數據

每個 XNB 都有自己的格式。請參閱模組:目錄#高階主題中的文檔。

圖像

一個spritesheet的示例,它由像Modding - creating an XNB mod - example tile 1.png這樣的圖塊整齊排列而成

一些定義:

  • spritesheet 指的是包含小圖像的 PNG 文件(小圖像通常排列成規則的網格形式)。每一塊小圖像都稱為一個 sprite。例如,在Content\Maps\spring_objects.xnb中,每個遊戲內物品都有一個 sprite。
  • tilesheet 是 Spritesheet 的同義詞,用於地圖圖塊。在tilesheet中,每個方格稱為「圖塊(tile)」,大小為 16×16 像素。
  • portraitContent\Characters\*.xnb的spritesheets中的sprite。

Spritesheets 易於編輯:

  1. 解包你想要更改的文件。
  2. 用圖像編輯器(例如Windows平台上的 Paint.NET,或是適用於Windows/Linux/Mac平台的 GIMP)打開已解包的 .png文件。注意,使用支持透明通道(即ARGB 中的 A:alpha 通道)的圖像編輯器(例如 Photoshop)非常重要,因此不推薦使用Windows自帶的畫圖。
  3. 直接對圖像進行更改。
  4. 重新打包文件 然後複製到原位置。

就是這樣!然後你就可以打開遊戲以看看你做出的修改了!