第5行: |
第5行: |
| ==介绍== | | ==介绍== |
| ===什么是 XNB 文件?=== | | ===什么是 XNB 文件?=== |
− | 游戏将数据、地图和纹理存储在 <tt>.xnb</tt> 这种压缩数据文件中,它们在游戏的 <tt>Content</tt> 文件夹中。 | + | 游戏将数据、地图和纹理存储在 <samp>.xnb</samp> 这种压缩数据文件中,它们在游戏的 <samp>Content</samp> 文件夹中。 |
| | | |
− | 例如,对话期间显示的阿比盖尔的头像来自这个文件: <tt>Content\Portraits\Abigail.xnb</tt>。解包这个文件,你会得到 <tt>Abigail.png</tt> 这个图片文件,内容如下:<br />[[File:Modding - creating an XNB mod - example portraits.png]] | + | 例如,对话期间显示的阿比盖尔的头像来自这个文件: <samp>Content\Portraits\Abigail.xnb</samp>。解包这个文件,你会得到 <samp>Abigail.png</samp> 这个图片文件,内容如下:<br />[[File:Modding - creating an XNB mod - example portraits.png]] |
| | | |
− | (如果你使用 xnbcli 来解包,你通常会得到 <tt>Abigail.json</tt> 文件。 那只是用来打包回 <tt>.xnb</tt> 所需的文件,通常不需要更改它。) | + | (如果你使用 xnbcli 来解包,你通常会得到 <samp>Abigail.json</samp> 文件。 那只是用来打包回 <samp>.xnb</samp> 所需的文件,通常不需要更改它。) |
| | | |
| ===如何将更改应用到游戏中?=== | | ===如何将更改应用到游戏中?=== |
第22行: |
第22行: |
| | | |
| ==<span id="unpacking">解包游戏文件</span>== | | ==<span id="unpacking">解包游戏文件</span>== |
− | 你无法编辑 <tt>.xnb</tt> 文件其本身,你需要编辑其中的文件。 | + | 你无法编辑 <samp>.xnb</samp> 文件其本身,你需要编辑其中的文件。 |
| | | |
| 将文件从中取出叫做 '''解包'''; | | 将文件从中取出叫做 '''解包'''; |
第33行: |
第33行: |
| {{github|Pathoschild/StardewXnbHack#readme|StardewXnbHack}} 是用于解包 XNB 文件的开源且跨平台的工具。 | | {{github|Pathoschild/StardewXnbHack#readme|StardewXnbHack}} 是用于解包 XNB 文件的开源且跨平台的工具。 |
| | | |
− | 它不能打包回 <tt>.xnb</tt> ,只有在[[模组:创建模组/Content Patcher|创建内容包]]时才需要打包回去。 | + | 它不能打包回 <samp>.xnb</samp> ,只有在[[模组:创建模组/Content Patcher|创建内容包]]时才需要打包回去。 |
| | | |
| 如何操作: | | 如何操作: |
第39行: |
第39行: |
| # [[模组:使用指南/入门#安装SMAPI|安装 SMAPI]] | | # [[模组:使用指南/入门#安装SMAPI|安装 SMAPI]] |
| # {{github|Pathoschild/StardewXnbHack/releases|下载 StardewXnbHack}}(确保你下载的文件适用于你的系统,例如在Windows平台需要下载: StardewXnbHack-*-for-windows.zip 而不是 source code!) | | # {{github|Pathoschild/StardewXnbHack/releases|下载 StardewXnbHack}}(确保你下载的文件适用于你的系统,例如在Windows平台需要下载: StardewXnbHack-*-for-windows.zip 而不是 source code!) |
− | # 解压缩并放进 [[Modding:Game folder|你的游戏文件夹]], 也就是 <tt>StardewXnbHack.exe</tt> 文件位于与 <tt>StardewValley.exe</tt> 相同的目录下. | + | # 解压缩并放进 [[Modding:Game folder|你的游戏文件夹]], 也就是 <samp>StardewXnbHack.exe</samp> 文件位于与 <samp>StardewValley.exe</samp> 相同的目录下. |
− | # 双击运行 <tt>StardewXnbHack.exe</tt> (Windows)、<tt>StardewXnbHack.sh</tt> (Linux)、 <tt>StardewXnbHack.command</tt> (MacOS) 来解包游戏文件夹中 <tt>Content</tt> 文件夹下的所有 XNB 文件。 | + | # 双击运行 <samp>StardewXnbHack.exe</samp> (Windows)、<samp>StardewXnbHack.sh</samp> (Linux)、 <samp>StardewXnbHack.command</samp> (MacOS) 来解包游戏文件夹中 <samp>Content</samp> 文件夹下的所有 XNB 文件。 |
| | | |
− | 就是这样!它将会把解包的内容放入游戏文件夹下的 <tt>Content (unpacked)</tt> 文件夹。解包出的文件可用于创建 [[Modding:Content Patcher|Content Patcher]] 的内容包。 | + | 就是这样!它将会把解包的内容放入游戏文件夹下的 <samp>Content (unpacked)</samp> 文件夹。解包出的文件可用于创建 [[Modding:Content Patcher|Content Patcher]] 的内容包。 |
| | | |
| ===xnbcli=== | | ===xnbcli=== |
− | {{github|LeonBlade/xnbcli#readme|xnbcli}} 是用于打包和解包 XNB 文件的开源且跨平台的工具。它无法解包带有数据模型的 XNB 文件 (例如 <tt>Data\FishPondData</tt> 或者 <tt>Data\Movies</tt>),并且需要手动编辑数据文件才能与 Content Patcher 等模组一起使用。 | + | {{github|LeonBlade/xnbcli#readme|xnbcli}} 是用于打包和解包 XNB 文件的开源且跨平台的工具。它无法解包带有数据模型的 XNB 文件 (例如 <samp>Data\FishPondData</samp> 或者 <samp>Data\Movies</samp>),并且需要手动编辑数据文件才能与 Content Patcher 等模组一起使用。 |
| | | |
| 如何操作: | | 如何操作: |
| | | |
| <ol> | | <ol> |
− | <li>{{github|LeonBlade/xnbcli/releases|下载 xnbcli}}。 (确保你下载的文件适用于你的系统,例如在Windows平台需要下载:<tt>xnbcli-windows-x64.zip</tt> 而不是 source code!)</li> | + | <li>{{github|LeonBlade/xnbcli/releases|下载 xnbcli}}。 (确保你下载的文件适用于你的系统,例如在Windows平台需要下载:<samp>xnbcli-windows-x64.zip</samp> 而不是 source code!)</li> |
| <li>解压缩下载的文件: | | <li>解压缩下载的文件: |
| # 找到你要解包的文件。 | | # 找到你要解包的文件。 |
− | # 将它放进 xnbcli 的 <tt>packed</tt> 文件夹。 | + | # 将它放进 xnbcli 的 <samp>packed</samp> 文件夹。 |
− | # 双击 <tt>unpack.bat</tt> (Windows)、<tt>unpack.sh</tt> (Linux)、<tt>unpack.command</tt> (Mac)。 | + | # 双击 <samp>unpack.bat</samp> (Windows)、<samp>unpack.sh</samp> (Linux)、<samp>unpack.command</samp> (Mac)。 |
− | # 检查 <tt>Unpacked</tt> 文件夹,解包后的文件在该文件夹中 (如果你没有一次性解包很多文件,它可能会在屏幕上闪烁并瞬间消失,这很正常!无论如何,请注意检查 <tt>Unpacked</tt> 文件夹。注意 1.4 引入了 xnbcli 无法处理的新数据模型格式;对于某些数据文件,你需要使用 [[#StardewXnbHack|StardewXnbHack]] 才行。) | + | # 检查 <samp>Unpacked</samp> 文件夹,解包后的文件在该文件夹中 (如果你没有一次性解包很多文件,它可能会在屏幕上闪烁并瞬间消失,这很正常!无论如何,请注意检查 <samp>Unpacked</samp> 文件夹。注意 1.4 引入了 xnbcli 无法处理的新数据模型格式;对于某些数据文件,你需要使用 [[#StardewXnbHack|StardewXnbHack]] 才行。) |
| </li> | | </li> |
| <li>编辑解压缩的文件(请参见下文)。</li> | | <li>编辑解压缩的文件(请参见下文)。</li> |
第98行: |
第98行: |
| *# 打开一个终端(在 MacOS 中,在 Spotlight 中搜索“终端”或者英文“Terminal”) | | *# 打开一个终端(在 MacOS 中,在 Spotlight 中搜索“终端”或者英文“Terminal”) |
| *# 输入 <code>chmod +x </code>, 并以一个空格结束输入,现在不要按 Enter 键。 | | *# 输入 <code>chmod +x </code>, 并以一个空格结束输入,现在不要按 Enter 键。 |
− | *# 拖拽 <tt>unpack.sh</tt> (Linux) 或 <tt>unpack.command</tt> (Mac) 到终端窗口上以输入文件路径。 | + | *# 拖拽 <samp>unpack.sh</samp> (Linux) 或 <samp>unpack.command</samp> (Mac) 到终端窗口上以输入文件路径。 |
| *# 按 Enter 键。如果操作正确,终端将不会显示任何消息,权限问题应该解决了。 | | *# 按 Enter 键。如果操作正确,终端将不会显示任何消息,权限问题应该解决了。 |
− | *# 重新尝试运行 <tt>pack.sh</tt> (Linux) 或 <tt>pack.command</tt> (Mac). | + | *# 重新尝试运行 <samp>pack.sh</samp> (Linux) 或 <samp>pack.command</samp> (Mac). |
| * 如果在 Windows 上遇到无法识别的命令,请执行以下操作: | | * 如果在 Windows 上遇到无法识别的命令,请执行以下操作: |
| *# 确保你没有误下载 源代码zip! | | *# 确保你没有误下载 源代码zip! |
第106行: |
第106行: |
| ==打包游戏文件== | | ==打包游戏文件== |
| 你不需要打包游戏文件,如果你正在使用 [[模组:Content Patcher|Content Patcher]] 的话。<br /> | | 你不需要打包游戏文件,如果你正在使用 [[模组:Content Patcher|Content Patcher]] 的话。<br /> |
− | 使用 <tt>.json</tt>, <tt>.png</tt>, 或者 <tt>.tbin</tt> 文件连接到你的 <tt>content.json</tt>. | + | 使用 <samp>.json</samp>, <samp>.png</samp>, 或者 <samp>.tbin</samp> 文件连接到你的 <samp>content.json</samp>. |
| | | |
| 如果你确实想打包,则需要使用 [[#xnbcli|xnbcli]]: | | 如果你确实想打包,则需要使用 [[#xnbcli|xnbcli]]: |
| # 找到你要重新打包的文件。 | | # 找到你要重新打包的文件。 |
− | # 复制到 xnbcli 的 <tt>unpacked</tt> 文件夹。 | + | # 复制到 xnbcli 的 <samp>unpacked</samp> 文件夹。 |
− | # 双击 <tt>pack.bat</tt> (Windows)、<tt>pack.sh</tt> (Linux)、<tt>pack.command</tt> (Mac)。 | + | # 双击 <samp>pack.bat</samp> (Windows)、<samp>pack.sh</samp> (Linux)、<samp>pack.command</samp> (Mac)。 |
− | # 移动打包后的 <tt>.xnb</tt> 文件至原来的位置。 | + | # 移动打包后的 <samp>.xnb</samp> 文件至原来的位置。 |
| | | |
| ==进行修改== | | ==进行修改== |
第121行: |
第121行: |
| [[File:Modding - creating an XNB mod - example tilesheet.png|thumb|一个示例图集,它由如下所示的图块网格组成:[[File:Modding - creating an XNB mod - example tile 1.png]]]] | | [[File:Modding - creating an XNB mod - example tilesheet.png|thumb|一个示例图集,它由如下所示的图块网格组成:[[File:Modding - creating an XNB mod - example tile 1.png]]]] |
| 一些定义: | | 一些定义: |
− | * 一个 '''spritesheet''' 是一个 PNG 文件,其中包含小图像(通常以规则的网格图案显示)。每个网格的小图像都称为一个 '''sprite''' 例如,每个游戏内物品都有一个 sprite:<tt>Content\Maps\spring_objects.xnb</tt>。 | + | * 一个 '''spritesheet''' 是一个 PNG 文件,其中包含小图像(通常以规则的网格图案显示)。每个网格的小图像都称为一个 '''sprite''' 例如,每个游戏内物品都有一个 sprite:<samp>Content\Maps\spring_objects.xnb</samp>。 |
| * 一个 '''tilesheet''' 是 Spritesheet 的同义词,用于地图图块。在图集中,每个正方形称为“图块 tile”,大小为 16×16 像素。 | | * 一个 '''tilesheet''' 是 Spritesheet 的同义词,用于地图图块。在图集中,每个正方形称为“图块 tile”,大小为 16×16 像素。 |
− | * 一个 '''portrait''' is a sprite from the <tt>Content\Characters\*.xnb</tt> spritesheets。 | + | * 一个 '''portrait''' is a sprite from the <samp>Content\Characters\*.xnb</samp> spritesheets。 |
| | | |
| Spritesheets 易于编辑: | | Spritesheets 易于编辑: |
| # [[#解包游戏文件|解包]]你想要更改的文件。 | | # [[#解包游戏文件|解包]]你想要更改的文件。 |
− | # 打开已解包的 <tt>.png</tt> 使用一个图像编辑器 (例如Windows平台上的 [http://www.getpaint.net/download.html Paint.NET],或是适用于Windows/Linux/Mac平台的 [https://www.gimp.org/downloads/ GIMP])。注意,使用支持透明通道的图像编辑器非常重要(ARGB 中的 A:alpha 通道),例如 Photoshop,而不是 Windows 画图 | + | # 打开已解包的 <samp>.png</samp> 使用一个图像编辑器 (例如Windows平台上的 [http://www.getpaint.net/download.html Paint.NET],或是适用于Windows/Linux/Mac平台的 [https://www.gimp.org/downloads/ GIMP])。注意,使用支持透明通道的图像编辑器非常重要(ARGB 中的 A:alpha 通道),例如 Photoshop,而不是 Windows 画图 |
| # 直接对图像进行更改。 | | # 直接对图像进行更改。 |
| # [[#解包游戏文件|重新打包文件]] 然后复制到原位置。 | | # [[#解包游戏文件|重新打包文件]] 然后复制到原位置。 |