เซิร์ฟเวอร์ 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) ตกลง ทำให้เกิดอาการแลคทั้งเซิร์ฟเวอร์
- ไม่รองรับปลั๊กอินสำหรับจัดการยศ สิทธิ์ และการป้องกันพื้นที่
- ไม่มีเครื่องมือปรับจูนประสิทธิภาพเชิงลึก
- ไม่มีระบบ anti-lag หรือการโหลดชังก์แบบ async
- แก้ปัญหาผู้เล่นก่อกวน (griefing) ได้ยากเพราะไม่มีเครื่องมือย้อนดูประวัติ
สายพันธุ์ของซอฟต์แวร์เซิร์ฟเวอร์: จาก Vanilla ถึง Purpur
ซอฟต์แวร์เซิร์ฟเวอร์ Minecraft ฝั่งปลั๊กอินมี lineage ที่พัฒนาต่อยอดกันมาเป็นชั้น ๆ การเข้าใจภาพนี้ช่วยให้เลือกได้ถูก
- Vanilla — server jar ทางการจาก Mojang เป็นฐานของทุกอย่าง
- CraftBukkit — เพิ่ม Bukkit API ทำให้รองรับปลั๊กอินได้เป็นครั้งแรก
- Spigot — พัฒนาต่อจาก CraftBukkit ปรับแต่งประสิทธิภาพและเพิ่ม
spigot.ymlสำหรับตั้งค่าเอนทิตีและ view distance - Paper — fork ของ Spigot ที่ออปติไมซ์หนักที่สุด รองรับปลั๊กอิน Bukkit/Spigot ได้ทั้งหมด เพิ่มการโหลดชังก์แบบ async และไฟล์ตั้งค่าละเอียด
- 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
| คุณสมบัติ | Vanilla | Spigot | Paper | Purpur |
|---|---|---|---|---|
| รองรับปลั๊กอิน (Bukkit) | ไม่ | ใช่ | ใช่ | ใช่ |
| ประสิทธิภาพ TPS | พื้นฐาน | ดีขึ้น | ดีมาก | ดีมาก |
| โหลดชังก์แบบ async | ไม่ | ไม่ | ใช่ | ใช่ |
| ไฟล์ตั้งค่า anti-lag | ไม่มี | spigot.yml | paper-global/world.yml | + purpur.yml |
| ปรับแต่ง gameplay | ต่ำ | ต่ำ | ปานกลาง | สูง |
| ความเข้ากันได้ของโลกเดิม | — | สูง | สูง | สูง |
สำรองข้อมูลก่อนเสมอ
ถึงแม้ Paper จะรักษาความเข้ากันได้ของโลกเดิม (world) ไว้ได้ดี แต่การเปลี่ยนซอฟต์แวร์เซิร์ฟเวอร์ควรสำรองข้อมูลก่อนทุกครั้ง สิ่งที่ต้องสำรอง
- โฟลเดอร์โลกทั้งหมด:
world,world_nether,world_the_end - ไฟล์
server.properties - ไฟล์ whitelist/ops:
whitelist.json,ops.json,banned-players.json
คำเตือน: ปิดเซิร์ฟเวอร์ให้สนิทก่อนสำรองข้อมูลเสมอ ห้ามคัดลอกโฟลเดอร์โลกขณะเซิร์ฟเวอร์กำลังรัน เพราะไฟล์ region อาจเขียนไม่เสร็จและทำให้โลกเสียหายได้
ขั้นตอนการ migrate จาก Vanilla เป็น Paper
- หยุดเซิร์ฟเวอร์ Vanilla ให้เรียบร้อยด้วยคำสั่ง
stopใน console - สำรองโลกและไฟล์ตั้งค่าตามหัวข้อด้านบน
- ดาวน์โหลด Paper jar ให้ตรงเวอร์ชัน Minecraft ที่ใช้อยู่จากหน้า PaperMC downloads หรือผ่าน API
- วางไฟล์ jar ไว้ในโฟลเดอร์เซิร์ฟเวอร์ และแก้คำสั่งเริ่มรันให้ชี้ไปที่ชื่อไฟล์ใหม่
- รันครั้งแรกเพื่อให้ Paper สร้างไฟล์ตั้งค่า (
paper-global.yml,paper-world-defaults.yml,bukkit.yml,spigot.yml) - ตรวจสอบว่าผู้เล่นเข้าได้และโลกโหลดถูกต้อง แล้วจึงเริ่มติดตั้งปลั๊กอิน
ตัวอย่างการดาวน์โหลด 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 (หรือใช้คำสั่งโหลดของบางปลั๊กอิน) เพื่อให้ทำงาน ปลั๊กอินที่นิยมและครอบคลุมงานพื้นฐาน
- EssentialsX — คำสั่งพื้นฐาน บ้าน (home), warp, ระบบเศรษฐกิจ
- LuckPerms — จัดการยศและสิทธิ์ (permissions) แบบละเอียด
- WorldEdit — แก้ไขบล็อกจำนวนมากในคราวเดียว สำหรับสร้างสิ่งก่อสร้าง
- CoreProtect — บันทึกและย้อนดู/ย้อนกลับการกระทำ ใช้ตรวจสอบ griefing
- Vault — ตัวกลางเชื่อมระบบเศรษฐกิจและสิทธิ์ให้ปลั๊กอินอื่นใช้ร่วมกัน
สำคัญ: เวอร์ชันปลั๊กอินต้องเข้ากันกับเวอร์ชัน 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