คู่มือทำสกินเอง
ยินดีต้อนรับสู่คู่มือสร้างสกินของ Manic EMU! 🎮 ระบบสกินของเอมูเลเตอร์นี้สร้างบนเฟรมเวิร์ก DeltaSkin จึงเข้ากันได้เต็มที่กับรูปแบบพื้นฐานของ DeltaSkin ถ้าอยากเรียนรู้พื้นฐานของ DeltaSkin ก่อน แนะนำให้อ่าน บทเรียนทางการ ถ้าออกแบบใน Figma ลองดู RetroSkinner ของเรา มันช่วยแปลงดีไซน์ Figma เป็นไฟล์สกินได้โดยตรง
แต่เดี๋ยวก่อน — Manic EMU มีฟีเจอร์ที่เจ๋งกว่านั้น! ✨ เช่น แอนิเมชันกด, ปรับขนาดอิสระ, พลิกจอ และอื่น ๆ มาดูกันว่าจะใช้ฟีเจอร์พิเศษเหล่านี้ได้อย่างไร:
📁 คู่มือตั้งค่า info.json
หัวข้อที่มีชื่อว่า “📁 คู่มือตั้งค่า info.json”ตัวระบุประเภทเกม (gameTypeIdentifier)
หัวข้อที่มีชื่อว่า “ตัวระบุประเภทเกม (gameTypeIdentifier)”Manic EMU ใช้ตัวระบุประเภทเกมแยกกัน:
- Wii:
public.aoshuang.game.wii - NGC:
public.aoshuang.game.ngc - Amiga:
public.aoshuang.game.amiga - C64:
public.aoshuang.game.c64 - NGP:
public.aoshuang.game.ngp - PCE:
public.aoshuang.game.pce - Symbian:
public.aoshuang.game.symbian - DOS:
public.aoshuang.game.dos - J2ME:
public.aoshuang.game.j2me - DOOM:
public.aoshuang.game.doom - JAGUAR:
public.aoshuang.game.jaguar - LYNX:
public.aoshuang.game.lynx - 7800:
public.aoshuang.game.7800 - 5200:
public.aoshuang.game.5200 - 2600:
public.aoshuang.game.2600 - Arcade:
public.aoshuang.game.arcade - DC:
public.aoshuang.game.dc - PS1:
public.aoshuang.game.ps1 - PM:
public.aoshuang.game.pm - VB:
public.aoshuang.game.vb - N64:
public.aoshuang.game.n64 - SS:
public.aoshuang.game.ss - MD:
public.aoshuang.game.md - MCD:
public.aoshuang.game.mcd - 32X:
public.aoshuang.game.32x - MS:
public.aoshuang.game.ms - GG:
public.aoshuang.game.gg - SG-1000:
public.aoshuang.game.sg1000 - MD:
public.aoshuang.game.md - PSP:
public.aoshuang.game.psp - 3DS:
public.aoshuang.game.3ds - NDS:
public.aoshuang.game.ds - GBA:
public.aoshuang.game.gba - GBC:
public.aoshuang.game.gbc - GB:
public.aoshuang.game.gb - NES:
public.aoshuang.game.nes - SNES:
public.aoshuang.game.snes
💡 เคล็ดลับ: เพื่อให้เข้ากันได้ทั้ง Delta และ Manic EMU ใช้ตัวระบุของ DeltaSkin โดยตรง — ระบบจะแปลงให้อัตโนมัติ
นอกจากนี้ เนื่องจากบางแพลตฟอร์มใช้จอยที่เข้ากันได้ คุณสามารถผสมสกินบางแพลตฟอร์มใน Manic EMU ได้:
- GB GBC
- MD MCD 32X
- MS GG SG-1000
- NES FDS
- DOS DOOM
ตัวระบุเฉพาะของสกิน (identifier)
หัวข้อที่มีชื่อว่า “ตัวระบุเฉพาะของสกิน (identifier)”กำหนดตัวระบุที่ ไม่ซ้ำทั่วโลก ให้สกินของคุณ! ชื่อซ้ำอาจทำให้โหลดล้มเหลวหรือมีปัญหาแคช
🎮 ทำแอนิเมชันกด
หัวข้อที่มีชื่อว่า “🎮 ทำแอนิเมชันกด”อยากได้ฟีดแบ็กปุ่มที่เคลื่อนไหว? แค่สองขั้น:
- แยกเลเยอร์: แยกพื้นหลังและพื้นหน้าของปุ่ม (ดู เทมเพลตสกิน 3DS)
- ตั้งค่า JSON: เพิ่มฟิลด์
assetให้ปุ่มในinfo.json
ตัวอย่าง: เพิ่มเอฟเฟกต์กดให้ปุ่ม A
{ "asset": { "normal": "a_button.pdf" // Reserve for future state expansions }, "frame": { "height": 48, "width": 48, "x": 545, "y": 552 }, "inputs": ["a"]}🎚️ ทำปุ่มสวิตช์แบบแอนิเมชัน
หัวข้อที่มีชื่อว่า “🎚️ ทำปุ่มสวิตช์แบบแอนิเมชัน”เปิดฟังก์ชันสลับพร้อมคงสถานะ สำหรับภาพอ้างอิง ดูสกิน Atari 2600 เริ่มต้น
ตัวอย่าง
{ "asset": { "normal": "fuction_button.pdf", "selected": "fuction_button.pdf" }, "frame": { "height": 40, "width": 20, "x": 30, "y": 569 }, "animation": { "type": "spring", "begin": { "height": 20, "width": 20, "x": 0, "y": 2 }, "end": { "height": 20, "width": 20, "x": 0, "y": 18 } }, "inputs": "menu", "selfRetracting": true}มีอ็อบเจกต์ animation เพิ่มมา (ขณะนี้รองรับเฉพาะปุ่มสวิตช์)
animation:
typeกำหนดประเภทเส้นโค้งแอนิเมชัน ขณะนี้รองรับเฉพาะspringbeginกำหนดเฟรมก่อนแอนิเมชันเริ่มendกำหนดเฟรมเมื่อแอนิเมชันจบ
หมายเหตุ: พิกัดใน begin และ end สัมพันธ์กับ frame แม่
asset:
นอกจากแอสเซ็ต normal แล้วยังมีแอสเซ็ต selected ทำให้คอนโทรลแสดงทรัพยากรที่ตรงเมื่ออยู่ในสถานะ selected (ขณะนี้รองรับเฉพาะปุ่มสวิตช์)
inputs:
เนื้อหาสอดคล้องกับคอนโทรลอื่น แต่ที่นี่ส่งได้เฉพาะสตริง เข้าใจได้ว่าเป็นฟังก์ชันที่ผูกกับปุ่มสวิตช์ อาจเป็นคำสั่งอินพุตมาตรฐาน เช่น a, b, up, down… หรือเป็น ปุ่มฟังก์ชันกำหนดเอง ที่แนะนำในส่วนถัดไป
หมายเหตุ: ปุ่มฟังก์ชันกำหนดเองบางตัวรองรับการผูกสถานะ เช่น ถ้า inputs ตั้งเป็น volume (ควบคุมปิดเสียง) ระบบจะสอบสถานะเสียงทุกครั้งที่โหลดสกิน แล้วอัปเดตปุ่มสวิตช์ที่ผูกให้ตรงสถานะ ดูเอฟเฟกต์ tvType ในสกิน Atari 2600 เริ่มต้นเป็นตัวอย่าง
ปุ่มฟังก์ชันกำหนดเองที่รองรับการผูกสถานะ ได้แก่:
reverseScreensvolumetoggleControllstoggleAnalogtvTypeleftDifficultyrightDifficulty
selfRetracting: ระบุว่าปุ่มสวิตช์จะรีเซ็ตอัตโนมัติหรือไม่ ดูปุ่มรีเซ็ตเกมบน Atari 2600 ซึ่งเด้งกลับหลังกด จำลองสวิตช์แบบชั่วขณะ
⚙️ ปุ่มฟังก์ชันกำหนดเอง
หัวข้อที่มีชื่อว่า “⚙️ ปุ่มฟังก์ชันกำหนดเอง”Manic EMU รองรับทางลัดจำนวนมาก (ตรวจความต้องการเวอร์ชัน):
รองรับใน v1.2.3 ขึ้นไป:
flex: เข้าการตั้งค่าเลย์เอาต์สกิน
เพิ่มใน v1.2.4 ขึ้นไป:
quickSave: เซฟมืออย่างเร็วquickLoad: โหลดมืออย่างเร็วfastForward: กดค้างเพื่อเร่งความเร็วสูงสุดtoggleFastForward: แตะเพื่อวนอัตราความเร็วreverseScreens: สลับจอหลัก/จอรองvolume: ควบคุมปิดเสียงsaveStates: เปิดรายการสถานะเซฟcheatCodes: เปิดรายการโค้ดโกงskins: เปิดรายการสกินfilters: เปิดรายการฟิลเตอร์screenshot: ถ่ายแคปเจอร์haptics: ปรับฟีดแบ็กสั่นcontrollers: เปิดรายการจอยorientation: เปลี่ยนการตั้งค่าการหมุนfunctionLayout: เข้าการตั้งค่าเลย์เอาต์restart: รีเซ็ตเกมresolution: ตั้งความละเอียดเกมquit: ออกจากเกมamiibo:โหลด Amiibos สำหรับ 3DShomeMenu:กลับสู่ Home Menu ของ 3DS
เพิ่มใน v1.4.2 ขึ้นไป:
toggleControlls:ซ่อน/แสดงคอนโทรลblowing:จำลองการเป่าเข้าไมค์palette:พาเลตสำหรับ GB GBC VB
เพิ่มใน v1.5.0 ขึ้นไป:
swapDisk:สลับไปแผ่นถัดไป หรือเปลี่ยนด้านสำหรับ FDS
เพิ่มใน v1.5.5 ขึ้นไป:
shake:จำลองการเขย่า
เพิ่มใน v1.6.0 ขึ้นไป:
toggleAnalog:สลับโหมดอุปกรณ์อินพุต เช่น เปลี่ยนเป็น PlayStation Controller หรือ DualShock บน PS1
เพิ่มใน v1.7.0 ขึ้นไป:
retroAchievements:เปิดหน้า RetroAchievements
ใหม่ใน v1.7.1 ขึ้นไป:
fastForward2x: กดค้างเพื่อเร่งความเร็ว 2 เท่าfastForward3x: กดค้างเพื่อเร่งความเร็ว 3 เท่าfastForward4x: กดค้างเพื่อเร่งความเร็ว 4 เท่าairPlayScaling: ปรับการสเกลจอเกมระหว่าง AirPlayairPlayLayout: เลือกการจัดจอหลายจอ (เช่น NDS) ระหว่าง AirPlay
ใหม่ใน v1.7.2 ขึ้นไป:
gameplayManuals:เปิดคู่มือการเล่น
ใหม่ใน v1.7.3 ขึ้นไป:
triggerPro:สลับคอนฟิก TriggerPro
ใหม่ใน v1.8.3 ขึ้นไป:
tvType: สลับโหมดสีและขาวดำสำหรับ Atari 2600leftDifficulty: สวิตช์ความยากซ้ายสำหรับ Atari 2600rightDifficulty: สวิตช์ความยากขวาสำหรับ Atari 2600
ใหม่ใน v1.9.0 ขึ้นไป:
screenScaling:สลับโหมดยืดจอj2meSettings:เปิดหน้าการตั้งค่า J2MEdosSettings:เปิดหน้าการตั้งค่าคอร์สำหรับ DOSinsertDisc:ใส่แผ่น
ใหม่ใน v2.0.0 ขึ้นไป:
coreSettings:เปิดการตั้งค่าคอร์rewind:กดค้างเพื่อกรอกลับ
ตัวอย่าง: เพิ่มปุ่มรีสตาร์ท
{ "asset": { "normal": "button.pdf" }, "frame": { ... }, "inputs": [ "restart" ]}⚠️ เตือนสำคัญ
อย่ากำหนดหลายฟังก์ชันให้ปุ่มเดียว! เช่น:
// ❌ Dangerous Example!{ "inputs": [ "restart", "quit" ]}🎵 เอฟเฟกต์เสียง
หัวข้อที่มีชื่อว่า “🎵 เอฟเฟกต์เสียง”ตั้งแต่ V1.9.0 Manic EMU รองรับเอฟเฟกต์เสียงสำหรับปุ่มสกิน คุณสามารถแปลงไฟล์เสียงเป็นรูปแบบ CAF เปลี่ยนชื่อเป็น sound.caf แล้ววางไว้ที่ไดเรกทอรีรากของสกินก่อนแพ็กทุกอย่างเข้าด้วยกัน
📦 คู่มือแพ็กสกิน
หัวข้อที่มีชื่อว่า “📦 คู่มือแพ็กสกิน”แพ็กสกินในสามขั้น:
- วางแอสเซ็ตทั้งหมด ราบ (ไม่มีโฟลเดอร์แม่)
- เลือกไฟล์ทั้งหมดแล้วบีบอัดเป็นไฟล์ ZIP ที่ไม่เข้ารหัส
- เลือกนามสกุลที่ต้องการ:
.manicskinหรือ.deltaskin
แนะนำให้ใช้เทมเพลตทางการของเราเพื่อให้โครงสร้างถูกต้อง
🎨 ดาวน์โหลดสกินทางการ
หัวข้อที่มีชื่อว่า “🎨 ดาวน์โหลดสกินทางการ”เริ่มออกแบบสกินที่เป็นเอกลักษณ์ของคุณได้เลย! 🎨