如何制作星露谷物语 Mod:使用 Content Patcher 制作第一个对话包
在星露谷物语 PC 1.6 版本系列中,使用 SMAPI 和 Content Patcher 制作一个修改阿比盖尔(Abigail)初次见面对话的小补丁包。你可以在不需要 C# DLL 的情况下,通过两个 JSON 文件学习数据修改的原理。不要直接覆盖游戏的 XNB 文件,而是在新的测试存档中对比应用与解除的效果。
1. 准备 SMAPI 和 Content Patcher
确保原版游戏能够以默认状态正常运行,并备份你的存档和 Mods 文件夹。从作者网站安装适合当前游戏版本的 SMAPI,然后从官方来源获取 Content Patcher。请检查各个文件的支持版本和运行要求。使用 SMAPI 运行一次游戏,确认加载器和 Content Patcher 显示正常后关闭游戏。在首次测试时暂时关闭其他对话修改补丁包,以便于排查原因。

2. 创建补丁包文件夹
在游戏的 Mods 文件夹下创建一个名为 [CP] TroubleMakerHello 的文件夹。解压时请检查 manifest.json 的位置,确保同名文件夹不会嵌套两层。在 Windows 中请开启文件扩展名显示,注意不要将其保存为 .json.txt。
Stardew Valley/
Mods/
ContentPatcher/
[CP] TroubleMakerHello/
manifest.json
content.json3. 编写 manifest.json
UniqueID 请按照“制作商.补丁包名称”的格式指定,以避免与其他补丁包冲突。ContentPackFor 的 UniqueID 不是你创建的补丁包 ID,而是 Content Patcher 的 ID。以下内容是本示例的完整清单。请在文本编辑器中以 UTF-8 编码保存。
{
"Name": "TroubleMaker Hello Dialogue",
"Author": "TroubleMaker",
"Version": "1.0.0",
"Description": "An original introduction dialogue example.",
"UniqueID": "TroubleMaker.HelloDialogue",
"MinimumApiVersion": "4.0.0",
"ContentPackFor": {
"UniqueID": "Pathoschild.ContentPatcher"
}
}4. 使用 content.json 修改单个对话
EditData 用于修改现有数据的指定键。将你自己的对话放入 Characters/Dialogue/Abigail 的 Introduction 键中。补丁包格式 Format 2.0.0 是适用于游戏 1.6 系列的 Content Patcher 补丁包示例格式,SMAPI 和 Content Patcher 的实际所需版本请参考所安装工具的说明。本示例仅修改初次介绍的对话,而不修改普通的日常对话。
{
"Format": "2.0.0",
"Changes": [
{
"Action": "EditData",
"Target": "Characters/Dialogue/Abigail",
"Entries": {
"Introduction": "你好!原来你就是新来的农场主。以后经常在镇上见面吧!"
}
}
]
}
5. 在新存档中确认应用效果
- 使用 SMAPI 运行游戏,并在控制台中确认是否已读取 TroubleMaker Hello Dialogue。
- 创建一个新的测试农场,在尚未见过阿比盖尔的情况下与她进行第一次对话。
- 如果显示出你编写的介绍对话,则说明键名和路径已成功应用。如果你在旧存档中已经触发过介绍对话,相同的句子可能不会再次出现。
- 如果对话没有改变,请在 SMAPI 控制台中使用 patch summary 检查补丁包和补丁状态。
- 退出游戏后修改 content.json 并重新运行以进行对比。关于开发过程中如何在控制台中使用 patch reload,请查阅已安装的 Content Patcher 文档。
- 将制作的补丁包移出 Mods 文件夹,然后重新运行,在单独的测试农场中确认是否恢复为默认的介绍对话。
6. 解决 JSON 错误与冲突
漏掉逗号、引号错误以及键名拼写错误非常常见。JSON 不允许在最后一项后面使用多余的逗号。使用默认编辑器保存时,请确认它没有被转换为智能引号。如果有其他补丁包也在修改相同的 Abigail Introduction 键,实际结果可能会根据加载顺序而有所不同。在成功启用单个补丁包的基础上,再逐个添加现有配置并对比日志。当加载的数据因游戏语言而异时,请继续在原版文档中查阅各语言的条件和 i18n 功能。

