精灵详解

创作者: BleakCodex
已更新:2025-03-23 22:34:16
25KB

前置 MOD

使用 精灵详解 时将自动安装

关于此 MOD

更高分辨率的精灵图,额外像素空间充裕!这是一款模组资源,支持在游戏中使用64x128像素的精灵图,但在游戏中会以32x64像素渲染。这本质上让每个精灵图的分辨率翻倍,同时还能提供……
注意:这是一份 模组资源尽管其他内容包可能需要它,但单独使用时它本身并无效果。

精灵详解

v0.6.1
- 改进菜单和日历精灵的处理方式
V0.6.0
- 已更新至SDV 1.6版本



V0.3.0 版本新增内容:
多亏了Aimon111的请求,现在可以在任意位置自由绘制精灵了。 分辨率:

请参阅下方的 Pixel 替换部分以了解使用方法。


安装
将ZIP文件解压到您的设备中 星露谷物语/模组 目录


要求
SMAPI
内容修补器


什么是 精灵详解?

《精灵详解》是一款类似于ContentPatcher的SMAPI模组资源,它允许 视觉 将精灵替换为更高分辨率的版本。
多人游戏功能应可正常运行,但所有修改仅作用于客户端。若玩家间模组存在差异,修改内容将无法被其他玩家所见。

未修改的情况下,精灵图像被限制在16x32像素的矩形范围内。


通过这个模组,精灵图将被设定为64x128像素,但在绘制到《星露谷物语》中时,它们会被缩放至32x64像素,以适配原有的显示空间。


实际上,这赋予了绘制更高分辨率精灵的能力,并且提供了额外的高度和宽度来扩展原始精灵。
                                      

*阿比感觉有点迷糊*

此外,可以任意用任何图像替换另一张图像:





如何 精灵详解 工作?

《精灵细节》遵循了与HDSprites、SpriteMaster等其他高兼容性精灵修改库类似的渲染导向方法。

SiD纹理已加载,但在实际绘制操作之前不会与Stardew的逻辑交互。在绘制过程中,SiD将根据所需规格绘制纹理。


这种方法的优势在于,尺寸、边界或其他逻辑均不受SiD纹理的影响。这确保了与事件系统、路径规划及边界计算保持高度兼容性。

最大的缺点是NPC的碰撞箱完全保持不变。
如果你制作了一个特别宽的精灵,角色仍然能够像以前一样精确地接近。

格斯觉得你可能靠得太近了。




如何使用 详细解析精灵? 
对于Mod作者来说,使用方法与其他SMAPI内容包类似:
1.) 创建你的高分辨率精灵表
       以下是在Aseprite中的操作方法:
1. 将精灵图的大小增加到400%。
2. 将精灵尺寸调整为32x64
它们应该居中放置 位于精灵区域底部
* 一个技巧是,如果在调整高度时按住SHIFT键,它将保持比例和位置不变。



2.) 创建一个content.json文件
添加SiD精灵的基本格式:
{
"精灵": [
{
"目标": "必需 {目标资产,这将是基础游戏资产的目录/名称,或其他模组资产所选定的名称}"
"FromFile": "必填 {替换资源的位置}"
"呼吸类型": "{男性|女性|无 - 用于确定哪些像素将用于'呼吸'效果}"
“时间”:{
可选 - ContentPatcher 条件令牌对象
}
},
……
]
}



3.) 确定是否要处理呼吸纹理
    《星露谷物语》将为所有"呼吸者"NPC绘制第二层纹理。
SiD提供三种基本选项:
1.) 男性角色 - 将采用与《星露谷物语》原版成年男性NPC相同的精灵图坐标与尺寸(即:以(24, 98)为左上角起点的16x16像素矩形区域)。
2.) 女性角色 - 将沿用原版《星露谷物语》中成年女性NPC的精灵图坐标与尺寸规范(例如以坐标(24, 100)作为16x8矩形区域的左上角定位点)。
3.) 无 - 将完全禁用呼吸纹理效果


或者,您也可以手动指定此纹理的边界,这在您已增加精灵的高度或宽度时尤为有用。
  • ChestSourceX - 呼吸纹理X坐标相对于精灵左上角的位置(未经修改的男性SiD精灵为24)
  • ChestSourceY - 相对于精灵左上角的呼吸纹理Y轴位置(未修改的男性SiD精灵为98)
  • ChestSourceWidth - 要使用的矩形宽度(未修改的男性SiD精灵为16)
  • ChestSourceHeight - 要使用的矩形高度(未经修改的男性SiD精灵为16)
  • 胸部调整X - 一个表示左右调整呼吸纹理像素数的值。数值越大,纹理越向右移动。
  • 胸部调整Y轴 - 一个表示呼吸纹理上下调整像素数的值。数值越大,纹理向下移动。

*ChestAdjustX和ChestAdjustY的数值较难精确确定。它们会影响 来源 呼吸纹理(其 中心点) 并且相对于胸部矩形的默认中心点 (31,106)。 
此外,Y值还需要乘以2。

例如,若您增加了精灵的高度,却又不想让它们从腹部呼吸:


您可以配置精灵:        {
            "目标": "角色/刘易斯"
            "FromFile": "assets/Lewis.png",
            "胸部来源X":24,
            "胸部来源Y轴坐标":89,
            胸部源宽度:16
            "ChestSourceHeight": 20,
            “胸部调整X轴”:0,
            “胸部调整Y轴”:-14
        }


