🍃
VPS

เซิร์ฟเวอร์ Minecraft แบบ Vanilla (server jar ทางการจาก Mojang) เหมาะกับการเล่นกับเพื่อนไม่กี่คน แต่เมื่อผู้เล่นเพิ่มขึ้นหรืออยากได้ระบบยศ บ้าน ป้องกันการก่อกวน หรือปรับแต่งอื่น ๆ ข้อจำกัดจะเริ่มปรากฏ ทั้งเรื่องประสิทธิภาพ (TPS ตก แลคเวลาโหลดชังก์) และการที่ Vanilla ไม่รองรับปลั๊กอินเลย บทความนี้จะอธิบายว่าทำไม Paper และ Spigot จึงเป็นทางเลือกยอดนิยม สายพันธุ์ (fork) ของซอฟต์แวร์เซิร์ฟเวอร์เป็นอย่างไร และวิธี migrate จาก Vanilla ไป Paper แบบทีละขั้นตอนพร้อมการปรับจูนให้ลื่นขึ้น

ทำไมต้องเลิกใช้ Vanilla

Vanilla server ทำงานได้ตามที่ Mojang ออกแบบไว้ แต่ไม่มีระบบปลั๊กอิน (Bukkit API) และไม่ได้ถูกออปติไมซ์สำหรับผู้เล่นจำนวนมาก เมื่อโลกใหญ่ขึ้น เอนทิตี (สัตว์ ไอเทม มอนสเตอร์) สะสมมากขึ้น การประมวลผลในแต่ละ tick จะหนักจน TPS (ticks per second ควรอยู่ที่ 20) ตกลง ทำให้เกิดอาการแลคทั้งเซิร์ฟเวอร์

สายพันธุ์ของซอฟต์แวร์เซิร์ฟเวอร์: จาก Vanilla ถึง Purpur

ซอฟต์แวร์เซิร์ฟเวอร์ Minecraft ฝั่งปลั๊กอินมี lineage ที่พัฒนาต่อยอดกันมาเป็นชั้น ๆ การเข้าใจภาพนี้ช่วยให้เลือกได้ถูก

  1. Vanilla — server jar ทางการจาก Mojang เป็นฐานของทุกอย่าง
  2. CraftBukkit — เพิ่ม Bukkit API ทำให้รองรับปลั๊กอินได้เป็นครั้งแรก
  3. Spigot — พัฒนาต่อจาก CraftBukkit ปรับแต่งประสิทธิภาพและเพิ่ม spigot.yml สำหรับตั้งค่าเอนทิตีและ view distance
  4. Paper — fork ของ Spigot ที่ออปติไมซ์หนักที่สุด รองรับปลั๊กอิน Bukkit/Spigot ได้ทั้งหมด เพิ่มการโหลดชังก์แบบ async และไฟล์ตั้งค่าละเอียด
  5. Purpur / Pufferfish — fork ต่อจาก Paper อีกที เพิ่มออปชันปรับแต่ง gameplay และประสิทธิภาพเพิ่มเติม (Pufferfish เน้นสาย performance, Purpur เน้นความยืดหยุ่น)

ปัจจุบัน Paper คือมาตรฐานโดยพฤตินัยของเซิร์ฟเวอร์ Minecraft ให้ TPS ดีกว่า Vanilla/Spigot อย่างชัดเจน รองรับปลั๊กอินเดิมทั้งหมด และมีไฟล์ตั้งค่า paper-global.yml กับ paper-world-defaults.yml ที่ปรับ anti-lag ได้ลึก แนะนำให้เริ่มที่ Paper ก่อนแล้วค่อยพิจารณา Purpur หากต้องการฟีเจอร์เพิ่ม

เปรียบเทียบ Vanilla / Spigot / Paper / Purpur

คุณสมบัติVanillaSpigotPaperPurpur
รองรับปลั๊กอิน (Bukkit)ไม่ใช่ใช่ใช่
ประสิทธิภาพ TPSพื้นฐานดีขึ้นดีมากดีมาก
โหลดชังก์แบบ asyncไม่ไม่ใช่ใช่
ไฟล์ตั้งค่า anti-lagไม่มีspigot.ymlpaper-global/world.yml+ purpur.yml
ปรับแต่ง gameplayต่ำต่ำปานกลางสูง
ความเข้ากันได้ของโลกเดิมสูงสูงสูง