7. 移除、版本管理与发布
此补丁包仅修改对话数据。你可以通过退出游戏并删除相应的补丁包文件夹来卸载它,这与移除地图或物品扩展 Mod 的风险有所不同。请将补丁包文件夹放在发布 ZIP 的最顶层,使其内部的两个 JSON 文件直接可见。请在 README 中说明需要 PC 1.6、SMAPI 以及 Content Patcher,并写明仅修改初次介绍对话以及测试条件。请确认对话和图片均为本人创作,切勿在未获得许可的情况下包含其他创作者的文本或立项肖像。
原版文档与确认标准
这是 TroubleMaker 运营团队在 2026 年 10 月 7 日核对作者及官方工具文档后编写的入门攻略。代码和图表是用于说明的自定义示例,并非本服务器对该游戏实际游玩效果的验证结果。请在发布前使用正文中明确的版本在单独的测试存档中进行验证。请从下方的原版链接中对照各工具的最新版本和依赖关系。
Gemini 自动翻译 · 保留原文与来源地区。
原文语言 · ko
스타듀밸리 모드 만드는 법: Content Patcher로 첫 대사 팩 만들기
Stardew Valley PC 1.6 계열에서 SMAPI와 Content Patcher를 사용해 Abigail의 첫 만남 대사를 바꾸는 작은 팩을 만듭니다. C# DLL 없이 JSON 두 파일로 데이터 변경 원리를 배울 수 있습니다. 게임 XNB 파일을 직접 덮어쓰지 않고, 새 테스트 세이브에서 적용·해제를 비교합니다.
[1. SMAPI와 Content Patcher 준비]
정품 게임이 기본 상태로 실행되는지 확인하고 세이브와 Mods 폴더를 백업합니다. 현재 게임에 맞는 SMAPI를 제작자 사이트에서 설치한 뒤 Content Patcher를 원본 제공처에서 받습니다. 각 파일의 지원 버전과 Requirements를 확인하세요. SMAPI로 게임을 한 번 실행해 로더와 Content Patcher가 정상 표시되는지 확인한 뒤 종료합니다. 다른 대사 수정 팩은 첫 테스트에서 잠시 꺼두면 원인 구분이 쉽습니다.
[image:conditions]
[2. 팩 폴더를 만들기]
게임의 Mods 바로 아래에 [CP] TroubleMakerHello 폴더를 만듭니다. 압축을 풀었을 때 같은 이름의 폴더가 두 번 겹치지 않도록 manifest.json의 위치를 확인합니다. Windows는 확장자 표시를 켜고 .json.txt로 저장되지 않도록 주의하세요.
```text
Stardew Valley/
Mods/
ContentPatcher/
[CP] TroubleMakerHello/
manifest.json
content.json
```
[3. manifest.json 작성하기]
UniqueID는 다른 팩과 충돌하지 않는 제작자.팩이름 형태로 지정합니다. ContentPackFor의 UniqueID는 내가 만든 팩 ID가 아니라 Content Patcher의 ID입니다. 아래 내용은 이번 예제의 전체 manifest입니다. 텍스트 편집기에서 UTF-8로 저장합니다.
```json
{
"Name": "TroubleMaker Hello Dialogue",
"Author": "TroubleMaker",
"Version": "1.0.0",
"Description": "An original introduction dialogue example.",
"UniqueID": "TroubleMaker.HelloDialogue",
"MinimumApiVersion": "4.0.0",
"ContentPackFor": {
"UniqueID": "Pathoschild.ContentPatcher"
}
}
```
[4. content.json으로 대사 하나 변경하기]
EditData는 기존 데이터의 지정 키를 수정합니다. Characters/Dialogue/Abigail의 Introduction 키에 자체 대사를 넣습니다. 팩 Format 2.0.0은 게임 1.6 계열용 Content Patcher 팩 예제의 형식이며 SMAPI와 Content Patcher 실제 요구 버전은 설치한 도구 안내에서 확인합니다. 이 예제는 일반 매일 대사가 아니라 첫 소개 대사만 바꿉니다.
```json
{
"Format": "2.0.0",
"Changes": [
{
"Action": "EditData",
"Target": "Characters/Dialogue/Abigail",
"Entries": {
"Introduction": "안녕! 네가 새로 온 농장 주인이구나. 마을에서 자주 만나자!"
}
}
]
}
```
[image:request]
[5. 적용 확인은 새 세이브에서]
1. SMAPI로 실행하고 콘솔에 TroubleMaker Hello Dialogue가 읽혔는지 확인합니다.
2. 새 테스트 농장을 만들고 Abigail을 아직 만나지 않은 상태에서 처음 대화합니다.
3. 작성한 소개 대사가 나오면 키와 경로가 정상 적용된 것입니다. 기존 세이브에서 이미 소개 대화를 했다면 같은 문장이 다시 나오지 않을 수 있습니다.
4. 대사가 안 바뀌면 SMAPI 콘솔에서 patch summary로 팩과 패치 상태를 확인합니다.
5. 게임을 종료한 뒤 content.json을 수정하고 재실행해 비교합니다. 개발 중 콘솔의 patch reload 사용법은 설치한 Content Patcher 문서를 확인합니다.
6. 제작 팩을 Mods 밖으로 옮긴 뒤 다시 실행해 기본 소개 대사로 돌아오는지 별도 테스트 농장에서 확인합니다.
[6. JSON 오류와 충돌 해결]
쉼표 누락, 따옴표 오류, 키 이름 오타가 흔합니다. JSON은 마지막 항목 뒤에 불필요한 쉼표를 쓰지 않습니다. 기본 편집기로 저장할 때 스마트 따옴표로 바뀌지 않았는지 확인하세요. 같은 Abigail Introduction 키를 바꾸는 다른 팩이 있으면 실제 로딩 순서에 따라 결과가 달라질 수 있습니다. 팩 하나만 켠 상태에서 성공한 뒤 기존 구성을 하나씩 추가하고 로그를 비교합니다. 게임 언어에 따라 불러오는 데이터가 달라질 때는 언어별 조건과 i18n 기능을 원본 문서에서 이어서 확인합니다.
[image:contact]
[7. 제거·버전 관리·배포]
이 팩은 대사 데이터만 수정합니다. 게임을 종료하고 해당 팩 폴더를 제거해 해제할 수 있으며 지도·아이템 확장 모드의 제거와는 위험이 다릅니다. 배포 ZIP 최상위에 팩 폴더를 두고 그 안에 두 JSON이 바로 보이게 만듭니다. README에 PC 1.6, SMAPI·Content Patcher 필요, 첫 소개 대사만 바뀐다는 설명과 테스트 조건을 적으세요. 대사와 이미지가 본인 작성물인지 확인하고 다른 제작자의 텍스트·초상화를 허락 없이 포함하지 않습니다.
[원본 문서와 확인 기준]
2026년 10월 7일 제작자·공식 도구 문서를 확인해 TroubleMaker 운영팀이 작성한 입문 공략입니다. 코드와 도식은 설명을 위한 자체 예제이며 이 서버에서 해당 게임의 실제 플레이를 검증한 결과는 아닙니다. 본문에 명시한 버전으로 별도 테스트 세이브에서 확인하고 배포하세요. 도구별 최신 버전·의존성은 아래 원본에서 대조합니다.
https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide.md
https://wiki.stardewvalley.net/Modding:Content_packs
https://wiki.stardewvalley.net/Modding:Content_Patcher
https://smapi.io/
评论 0