第1行: |
第1行: |
− | ←[[ 使用 模组:目录|目录]] | + | ←[[模组:目录|目录]] |
| | | |
| 本页描述了如何编辑游戏文件以更改游戏中的数据、图像和地图。 | | 本页描述了如何编辑游戏文件以更改游戏中的数据、图像和地图。 |
第5行: |
第5行: |
| ==介绍== | | ==介绍== |
| ===什么是 XNB 文件?=== | | ===什么是 XNB 文件?=== |
− | 游戏将数据、地图和纹理 存储在 <tt>.xnb</tt> 这种压缩数据文件中,它们在游戏的 <tt>Content</tt> 文件夹中。 <br> | + | 游戏将数据、地图和纹理存储在 <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]]
| |
| | | |
− | (如果你使用 xnbcli 来解包,你通常会得到 <tt>Abigail.json</tt> 文件。 那只是用来打包回 <tt>.xnb</tt> 所需的文件,通常不需要更改它。) | + | 例如,对话期间显示的阿比盖尔的头像来自这个文件: <samp>Content\Portraits\Abigail.xnb</samp>。解包这个文件,你会得到 <samp>Abigail.png</samp> 这个图片文件,内容如下:<br />[[File:Modding - creating an XNB mod - example portraits.png]] |
| + | |
| + | (如果你使用 xnbcli 来解包,你通常会得到 <samp>Abigail.json</samp> 文件。 那只是用来打包回 <samp>.xnb</samp> 所需的文件,通常不需要更改它。) |
| | | |
| ===如何将更改应用到游戏中?=== | | ===如何将更改应用到游戏中?=== |
| 有3个方法可以使你的修改应用到游戏中: | | 有3个方法可以使你的修改应用到游戏中: |
| | | |
− | # 创建一 个 [https://www.nexusmods.com/stardewvalley/mods/1915 Content Patcher] 内容包 。这不需要编程,仅编辑 JSON 文件就可以更改游戏的 XNB 数据,也无需替换实际的游戏文件。 | + | # [[模组:Content Patcher| 创建一 个Content Patcher内容包]](也见:{{nexus mod|1915|nexusmods.com 上的Content Patcher}}) 。这不需要编程,仅编辑 JSON 文件就可以更改游戏的 XNB 数据,也无需替换实际的游戏文件。 |
− | # [[ 模组: 创建模组/ 创建 SMAPI 模组|制作一个 SMAPI 模组]] 并使用 [[ 模组: 创建模组/APIs/Content|内容 API]]。不过,这需要编程。 | + | # [[:en:Modding:Modder Guide/Get Started|制作一个 SMAPI 模组]] 并使用 [[:en:Modding:Modder_Guide/APIs/Content|内容 API]]。不过,这需要编程。 |
| # 通过替换原始游戏文件来创建 XNB 模组。不再建议使用,本页面没有讲解; 访问 [[模组:使用 XNB 模组|使用 XNB 模组]] 获取更多信息。 | | # 通过替换原始游戏文件来创建 XNB 模组。不再建议使用,本页面没有讲解; 访问 [[模组:使用 XNB 模组|使用 XNB 模组]] 获取更多信息。 |
| | | |
| ===在哪里可以得到帮助?=== | | ===在哪里可以得到帮助?=== |
− | 欢迎 访问 星露谷 模组社区。Feel free to [[ 模组:Community|ask the community]] for help. | + | 欢迎 前往 星露谷 物语[[:en:Modding:Community| 模组社区]] 寻求帮助。 |
| | | |
| ==<span id="unpacking">解包游戏文件</span>== | | ==<span id="unpacking">解包游戏文件</span>== |
− | 你无法编辑 <tt>.xnb</tt> 文件其本身,你需要编辑其中的文件 | + | 你无法编辑 <samp>.xnb</samp> 文件其本身,你需要编辑其中的文件 。 |
− | <br>
| + | |
− | 将文件从中取出叫做 '''解包''' | + | 将文件从中取出叫做 '''解包''' ; |
− | <br>
| + | |
− | 把文件放入其中叫做 '''打包''' | + | 把文件放入其中叫做 '''打包''' 。 |
− | <br>
| + | |
| 有两个主要的 XNB 解包工具可用: | | 有两个主要的 XNB 解包工具可用: |
| | | |
| ===StardewXnbHack=== | | ===StardewXnbHack=== |
− | {{github|Pathoschild/StardewXnbHack#readme|StardewXnbHack}} 是用于解包 XNB 文件的开源且跨平台的工具<br> | + | {{github|Pathoschild/StardewXnbHack#readme|StardewXnbHack}} 是用于解包 XNB 文件的开源且跨平台的工具 。 |
− | 它不能打包回 <tt>.xnb</tt> 不过你 会需要 [[模组: 创建模组/Content Patcher|创建内容包]] | + | |
| + | 它不能打包回 <samp>.xnb</samp> , 不过你 也只在[[模组:Content Patcher|创建内容包]] 时才需要打包回去。 |
| | | |
| 如何操作: | | 如何操作: |
| | | |
− | # [[Modding:Player Guide/Getting Started|安装 SMAPI]] | + | # [[ 模组: 使用指南/ 入门#安装SMAPI|安装 SMAPI]] |
− | # {{github|Pathoschild/StardewXnbHack/releases|下载 StardewXnbHack}}(确保你下载的文件适 合 你的系统,例如 文件名 : 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> 相同的目录下. | + | # 解压缩并放进 [[ 模组: 使用指南/入门#找到你的游戏文件夹|你的游戏文件夹]], 也就是 让 <samp>StardewXnbHack.exe</samp> 文件位于与{{executable name|StardewValley}} 相同的目录下. |
− | # 双击运行 <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> 文件夹。解包出的文件可用于创建 [[ 模组: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}}. (确保你下载的文件适 合 你的系统,例如 文件名 :<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> |
| <li>如果这是一个数据文件(而不是图像或地图),要替换或编辑该文件,则需要删除 XNB 元数据。当前的 JSON 文件内容应如下所示: | | <li>如果这是一个数据文件(而不是图像或地图),要替换或编辑该文件,则需要删除 XNB 元数据。当前的 JSON 文件内容应如下所示: |
| <syntaxhighlight lang="js"> | | <syntaxhighlight lang="js"> |
第96行: |
第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! |
| | | |
| ==打包游戏文件== | | ==打包游戏文件== |
− | 你不需要打包游戏文件,如果你正在使用 [[模组: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 的 <samp>unpacked</samp> 文件夹。 |
| + | # 双击 <samp>pack.bat</samp> (Windows)、<samp>pack.sh</samp> (Linux)、<samp>pack.command</samp> (Mac)。 |
| + | # 移动打包后的 <samp>.xnb</samp> 文件至原来的位置。 |
| + | |
| + | ==进行修改== |
| + | ===数据=== |
| + | 每个 XNB 都有自己的格式。请参阅[[模组:目录#高阶主题]]中的文档。 |
| + | |
| + | ===图像=== |
| + | [[File:Modding - creating an XNB mod - example tilesheet.png|thumb|一个spritesheet的示例,它由像[[File:Modding - creating an XNB mod - example tile 1.png]]这样的图块整齐排列而成]] |
| + | 一些定义: |
| + | * '''spritesheet''' 指的是包含小图像的 PNG 文件(小图像通常排列成规则的网格形式)。每一块小图像都称为一个 '''sprite'''。例如,在<samp>Content\Maps\spring_objects.xnb</samp>中,每个游戏内物品都有一个 sprite。 |
| + | * '''tilesheet''' 是 Spritesheet 的同义词,用于地图图块。在tilesheet中,每个方格称为“图块(tile)”,大小为 16×16 像素。 |
| + | * '''portrait''' 是<samp>Content\Characters\*.xnb</samp> 的spritesheets中的sprite。 |
| + | |
| + | Spritesheets 易于编辑: |
| + | # [[#解包游戏文件|解包]]你想要更改的文件。 |
| + | # 用图像编辑器(例如Windows平台上的 [http://www.getpaint.net/download.html Paint.NET],或是适用于Windows/Linux/Mac平台的 [https://www.gimp.org/downloads/ GIMP])打开已解包的 <samp>.png</samp>文件。注意,使用支持透明通道(即ARGB 中的 A:alpha 通道)的图像编辑器(例如 Photoshop)非常重要,因此不推荐使用Windows自带的画图。 |
| + | # 直接对图像进行更改。 |
| + | # [[#解包游戏文件|重新打包文件]] 然后复制到原位置。 |
| + | |
| + | 就是这样!然后你就可以打开游戏以看看你做出的修改了! |
| | | |
− | 如果你确实想打包,则需要使用 [[#xnbcli|xnbcli]]:
| + | [[Category:模组]] |
− | # 找到你要重新打包的文件
| |
− | # 复制到 xnbcli 的 <tt>unpacked</tt> 文件夹
| |
− | # 双击 <tt>pack.bat</tt> (Windows)、<tt>pack.sh</tt> (Linux)、<tt>pack.command</tt> (Mac)
| |
− | # 移动打包后的 <tt>.xnb</tt> 文件至原来的位置
| |
| | | |
− | ==应用更改==
| + | [[en:Modding:Editing XNB files]] |
− | ===数据 Data===
| + | [[ru:Модификации:Редактирование XNB файлов]] |