สำรองข้อมูลก่อนเสมอ

ถึงแม้ Paper จะรักษาความเข้ากันได้ของโลกเดิม (world) ไว้ได้ดี แต่การเปลี่ยนซอฟต์แวร์เซิร์ฟเวอร์ควรสำรองข้อมูลก่อนทุกครั้ง สิ่งที่ต้องสำรอง

คำเตือน: ปิดเซิร์ฟเวอร์ให้สนิทก่อนสำรองข้อมูลเสมอ ห้ามคัดลอกโฟลเดอร์โลกขณะเซิร์ฟเวอร์กำลังรัน เพราะไฟล์ region อาจเขียนไม่เสร็จและทำให้โลกเสียหายได้

ขั้นตอนการ migrate จาก Vanilla เป็น Paper

  1. หยุดเซิร์ฟเวอร์ Vanilla ให้เรียบร้อยด้วยคำสั่ง stop ใน console
  2. สำรองโลกและไฟล์ตั้งค่าตามหัวข้อด้านบน
  3. ดาวน์โหลด Paper jar ให้ตรงเวอร์ชัน Minecraft ที่ใช้อยู่จากหน้า PaperMC downloads หรือผ่าน API
  4. วางไฟล์ jar ไว้ในโฟลเดอร์เซิร์ฟเวอร์ และแก้คำสั่งเริ่มรันให้ชี้ไปที่ชื่อไฟล์ใหม่
  5. รันครั้งแรกเพื่อให้ Paper สร้างไฟล์ตั้งค่า (paper-global.yml, paper-world-defaults.yml, bukkit.yml, spigot.yml)
  6. ตรวจสอบว่าผู้เล่นเข้าได้และโลกโหลดถูกต้อง แล้วจึงเริ่มติดตั้งปลั๊กอิน

ตัวอย่างการดาวน์โหลด Paper build ล่าสุดของเวอร์ชัน 1.21.4 ผ่าน API (ปรับเลข version/build ตามที่ต้องการ)

# ดึงข้อมูล build ล่าสุดจาก PaperMC API แล้วดาวน์โหลด jar
VERSION="1.21.4"
BUILD=$(curl -s https://api.papermc.io/v2/projects/paper/versions/$VERSION/builds \
  | jq -r '.builds[-1].build')
curl -o paper-$VERSION.jar \
  "https://api.papermc.io/v2/projects/paper/versions/$VERSION/builds/$BUILD/downloads/paper-$VERSION-$BUILD.jar"

จากนั้นแก้สคริปต์เริ่มรันให้ชี้ไปที่ไฟล์ jar ใหม่

#!/bin/bash
# start.sh — เปลี่ยนจาก server.jar (Vanilla) เป็น paper-1.21.4.jar
java -Xms2G -Xmx4G -jar paper-1.21.4.jar nogui

ติดตั้งปลั๊กอินยอดนิยม

ปลั๊กอินเป็นไฟล์ .jar ที่วางในโฟลเดอร์ plugins/ แล้ว restart (หรือใช้คำสั่งโหลดของบางปลั๊กอิน) เพื่อให้ทำงาน ปลั๊กอินที่นิยมและครอบคลุมงานพื้นฐาน

สำคัญ: เวอร์ชันปลั๊กอินต้องเข้ากันกับเวอร์ชัน Minecraft ของเซิร์ฟเวอร์เสมอ ตรวจหน้า SpigotMC/Modrinth ของปลั๊กอินให้ระบุรองรับเวอร์ชันที่ใช้อยู่ ปลั๊กอินที่เก่าเกินไปอาจทำให้เซิร์ฟเวอร์ crash ตอนสตาร์ต

ปรับจูนประสิทธิภาพให้ลื่นขึ้น

หลังย้ายมา Paper แล้ว การปรับค่าไม่กี่ตัวช่วยเพิ่ม TPS ได้มากโดยเฉพาะเซิร์ฟเวอร์ที่มีผู้เล่นเยอะหรือ RAM จำกัด

view-distance และ simulation-distance

ใน server.properties ค่า view-distance คุมระยะที่ส่งชังก์ให้ผู้เล่นเห็น ส่วน simulation-distance คุมระยะที่เซิร์ฟเวอร์ประมวลผลจริง การลด simulation-distance ลง (เช่นจาก 10 เหลือ 6) มักช่วย TPS ได้มากโดยผู้เล่นแทบไม่รู้สึก

