更改

添加1,929字节 、 2023年7月21日 (五) 18:13
第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&nbsp;</code>, 并以一个空格结束输入,现在不要按 Enter 键。
 
*# 输入 <code>chmod +x&nbsp;</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 файлов]]
1,399

个编辑