这将使刘易斯的呼吸变得更加正常:


有两个最终配置选项:
  • 精灵原点X
  • 精灵原点Y坐标
这些是X、Y坐标,对应着精灵将被绘制的位置。
这一点实际上位于精灵的下四分之三处,靠近阴影顶部绘制的位置。
一般来说,默认值适用于16x32尺寸的精灵,但如果您想调整更小或更大的精灵,则需要修改这些数值。

例如,克洛布斯需要设置精灵原点X = 32,精灵原点Y = 82(由于他的精灵图像较矮,默认值112需调整)。

4.) 条件精灵
SiD支持 ContentPatcher的条件令牌/查询.
使用Sprite时,只需在其中指定一个When属性即可。
只有在雨天
“何时”:
  {
     “天气”: “雨”
  } 


此外,在config.json中指定的任何配置值也将在此区域中可访问。
配置文件
{
  "启用": "真",
  "GusSprite": "SiD"
}

内容.json
{
"精灵": [
{
"目标": "角色/格斯"
"来源文件": "assets/gus.png",
"呼吸类型": "男性",
"时间": {
"GusSprite":"SiD"
}
}
]
}

任何自定义的config.json值都会在Mod配置菜单中显示,如果 通用模组配置菜单 已安装。

如果你想在Content Patcher查询中使用配置令牌,你需要通过你的ContentPack的UniqueId来引用它。
如果我的内容包的uniqueId是'BleakCodex.CrazyMustacheGus':
“何时”:
    {
       查询:'{{天气}}' = '风暴' 且 {{BleakCodex.CrazyMustacheGus/在风暴期间启用}} = '真'
    }


5.) 创建manifest.json文件
跟随 SMAPI 清单格式
您将需要一个指向SiD的ContentPackFor条目。
"ContentPackFor": {
"唯一标识符": "BleakCodex.SpritesInDetail"
},

此外,如果您希望使用 内容修补器令牌/条件语句 (When属性),你 必须 添加一个指向版本1.22.0或更高版本的必需依赖项到ContentPatcher。
"依赖项": []
{
“UniqueID”: “Pathoschild.ContentPatcher”
“最低版本”: “1.22.0”
}
]


6.) 最后,将你的内容包复制到 Stardew Valley/Mods 文件夹中




像素替换
借助PixelReplacement功能,您可以使用自定义图像替换部分甚至整个精灵/精灵表。
{
   "精灵":{
      "目标": {必填 - 目标资产},
      "像素替换项": [
           {
              "FromFile": {必填 - 指向您希望用于绘制的PNG图片目录路径}
              "TargetX":{必填 - 要替换的精灵在精灵图上的X坐标}
              "TargetY": {必填 - 你想要替换的精灵在精灵图上的Y坐标位置}
           }
      ]
   }
}

例如:
这将用位于food/fried_egg.png的文件替换Maps/springobjects表格中(32, 128)位置的煎蛋图像。
{
    "精灵": [
        {
            "目标": "地图/春季物品",
            "像素替换项": [
                {
                    "来源文件": "food/fried_egg.png",
                    "目标X": 32,
                    “目标Y”:128
                }
        }
     ]
}

该图像将就地渲染,尺寸由《星露谷物语》游戏指定。
这意味着,如果您提供矩形图像而非正方形对象,图像将被压缩以适应所定义的方形区域。
此外,还有 未强制执行尺寸你可以自由选择提供任意分辨率的纹理。

关于性能的简要说明:
如果确实需要提升性能,我这里有一些可优化的方案。若您在实际使用中遇到任何性能下降的情况,请随时联系我。不过考虑到您的纹理尺寸并非特别庞大,目前采用的方法应该已经足够高效了。



示例
请参考“巨型疯狂胡须格斯以SiD模组为例


兼容性
虽然SiD应该具有高度兼容性,但我仅在Windows版《星露谷物语》上使用最新版本的SMAPI进行过测试。 
如果您发现此模组与其他版本兼容,请随时通知我。
Windows✅
Linux       ❔
安卓   ❔
苹果电脑❔
分屏 ❔


性能
由于需要渲染额外的像素,这些纹理在技术上确实会带来性能上的损耗。
不过,《星露谷物语》本身对GPU的负荷就很低,因此我认为性能提升空间应该相当大。
另一方面,XNA似乎对精灵图(spritesheet)的大小设定了上限,大约在2048x2048像素左右。
在当前分辨率下,这仍可容纳16行精灵帧,但对其他分辨率设定了上限。
通过添加SpriteReplacement逻辑,可以轻松突破尺寸限制,但这会以性能损耗为代价。
通常建议模组制作者考虑用户实际能够渲染的像素数量。



功能请求
如果需要,我可以添加额外的精灵分辨率。
如果您需要关于条件/令牌集成的额外功能,请通过此处或GitHub与我们联系。
否则,我打算尽可能保持精简,以便未来升级到任何版本的SMAPI时只需小幅调整,尽管它应该已经兼容SMAPI 4.0.0。


来源

使用 Xmod 解锁 星露谷物语 的全部潜力 — 今天就探索这些顶级 MOD!