ตั้งค่าเอนทิตีใน spigot.yml

ปรับ merge-radius ของไอเทม/exp และจำกัดจำนวน mob ต่อชังก์ (mob-spawn-range, entity-activation-range) เพื่อลดภาระการประมวลผลเอนทิตี

anti-lag ใน paper-world-defaults.yml

Paper มีออปชันอย่างการจำกัดอัตรา tick ของ tile entity, การ collide ของเอนทิตี และ chunk loading ที่ช่วยลดแลคเมื่อโลกใหญ่ ควรปรับทีละค่าแล้วสังเกต TPS ด้วยคำสั่ง /tps

รันบน VPS หรือเครื่องบ้าน

เซิร์ฟเวอร์ Paper ต้องการ Java (แนะนำ Java 17 หรือใหม่กว่าตามเวอร์ชัน Minecraft) และ RAM เพียงพอ การรันบน VPS ช่วยให้เซิร์ฟเวอร์ออนไลน์ตลอดโดยไม่ต้องเปิดคอมที่บ้านทิ้งไว้ AsiaGB มี VPS Linux เริ่มต้น 500 บาท/เดือน ใช้ SSD และการันตี uptime 99% จัดการผ่าน DirectAdmin เหมาะกับการติดตั้ง Paper และเปิดพอร์ตเซิร์ฟเวอร์เอง ควรเลือกแพ็กเกจที่มี RAM สอดคล้องกับจำนวนผู้เล่นที่คาด

สรุป

การเปลี่ยนจาก Vanilla เป็น Paper (หรือ Spigot/Purpur ตามความต้องการ) เป็นก้าวสำคัญที่ทำให้เซิร์ฟเวอร์ Minecraft รองรับปลั๊กอิน มี TPS ที่ดีขึ้น และปรับจูนได้ลึก ขั้นตอนหลักคือ หยุดเซิร์ฟเวอร์ สำรองโลก ดาวน์โหลด Paper jar ให้ตรงเวอร์ชัน เปลี่ยนคำสั่งเริ่มรัน แล้วติดตั้งปลั๊กอินในโฟลเดอร์ plugins/ โดยระวังเรื่องความเข้ากันของเวอร์ชัน อย่าลืมสำรองข้อมูลก่อนทุกครั้งเพื่อความปลอดภัย

คำถามที่พบบ่อย (FAQ)

ย้ายจาก Vanilla ไป Paper แล้วโลกเดิมยังใช้ได้ไหม

ได้ Paper รักษาความเข้ากันได้ของโลก Vanilla ไว้ แต่ควรสำรองโฟลเดอร์ world และไฟล์ตั้งค่าก่อนเปลี่ยนทุกครั้งเพื่อความปลอดภัย

Paper กับ Spigot ต่างกันอย่างไร

Paper เป็น fork ของ Spigot ที่ออปติไมซ์เพิ่ม รองรับปลั๊กอินเดิมทั้งหมด ให้ TPS ดีกว่า มีการโหลดชังก์แบบ async และไฟล์ตั้งค่า anti-lag ที่ละเอียดกว่า

ปลั๊กอิน Bukkit/Spigot ใช้กับ Paper ได้เลยหรือไม่

ได้ Paper รองรับ Bukkit และ Spigot API เต็มรูปแบบ แต่ต้องเลือกเวอร์ชันปลั๊กอินให้ตรงกับเวอร์ชัน Minecraft ของเซิร์ฟเวอร์เพื่อไม่ให้ crash

ควรตั้ง view-distance เท่าไรจึงจะลื่น

มักเริ่มที่ view-distance 8-10 แล้วลด simulation-distance ลงเหลือ 6-8 ซึ่งช่วยเพิ่ม TPS ได้มากโดยผู้เล่นแทบไม่รู้สึกถึงความต่าง ปรับแล้วสังเกตด้วยคำสั่ง /tps

พร้อมเปิดเซิร์ฟเวอร์ Minecraft ของคุณแล้วหรือยัง?

AsiaGB VPS Linux (SSD, DirectAdmin, uptime 99%) เริ่มต้น 500 บาท/เดือน ดาต้าเซ็นเตอร์ไทย/สิงคโปร์ ปิงต่ำ เหมาะกับเซิร์ฟ Minecraft ทุกขนาด

ดูแพ็กเกจ VPS