Stardew Valley Modding คืออะไร และเริ่มต้นอย่างไร
ทำความรู้จักการสร้างมอด Stardew Valley ตั้งแต่ SMAPI, Content Patcher และมอด C# ว่าต่างกันอย่างไร ควรเริ่มจากตรงไหน และต้องเตรียมอะไรบ้าง
เขียนโดย Pokpong Limpaphan · อัปเดต
สถานะการตรวจสอบ: ตรวจกับเอกสารทางการแล้ว
เนื้อหาตรวจสอบกับเอกสารทางการแล้ว แต่ยังไม่ได้ทดสอบในเกมจริงทุกขั้นตอน (ตรวจล่าสุด )
ตรวจกับ: SMAPI 4.5.2 release notes, Content Patcher author guide (Format 2.9.0)
บทความเชิงแนวคิด ไม่มีขั้นตอนที่ต้องรันในเกม
สิ่งที่จะได้เรียนรู้
- เข้าใจว่ามอด Stardew Valley ทำงานอย่างไร
- แยกความต่างระหว่าง SMAPI, มอด C# และ content pack ได้
- เลือกเส้นทางการเรียนที่เหมาะกับพื้นฐานของตัวเอง
สิ่งที่ต้องมีก่อนเริ่ม
- มี Stardew Valley บน PC (Windows, macOS หรือ Linux)
- ไม่ต้องมีพื้นฐานเขียนโปรแกรม
สารบัญ
การสร้างมอด (modding) คือการเพิ่มหรือเปลี่ยนแปลงสิ่งที่อยู่ในเกมโดยไม่ต้องแก้ไฟล์ของเกมโดยตรง ใน Stardew Valley เราทำได้ตั้งแต่เปลี่ยนราคาของไอเท็ม แก้บทสนทนาของชาวเมือง ไปจนถึงเพิ่มระบบใหม่ทั้งระบบ
บทนี้อธิบายภาพรวมทั้งหมดก่อนลงมือ เพื่อให้รู้ว่าเครื่องมือแต่ละตัวมีหน้าที่อะไร และควรเริ่มจากจุดไหน
มอดทำงานอย่างไร
Stardew Valley ไม่ได้มีระบบโหลดมอดมาในตัวเกม ชุมชนจึงสร้าง SMAPI (Stardew Modding API) ขึ้นมา SMAPI เป็นโปรแกรมที่เปิดเกมขึ้นมาพร้อมกับโหลดมอดจากโฟลเดอร์ Mods และเปิดช่องทางให้มอดเข้าถึงเกมได้อย่างปลอดภัย
ลำดับการทำงานโดยย่อมีดังนี้
- ผู้เล่นเปิดเกมผ่าน SMAPI แทนการเปิดเกมตรง
- SMAPI อ่านไฟล์
manifest.jsonของทุกโฟลเดอร์ในMods - SMAPI ตรวจว่ามอดแต่ละตัวต้องใช้มอดอื่น (dependency) หรือ SMAPI เวอร์ชันไหน
- มอดที่ผ่านการตรวจจะถูกโหลด ส่วนมอดที่มีปัญหาจะถูกข้ามพร้อมบันทึกเหตุผลไว้ใน log
flowchart TD
A["เปิดเกมผ่าน SMAPI"] --> B["อ่าน manifest.json ของทุกโฟลเดอร์ใน Mods"]
B --> C{"manifest ถูกต้อง?"}
C -- ไม่ --> X["ข้ามมอด และบันทึกเหตุผลใน log"]
C -- ใช่ --> D{"dependency และเวอร์ชันครบ?"}
D -- ไม่ --> X
D -- ใช่ --> E["โหลดมอด"]
E --> F["มอดทำงานร่วมกับเกม"]
มอดมีกี่แบบ
มอดส่วนใหญ่แบ่งได้เป็นสองกลุ่มใหญ่
1. มอด C# (SMAPI mod)
เป็นโปรแกรมที่เขียนด้วยภาษา C# แล้วคอมไพล์ (build) ออกมาเป็นไฟล์ .dll มอดแบบนี้สั่งงานเกมได้เกือบทุกอย่าง เช่น ตอบสนองเมื่อผู้เล่นกดปุ่ม เพิ่มเมนูใหม่ หรือเปลี่ยนการทำงานของระบบในเกม
- ข้อดี: ทำได้แทบทุกอย่าง
- สิ่งที่ต้องเรียน: ภาษา C#, การใช้ IDE และ API ของ SMAPI
- ใน
manifest.jsonจะมี fieldEntryDllที่ชี้ไปยังไฟล์.dll
2. Content pack (เช่น Content Patcher)
content pack คือมอดที่ ไม่มีโค้ด แต่มีไฟล์ข้อมูล (JSON) และรูปภาพ ให้มอด framework อีกตัวอ่านแล้วนำไปใช้ framework ที่นิยมที่สุดคือ Content Patcher ซึ่งให้เราเขียนคำสั่งใน content.json เพื่อแก้ข้อมูล รูปภาพ หรือแผนที่ของเกม
- ข้อดี: ไม่ต้องเขียนโปรแกรม ไม่ต้องคอมไพล์ ทดสอบได้เร็ว
- ข้อจำกัด: ทำได้เฉพาะสิ่งที่ framework รองรับ
- ใน
manifest.jsonจะมี fieldContentPackForแทนEntryDll
| มอด C# | Content Patcher pack | |
|---|---|---|
| ต้องเขียนโค้ด | ใช่ (C#) | ไม่ต้อง (JSON) |
| ต้องคอมไพล์ | ใช่ | ไม่ต้อง |
| field สำคัญใน manifest | EntryDll |
ContentPackFor |
| เหมาะกับ | ระบบใหม่ ฟีเจอร์ที่มีตรรกะ | แก้ข้อมูล รูป บทสนทนา แผนที่ |
ควรเริ่มจากตรงไหน
ไม่มีคำตอบเดียวที่ถูกสำหรับทุกคน ลองเลือกตามพื้นฐานของตัวเอง
flowchart LR
S(["เริ่ม"]) --> Q{"เคยเขียนโปรแกรม?"}
Q -- ยังไม่เคย --> CP["Content Patcher"] --> CS["พื้นฐาน C#"] --> HW["SMAPI Hello World"]
Q -- เคย --> SET["ติดตั้งเครื่องมือ"] --> HW
HW --> DBG["Debug ด้วย SMAPI log"]
- ยังไม่เคยเขียนโปรแกรม: เริ่มจาก Content Patcher ก่อน จะได้เข้าใจโครงสร้างมอดและ JSON โดยยังไม่ต้องเรียนภาษาโปรแกรม จากนั้นค่อยต่อด้วย พื้นฐาน C#
- เคยเขียน C, Java หรือ C# มาบ้าง: ติดตั้งเครื่องมือ แล้วข้ามไปที่ SMAPI Hello World ได้เลย
- อยากรู้ว่ามอดที่ติดตั้งอยู่มีปัญหาอะไร: อ่าน วิธี debug ด้วย SMAPI log และใช้ Log Analyzer
ดูเส้นทางการเรียนทั้งหมดได้ที่ หน้าเรียนรู้
สิ่งที่ต้องเตรียม
- Stardew Valley บน PC ตัวเกมต้องเป็นเวอร์ชันที่ SMAPI รองรับ (SMAPI 4.5.2 ต้องการเกม 1.6.14 ขึ้นไป) ดูลิงก์ร้านค้าทางการได้ที่ หน้าแหล่งข้อมูล
- SMAPI ดาวน์โหลดจาก smapi.io เท่านั้น เพื่อหลีกเลี่ยงไฟล์ปลอม
- โปรแกรมแก้ไขข้อความ สำหรับ content pack ใช้ Visual Studio Code ก็เพียงพอ
- .NET SDK และ IDE จำเป็นเฉพาะมอด C# รายละเอียดอยู่ในบท ติดตั้งเครื่องมือบน PC
คำศัพท์ที่ควรรู้
| คำ | ความหมาย |
|---|---|
| SMAPI | ตัวโหลดมอดและ API หลักของ Stardew Valley |
| manifest.json | ไฟล์ข้อมูลประจำตัวมอด |
| UniqueID | รหัสไม่ซ้ำของมอด เช่น YourName.MyMod |
| dependency | มอดอื่นที่มอดของเราต้องใช้ |
| content pack | มอดที่มีแต่ข้อมูล ให้ framework อ่าน |
| framework | มอดที่ให้มอดอื่นต่อยอด เช่น Content Patcher |
| build / compile | แปลงซอร์สโค้ด C# ให้เป็นไฟล์ .dll |
| log | ไฟล์บันทึกการทำงานของ SMAPI ใช้หาสาเหตุของปัญหา |
สรุป
SMAPI เป็นแกนกลางที่โหลดมอดทุกตัว มอดแบ่งเป็นมอด C# ที่ต้องคอมไพล์ และ content pack ที่เป็นไฟล์ข้อมูล ถ้าเพิ่งเริ่ม ให้ลอง Content Patcher ก่อน แล้วค่อยขยับไปเขียน C# เมื่อพร้อม
ถ้าอยากเห็นหน้าตาโปรเจกต์จริงก่อนเรียน ลองสร้างโปรเจกต์ตัวอย่างด้วย Mod Generator แล้วเปิดดูไฟล์ข้างในได้เลย
เอกสารอ้างอิง
- Modding:Index (Stardew Valley Wiki)(เอกสารทางการ)
- Modder Guide - Get Started(เอกสารทางการ)
- SMAPI(เอกสารทางการ)
- Content Patcher author guide(เอกสารทางการ)