ผู้เริ่มต้น10 นาทีบทที่ 1

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 และเปิดช่องทางให้มอดเข้าถึงเกมได้อย่างปลอดภัย

ลำดับการทำงานโดยย่อมีดังนี้

  1. ผู้เล่นเปิดเกมผ่าน SMAPI แทนการเปิดเกมตรง
  2. SMAPI อ่านไฟล์ manifest.json ของทุกโฟลเดอร์ใน Mods
  3. SMAPI ตรวจว่ามอดแต่ละตัวต้องใช้มอดอื่น (dependency) หรือ SMAPI เวอร์ชันไหน
  4. มอดที่ผ่านการตรวจจะถูกโหลด ส่วนมอดที่มีปัญหาจะถูกข้ามพร้อมบันทึกเหตุผลไว้ใน 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 จะมี field EntryDll ที่ชี้ไปยังไฟล์ .dll

2. Content pack (เช่น Content Patcher)

content pack คือมอดที่ ไม่มีโค้ด แต่มีไฟล์ข้อมูล (JSON) และรูปภาพ ให้มอด framework อีกตัวอ่านแล้วนำไปใช้ framework ที่นิยมที่สุดคือ Content Patcher ซึ่งให้เราเขียนคำสั่งใน content.json เพื่อแก้ข้อมูล รูปภาพ หรือแผนที่ของเกม

  • ข้อดี: ไม่ต้องเขียนโปรแกรม ไม่ต้องคอมไพล์ ทดสอบได้เร็ว
  • ข้อจำกัด: ทำได้เฉพาะสิ่งที่ framework รองรับ
  • ใน manifest.json จะมี field ContentPackFor แทน 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"]

ดูเส้นทางการเรียนทั้งหมดได้ที่ หน้าเรียนรู้

สิ่งที่ต้องเตรียม

  1. Stardew Valley บน PC ตัวเกมต้องเป็นเวอร์ชันที่ SMAPI รองรับ (SMAPI 4.5.2 ต้องการเกม 1.6.14 ขึ้นไป) ดูลิงก์ร้านค้าทางการได้ที่ หน้าแหล่งข้อมูล
  2. SMAPI ดาวน์โหลดจาก smapi.io เท่านั้น เพื่อหลีกเลี่ยงไฟล์ปลอม
  3. โปรแกรมแก้ไขข้อความ สำหรับ content pack ใช้ Visual Studio Code ก็เพียงพอ
  4. .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 แล้วเปิดดูไฟล์ข้างในได้เลย

เอกสารอ้างอิง

ค้นหาใน SVMT

กรองตามประเภท

พิมพ์คำที่ต้องการค้นหา (ภาษาไทยหรืออังกฤษ)