「模组:Content Patcher」修訂間的差異
1059 Studio(對話 | 貢獻) (建立内容为“← {{模组:目录|目录}} {{翻译}} 想为游戏创建内容包模组吗?教程就在这里。'''有关如何使用模组,请参阅 模组:使用指…”的新页面) |
Margotbean(對話 | 貢獻) 小 (文本替换 - 替换“tt>”为“samp>”) |
||
(未顯示由 3 位使用者於中間所作的 17 次修訂) | |||
第1行: | 第1行: | ||
− | ← | + | ← [[ 模组:目录|目录]] |
− | |||
− | |||
想为游戏创建内容包模组吗?教程就在这里。'''有关如何使用模组,请参阅 [[模组:使用指南/入门]] | 想为游戏创建内容包模组吗?教程就在这里。'''有关如何使用模组,请参阅 [[模组:使用指南/入门]] | ||
第15行: | 第13行: | ||
* 制作季节性的变化 | * 制作季节性的变化 | ||
* 根据天气、日期、与其他 NPC 的关系等进行更改 | * 根据天气、日期、与其他 NPC 的关系等进行更改 | ||
− | * 进行非常具体的更改(例如,在完 | + | * 进行非常具体的更改(例如,在完 成Joja 超市献祭之后,在下雪的冬天的周末,咖啡价格会更高) |
* 以及更多 | * 以及更多 | ||
===资源 Assets=== | ===资源 Assets=== | ||
− | 一个 '''asset''' 本质上是游戏中的 < | + | 一个 '''asset''' 本质上是游戏中的 <samp>Content</samp> 文件夹,具有唯一的“资源名称”。 资产名称从不包含 <samp>Content</samp>路径、语言或文件扩展名(可以使用令牌来定位特定的语言)。例如: |
− | {| class="wikitable" | + | {|class="wikitable" |
|- | |- | ||
! 文件 | ! 文件 | ||
! 资源名称 | ! 资源名称 | ||
|- | |- | ||
− | | < | + | | <samp>Content/Portraits/Abigail.xnb</samp> |
− | | < | + | | <samp>Portraits/Abigail</samp> |
|- | |- | ||
− | | < | + | | <samp>Content/Maps/spring_beach.xnb</samp><br /><samp>Content/Maps/spring_beach.es-ES.xnb</samp><br /><samp>Content/Maps/spring_beach.fr-FR.xnb</samp> |
− | | < | + | | <samp>Maps/spring_beach</samp> |
|} | |} | ||
− | 一个资源可能包含多个子画面或数据条目。例如:< | + | 一个资源可能包含多个子画面或数据条目。例如:<samp>Portraits/Abigail</samp>: |
[[File:Modding - creating an XNB mod - example portraits.png]] | [[File:Modding - creating an XNB mod - example portraits.png]] | ||
− | 因此,如果想更改阿比盖尔的肖像,则可以使用 Content Patcher 加载或编辑 < | + | 因此,如果想更改阿比盖尔的肖像,则可以使用 Content Patcher 加载或编辑 <samp>Portraits/Abigail</samp>. |
===Load 和 Edit=== | ===Load 和 Edit=== | ||
可以通过两种概念上的方式来更改资源: | 可以通过两种概念上的方式来更改资源: | ||
− | * ''Load'' | + | * ''Load|加载'' Asset的初始版本。 每个Asset只能同时被一个模组加载。 这主要用于完全替换模组(例如完全改变 NPC 肖像的模组),或提供 <samp>Content</samp> 文件夹中不存在的文件。 |
− | * ''Edit'' | + | * ''Edit|编辑'' 加载后的Asset。 可以对同一资产应用任意数量的编辑。 |
− | + | 例如,假设游戏需要阿比盖尔的肖像。 这是应用更改的方式: | |
<pre> | <pre> | ||
┌────────────┐ | ┌────────────┐ | ||
− | │ | + | │ 编辑Asset │ |
┌────────────┐ ├────────────┤ | ┌────────────┐ ├────────────┤ | ||
− | + | 获得肖像/ 阿比盖尔 ──>│ 载入Aeest │───>│ 编辑Asset │──> 肖像Aeest | |
└────────────┘ ├────────────┤ | └────────────┘ ├────────────┤ | ||
− | │ | + | │ 编辑Asset │ |
└────────────┘ | └────────────┘ | ||
</pre> | </pre> | ||
− | + | 这分为四种主要操作类型(<samp>Load</samp> 、<samp>EditData</samp> 、<samp>EditImage</samp> 、<samp>EditMap</samp> ),在 内容修补程序自述文件中的更多详细信息(见下文)。 | |
− | == | + | == 开始== |
− | === | + | === 了解Json=== |
− | + | 在为 Stardew Valley 创建 mod 时,您会注意到很多文件的名称末尾带有 <samp>.json</samp> 。 这意味着它们被格式化为 JSON ,这只是一种编写代码可读的文本的方式。 如果您以前没有使用过 JSON ,请阅读 ''[https://towardsdatascience.com/an-introduction-to-json-c9acb464f43e An Introduction to JSON]'' 会助于了解文件在做什么。 | |
− | === | + | === 创建示例模块=== |
− | + | 首先让我们安装并运行我们的基本内容: | |
<ol> | <ol> | ||
− | <li> | + | <li> 安装 [https://smapi.io/ SMAPI] 和 {{nexus mod|1915|Content Patcher}}.</li> |
− | <li> | + | <li> 解压游戏的<samp>Content</samp> 文件夹,这样您就可以看到每个资产包含的内容。</li> |
− | <li> | + | <li> 修改或创建SMAPI内容包。</li> |
− | <li> | + | <li> 使用以下内容在同一文件夹中创建一个 <samp>content.json</samp> 文件: |
{{#tag:syntaxhighlight| | {{#tag:syntaxhighlight| | ||
{ | { | ||
第76行: | 第74行: | ||
}|lang=javascript}} | }|lang=javascript}} | ||
</li> | </li> | ||
− | <li> | + | <li> 启动游戏。</li> |
</ol> | </ol> | ||
− | + | 如果到目前为止你做的一切都正确,你应该在 SMAPI 控制台的“加载的 X 内容包”下看到新的 mod 。 (如果没有,请查看上述步骤或 [[Modding:Community| 寻求帮助]] 。) | |
− | === | + | === 内容格式=== |
− | + | 您在上面创建的 <samp>content.json</samp> 文件告诉 Content Patcher 要更改什么。 这有两个主要领域: | |
− | * < | + | * <samp>Format</samp> :格式版本。 您应该始终使用最新版本(当前为 1.19.0 )来启用最新功能并避免过时行为。 |
− | * < | + | * <samp>Changes</samp> :您要进行的更改。 每个条目称为“补丁”,并描述要执行的特定操作:替换此文件、将此图像复制到文件中等。您可以列出任意数量的补丁。 |
− | + | 您可以在 <samp>Changes</samp> 字段中列出任意数量的补丁,每个补丁都由 <code>{</code> 和 <code>}</code> 包围。 有关更多信息,请参阅下一节,但这里有一个快速示例: | |
{{#tag:syntaxhighlight| | {{#tag:syntaxhighlight| | ||
{ | { | ||
第106行: | 第104行: | ||
}|lang=javascript}} | }|lang=javascript}} | ||
− | + | (还有其他字段,如 <samp>ConfigSchema</samp> 和 <samp>DynamicTokens</samp> 用于更高级的用法;这些都包含在完整的自述文件中。) | |
− | == | + | == 下一步== |
− | + | 您已经创建了一个内容补丁包! <!-- 接下来我们将让它做一些事情。 本教程将引导您创建无处不在的蓝莓,这是一个将各种东西变成蓝莓的 mod 。 | |
− | + | 当您准备好继续时,请查看页面底部的导航以继续。--> | |
− | + | 如需帮助使其做某事,请参阅... | |
− | * [https://github.com/Pathoschild/StardewMods/tree/develop/ContentPatcher#readme Content Patcher readme] | + | * [https://github.com/Pathoschild/StardewMods/tree/develop/ContentPatcher#readme Content Patcher readme] 供完整参考; |
− | * [https://www.youtube.com/watch?v=uqRTgjWvDYs video intro to Content Patcher] ( | + | * [https://www.youtube.com/watch?v=uqRTgjWvDYs video intro to Content Patcher] ( 非官方); |
− | * [https://docs.google.com/presentation/d/1OBIJSNOwEA2sdBzNbUiVUQni-ajABGFmL-FUanhuLvk intro to converting XNB mods] ( | + | * [https://docs.google.com/presentation/d/1OBIJSNOwEA2sdBzNbUiVUQni-ajABGFmL-FUanhuLvk intro to converting XNB mods] ( 非官方). |
− | == | + | == 例子== |
− | + | (很快就会在这里提供指导教程。) | |
− | === | + | === 改变马/ 宠物图标=== |
− | + | 对于替换马和/ 或宠物(猫和狗)外观的编辑,您可以将这些添加到您的 content.json 中,以便也替换库存菜单中的头像图标: | |
− | + | 马: | |
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
//horse head in inventory | //horse head in inventory | ||
第136行: | 第134行: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | 狗: | |
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
//dog head in inventory | //dog head in inventory | ||
第148行: | 第146行: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | 猫: | |
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
//cat head in inventory | //cat head in inventory | ||
第166行: | 第164行: | ||
}} | }} | ||
--> | --> | ||
+ | |||
+ | [[Category:模组]] | ||
[[en:Modding:Content Patcher]] | [[en:Modding:Content Patcher]] |
於 2021年11月4日 (四) 18:57 的最新修訂
← 目錄
想為遊戲創建內容包模組嗎?教程就在這裏。有關如何使用模組,請參閱 模組:使用指南/入門
快速開始
此頁面是對創建 Content Patcher 的內容包的簡要介紹。如果你不需要介紹,請參閱 完整的技術資料
基本概念
什麼是 Content Patcher ?
Content Patcher是一種 SMAPI 模組,可更改遊戲資源(圖像、對話、數據和地圖),而無需替換遊戲文件或編寫代碼。可以通過創建包含幾個 JSON 文件(基本上是文本)的內容包(基本上是文件夾)來使用它。只需編輯 JSON 文件就可以:
- 替換一個圖像文件
- 製作季節性的變化
- 根據天氣、日期、與其他 NPC 的關係等進行更改
- 進行非常具體的更改(例如,在完成Joja超市獻祭之後,在下雪的冬天的周末,咖啡價格會更高)
- 以及更多
資源 Assets
一個 asset 本質上是遊戲中的 Content 文件夾,具有唯一的「資源名稱」。 資產名稱從不包含 Content路徑、語言或文件擴展名(可以使用令牌來定位特定的語言)。例如:
文件 | 資源名稱 |
---|---|
Content/Portraits/Abigail.xnb | Portraits/Abigail |
Content/Maps/spring_beach.xnb Content/Maps/spring_beach.es-ES.xnb Content/Maps/spring_beach.fr-FR.xnb |
Maps/spring_beach |
一個資源可能包含多個子畫面或數據條目。例如:Portraits/Abigail:
因此,如果想更改阿比蓋爾的肖像,則可以使用 Content Patcher 加載或編輯 Portraits/Abigail.
Load 和 Edit
可以通過兩種概念上的方式來更改資源:
- Load|加載 Asset的初始版本。 每個Asset只能同時被一個模組加載。 這主要用於完全替換模組(例如完全改變 NPC 肖像的模組),或提供 Content 文件夾中不存在的文件。
- Edit|編輯 加載後的Asset。 可以對同一資產應用任意數量的編輯。
例如,假設遊戲需要阿比蓋爾的肖像。 這是應用更改的方式:
┌────────────┐ │ 编辑Asset │ ┌────────────┐ ├────────────┤ 获得肖像/阿比盖尔 ──>│ 载入Aeest │───>│编辑Asset │──> 肖像Aeest └────────────┘ ├────────────┤ │ 编辑Asset │ └────────────┘
這分為四種主要操作類型(Load、EditData、EditImage、EditMap),在 內容修補程序自述文件中的更多詳細信息(見下文)。
開始
了解Json
在為 Stardew Valley 創建 mod 時,您會注意到很多文件的名稱末尾帶有 .json。 這意味着它們被格式化為 JSON,這只是一種編寫代碼可讀的文本的方式。 如果您以前沒有使用過 JSON,請閱讀 An Introduction to JSON 會助於了解文件在做什麼。
創建示例模塊
首先讓我們安裝並運行我們的基本內容:
- 安裝 SMAPI 和 Content Patcher.
- 解壓遊戲的Content文件夾,這樣您就可以看到每個資產包含的內容。
- 修改或創建SMAPI內容包。
- 使用以下內容在同一文件夾中創建一個 content.json 文件:
{ "Format": "2.0.0", "Changes": [ ] }
- 啟動遊戲。
如果到目前為止你做的一切都正確,你應該在 SMAPI 控制台的「加載的 X 內容包」下看到新的 mod。 (如果沒有,請查看上述步驟或 尋求幫助。)
內容格式
您在上面創建的 content.json 文件告訴 Content Patcher 要更改什麼。 這有兩個主要領域:
- Format:格式版本。 您應該始終使用最新版本(當前為 1.19.0)來啟用最新功能並避免過時行為。
- Changes:您要進行的更改。 每個條目稱為「補丁」,並描述要執行的特定操作:替換此文件、將此圖像複製到文件中等。您可以列出任意數量的補丁。
您可以在 Changes 字段中列出任意數量的補丁,每個補丁都由 {
和 }
包圍。 有關更多信息,請參閱下一節,但這裏有一個快速示例:
{
"Format": "2.0.0",
"Changes": [
{
"Action": "Load",
"Target": "Animals/Dinosaur",
"FromFile": "assets/dinosaur.png"
},
{
"Action": "EditImage",
"Target": "Maps/springobjects",
"FromFile": "assets/fish-object.png"
},
]
}
(還有其他字段,如 ConfigSchema 和 DynamicTokens 用於更高級的用法;這些都包含在完整的自述文件中。)
下一步
您已經創建了一個內容補丁包!
如需幫助使其做某事,請參閱...
- Content Patcher readme供完整參考;
- video intro to Content Patcher (非官方);
- intro to converting XNB mods (非官方).
例子
(很快就會在這裏提供指導教程。)
改變馬/寵物圖標
對於替換馬和/或寵物(貓和狗)外觀的編輯,您可以將這些添加到您的 content.json 中,以便也替換庫存菜單中的頭像圖標:
馬:
//horse head in inventory
{
"Action": "EditImage",
"Target": "LooseSprites/Cursors",
"FromFile": "yourfile.png",
"FromArea": { insert values here },
"ToArea": { "X": 192, "Y": 192, "Width": 16, "Height": 16 }
}
狗:
//dog head in inventory
"ToArea": { "X": 208, "Y": 208, "Width": 16, "Height": 16 }, //Dog 1
"ToArea": { "X": 224, "Y": 208, "Width": 16, "Height": 16 }, //Dog 2
"ToArea": { "X": 240, "Y": 208, "Width": 16, "Height": 16 }, //Dog 3
貓:
//cat head in inventory
"ToArea": { "X": 160, "Y": 208, "Width": 16, "Height": 16 }, //Cat 1
"ToArea": { "X": 176, "Y": 208, "Width": 16, "Height": 16 }, //Cat 2
"ToArea": { "X": 192, "Y": 208, "Width": 16, "Height": 16 }, //Cat 3