ดูว่ามีอะไรใหม่ใน V2 · อินเทอร์เฟซใหม่ทั้งหมด, Crew, แปลง Blueprint เป็น C++, ทดสอบเกมแบบมัลติเพลเยอร์ และอัปเดตภายในเอดิเตอร์ อ่านบันทึกการเปลี่ยนแปลง → The V2 giveaway winners are in · 10 accounts won 50M AI tokens each See the winners →
ขั้นสูง

PaperZD

สร้างแอนิเมชันตัวละคร 2D ใน PaperZD แค่สั่ง: flipbook จาก sprite sheet, แหล่งแอนิเมชัน, Animation Blueprint, state machine, ตัวละครที่เล่นได้ และการตรวจใน PIE

PaperZD โดย Critical Failure Studio คือระบบแอนิเมชันที่เกม Paper2D ส่วนใหญ่ใช้: กราฟแอนิเมชันและ state machine สำหรับตัวละครแบบ flipbook ใช้ได้ฟรีบน Fab และ GitHub

ด้วยส่วนขยาย PaperZD Ultimate Engine CoPilot สร้างการตั้งค่าเหล่านั้นให้คุณ ตั้งแต่ sprite sheet ไปจนถึงตัวละครที่เดินและโจมตีได้ตอนเล่น

ทดสอบกับ PaperZD 2.2.4 บน Unreal Engine 5.7


สิ่งที่ต้องมี

  • PaperZD ที่ติดตั้งและเปิดใช้ในโปรเจกต์ของคุณ มันใช้ปลั๊กอิน Paper2D ของ Unreal เอง ซึ่ง PaperZD จะเปิดให้พร้อมกัน
  • sprite sheet สำหรับตัวละครของคุณ หรือ flipbook ที่มีอยู่แล้ว

และ Ultimate Engine CoPilot ที่เปิดส่วนขยาย PaperZD ไว้

หากไม่มี PaperZD ส่วนขยายนี้จะไม่ทำอะไรที่เป็นอันตราย เครื่องมือ PaperZD ทุกตัวจะตอบกลับด้วยข้อความเดียวที่บอกว่าปลั๊กอินติดตั้ง เปิดใช้ และโหลดแล้วหรือไม่ และต้องทำอะไรต่อ


การตั้งค่า

  1. ติดตั้ง PaperZD จาก Fab หรือ GitHub แล้วเปิดใช้ในโปรเจกต์ของคุณ รีสตาร์ตเอดิเตอร์หาก Unreal ขอ
  2. ใน CoPilot เปิด การตั้งค่า > ส่วนขยาย แล้วเปิด PaperZD ซึ่งปิดไว้ตามค่าเริ่มต้น
  3. ขอให้ AI ตรวจสถานะของ PaperZD มันจะรายงานว่าพบ PaperZD หรือไม่ และหากไม่พบ จะบอกว่าขาดอะไร

สิ่งที่คุณขอได้

  • “นี่คือ sprite sheet อัศวินของฉัน 6 คอลัมน์ 13 แถว สร้าง flipbook สำหรับ idle, walk และ attack ในสี่ทิศทาง แล้วตั้งค่า PaperZD ให้”
  • “เพิ่ม state machine ที่มี Idle, Walk และ Attack ให้เข้า Walk เมื่อตัวละครกำลังเคลื่อนที่ กลับไป Idle เมื่อหยุด และให้ Attack เล่นหนึ่งครั้งแล้วกลับไป Idle”
  • “ให้แอนิเมชันหันไปทางที่ตัวละครกำลังเคลื่อนที่”
  • “สร้างตัวละครที่เล่นได้ ใช้ WASD เดิน และ Space โจมตี มีกล้องอยู่ด้านหลัง และมี game mode ที่สปอว์นมัน”
  • “เพิ่มเสียงฝีเท้าให้แอนิเมชัน walk”
  • “เปลี่ยนตัวละครเป็นชุดสีแดงระหว่างที่เกมกำลังรัน”

เบื้องหลังคำขอเหล่านั้น AI สามารถ:

  • ตัด sprite sheet เป็นแอนิเมชัน การเรียกครั้งเดียวเปลี่ยน sheet เป็น sprite, flipbook, animation sequence, แหล่งแอนิเมชัน และ Animation Blueprint แอนิเมชันที่มีหลายทิศทางจะกลายเป็น sequence หลายทิศทางหนึ่งรายการ
  • สร้างกราฟแอนิเมชัน โหนด play sequence, state machine, direction, override slot, select ตาม bool, ตัวเลข หรือ enum, random player และ cached animation แล้วเชื่อมต่อกัน
  • สร้าง state machine state, conduit และ jump พร้อม transition ที่ทำงานตามตัวแปร เมื่อแอนิเมชันปัจจุบันจบ ทุกครั้ง หรือไม่เลย โดยมีลำดับความสำคัญ และ sequence ช่วงเปลี่ยนแบบเลือกได้
  • เพิ่ม notify อีเวนต์กำหนดเอง เสียง และเอฟเฟกต์ Niagara หรือพาร์ติเคิลบนไทม์ไลน์ โดย notify แบบกำหนดเองจะกลายเป็นฟังก์ชันที่คุณเติมได้
  • เพิ่มสกิน flipbook ทดแทนสำหรับแต่ละแอนิเมชัน สำหรับชุดแต่งตัวหรือการสลับพาเลต ใช้ได้ขณะเกมกำลังรัน
  • สร้างตัวละคร ตัวละคร PaperZD ใหม่ที่ขับเคลื่อนด้วย Animation Blueprint หรือเชื่อมแอกเตอร์ที่มีอยู่เข้าไป และยังเพิ่มแทร็ก PaperZD ให้ Level Sequence ได้ด้วย
  • ตรวจตอนเล่น อ่านว่า sequence ไหนกำลังเล่น เล่นไปถึงไหนแล้ว และค่าของตัวแปรแอนิเมชัน รวมถึงเล่น หยุด หรือกระโดดไปที่แอนิเมชันเพื่อทดสอบ transition ด้วยมือ

ข้อผิดพลาดที่มันหลีกเลี่ยง

PaperZD มีกับดักอยู่ไม่กี่อย่างที่คอมไพล์ผ่านแต่ไม่ทำงาน AI รู้จักมันดี:

  • กฎของ transition ใหม่คือ “ไม่เลย” จนกว่าจะตั้งค่า ตัวละครจึงไม่มีวันออกจาก Idle
  • ตัวแปรที่กฎอ่านต้องถูกเขียนที่ไหนสักแห่ง โดยทั่วไปคือ tick ของ Animation Blueprint การคอมไพล์ที่สะอาดไม่ได้พิสูจน์ว่ากฎเปลี่ยนค่าจริง AI จึงตรวจตอนเล่น
  • sequence เล่นได้เฉพาะใน Animation Blueprint ของแหล่งแอนิเมชันของมันเอง มันจึงเก็บแอสเซ็ตของตัวละครแต่ละตัวไว้ด้วยกัน
  • state และ transition ถูกคอมไพล์เป็นชุดเดียว หลังจบกลุ่มการแก้ไข ไม่ใช่หลังทุกการแก้ไข
  • กริดของ sprite sheet อ่านจากซ้ายไปขวา เริ่มจากด้านบน AI จึงนับช่องแบบเดียวกับที่ PaperZD นับ

เคล็ดลับและเทคนิค

ทั้งหมดนี้มาจากการสร้างหมู่บ้านเล็กๆ ที่เล่นได้ด้วย PaperZD และ CoPilot: ฮีโร่ ชาวบ้าน ศัตรูโครงกระดูก และหมาป่าที่เดินเตร็ดเตร่ ทดสอบกับ PaperZD 2.2.4 บน Unreal Engine 5.7

สามข้อที่สำคัญที่สุด:

  1. บอก AI เลย์เอาต์แถวจริงของ sheet คุณ นับแถวตั้งแต่ 0 บอกว่าแถวไหนเป็นแอนิเมชันและแถวไหนเป็นอย่างอื่น และเปิดเฟรมแรกของแต่ละ flipbook เพื่อตรวจ
  2. อย่าหมุนแอกเตอร์เด็ดขาด flipbook เป็นการ์ดแบน ทิศทางจึงต้องมาจากแอนิเมชันที่เล่น ไม่ใช่จากการหมุนแอกเตอร์
  3. อย่าเชื่อการคอมไพล์ที่สะอาด ขอให้ทำเพลย์เทสต์ที่รายงานแอนิเมชันปัจจุบันและตัวแปรของมัน

อธิบาย sheet ให้ตรงตามจริง

AI มองไม่เห็นว่าแถวไหนของ sheet คุณเป็นแอนิเมชันอะไร คุณต้องบอกมัน

  • sheet ที่ส่งออกจาก PixelLab มี 6 คอลัมน์และ 13 แถว ช่องละ 92 พิกเซล โดยทุกแอนิเมชันมีสี่ทิศทางเรียงตามลำดับ ใต้ ตะวันตก ตะวันออก เหนือ แถว 0 เป็นแถวท่าหมุน ไม่ใช่แอนิเมชัน
  • ไฟล์ที่ส่งออกมาพร้อมไฟล์เลย์เอาต์ที่ระบุว่าแถวไหนเป็นแอนิเมชันอะไร ให้ใช้มัน ลำดับต่างกันไปในแต่ละตัวละคร: ในหมู่บ้าน ฮีโร่กับเมจเริ่มด้วย walk โครงกระดูกเริ่มด้วย attack และหมาป่าเริ่มด้วย idle
  • นับจาก 0 และระบุแถวท่าหมุน ในหนึ่งเซสชัน พรอมต์เขียนว่า “แถว 1 ถึง 4 คือ walk” AI นับจาก 1 ทุกแอนิเมชันจึงเลื่อนไปหนึ่งแถว และฮีโร่หันผิดทาง

เขียนแถวแบบนี้:

แต่ละ sheet มี 6 คอลัมน์ 13 แถว ช่องละ 92 พิกเซล นับแถวจาก 0 แถว 0 คือแถวท่าหมุน ข้ามไป แถว 1 ถึง 4 คือ walk (ใต้ ตะวันตก ตะวันออก เหนือ 6 เฟรม) แถว 5 ถึง 8 คือ attack แถว 9 ถึง 12 คือ idle (4 เฟรม)

การตั้งค่าที่สำคัญ

  • เปิด Pixel art เท็กซ์เจอร์ใช้ nearest filtering และไม่มี mip พิกเซลจึงคมชัด
  • จุดหมุนอยู่ที่กึ่งกลางด้านล่าง เท้าอยู่ที่เดิมในทุกเฟรม
  • เฟรมต่อวินาที บอกความเร็วที่คุณต้องการ AI เคยใช้ 15 กับทุกอย่าง ทำให้ idle 4 เฟรมวนซ้ำในเวลาราวหนึ่งในสี่วินาที idle 6, walk 12 และ attack 14 ดูถูกต้อง
  • ลำดับทิศทาง sequence หลายทิศทางไล่ตามเข็มนาฬิกาจากด้านบน: เหนือ ตะวันออก ใต้ ตะวันตก
  • ค่าบนแอกเตอร์ที่วางไว้ชนะ ค่า cooldown หรือความเร็วที่ตั้งบนแอกเตอร์ในเลเวลมีผลเหนือค่าเริ่มต้นของ Blueprint ดังนั้นให้ตรวจสำเนาที่วางไว้เมื่อการเปลี่ยนแปลงดูเหมือนไม่ทำอะไร

ให้สไปรต์หันเข้าหากล้อง

นี่คือการตั้งค่าที่ทำให้สไปรต์ไม่หมุน ไม่เอียง และไม่กลายเป็นเส้นบาง:

  • ปิดการหมุนของแอกเตอร์ ปิด controller yaw, ปิด orient rotation to movement, ปิด controller desired rotation หากเปิดทิ้งไว้ การ์ดจะหมุนตามแอกเตอร์และอาจกลายเป็นเส้นบาง
  • สปอว์นด้วย yaw 0 yaw 180 ตอนสปอว์นทำให้การ์ดเอนออกจากกล้องที่ตรึงอยู่กับโลก
  • ตรึง spring arm กับโลก ปิด pawn control rotation, ปิด inherit pitch, yaw และ roll, ปิด collision test ใช้ pitch -40 และ yaw -90 ได้ผล
  • เอียงการ์ดครั้งเดียว เมื่อกล้องมองลง 40 องศา ให้สไปรต์มี roll -40 และยกขึ้นให้เท้าแตะพื้น
  • เคลื่อนที่ตามแกนโลก ไม่ใช่ตามเวกเตอร์ forward หรือ right ของแอกเตอร์
  • แสดงทิศทางด้วย Set Directionality ป้อนตัวแปร Vector2D ชื่อ Facing เขียน Facing ทุก tick จากความเร็ว และคงค่าล่าสุดไว้เมื่อตัวละครหยุด

ด้วยกล้องนี้ ปุ่มจะแมปแบบนี้:

  • D เคลื่อนไปตาม +X, Facing (1, 0)
  • W เคลื่อนไปตาม -Y, Facing (0, 1)
  • A เคลื่อนไปตาม -X, Facing (-1, 0)
  • S เคลื่อนไปตาม +Y, Facing (0, -1)

หากซ้ายกับขวาหรือบนกับล่างสลับกัน ให้กลับเครื่องหมายของส่วนนั้นของ Facing อย่าหมุนแอกเตอร์เพื่อชดเชย

ทดสอบตอนเล่น

  • transition ไม่ทำอะไรจนกว่ากฎของมันจะเปลี่ยนค่าได้ กฎใหม่คือ “ไม่เลย” และกฎที่อ่านตัวแปรต้องมีบางอย่างเขียนตัวแปรนั้น โดยทั่วไปคือ tick ของ Animation Blueprint ขอให้ทำเพลย์เทสต์ที่รายงานแอนิเมชันปัจจุบัน
  • ให้ Facing มีค่าเริ่มต้น มันถูกเขียนเฉพาะตอนตัวละครเคลื่อนที่ การโจมตีก่อนก้าวแรกจึงอ่านได้ศูนย์ ค่าเริ่มต้นเป็นทิศใต้แก้ได้
  • ให้ฮีโร่หันเข้าหาเป้าหมาย หากการโจมตีควรโดนบางอย่างทางด้านข้าง ให้ขอ AI ตั้ง Facing ไปทางศัตรูที่ใกล้ที่สุดก่อนฟัน

เซสชันจริง

คลิปคอลแล็บสร้างด้วยพรอมต์สี่ครั้งในแชทของ CoPilot ด้วยเอเจนต์ Claude Code AI รันเพลย์เทสต์เองและซ่อมสิ่งที่พบ เวลาที่ให้มาเป็นของเครื่องเดียว

  1. นำเข้าตัวละครสองตัวพร้อม state machine ของ idle, walk และ attack: ราว 2.5 นาที
  2. ฮีโร่ที่เล่นได้ (WASD เดิน Space โจมตี) กล้อง spring arm, game mode และชาวบ้านที่เดินระหว่างสามจุด: ราว 7 นาที
  3. ศัตรูโครงกระดูกที่ไล่และโจมตี พลังชีวิต และตัวนับพลังชีวิตบนหน้าจอ: ราว 7 นาที
  4. หมาป่าที่เดินเตร็ดเตร่ สมุนไพรที่เก็บได้ และตัวนับสมุนไพร: ราว 7 นาที

หน้าตาเป็นอีกงานหนึ่ง

AI สร้างแอนิเมชันและเกมเพลย์ หน้าตาของคลิปถูกตั้งค่าในเลเวล ไม่ใช่โดย AI:

  • แสงอาทิตย์และแสงตะเกียงที่อบอุ่น
  • Bloom, vignette และ depth of field ตื้นเพื่อให้ได้ความรู้สึกแบบ tilt-shift
  • วัสดุ emissive แบบ unlit บนตัวละคร

เริ่มด้วยวัสดุ unlit และ exposure คงที่ การปรับ exposure ด้วยสายตาหลายรอบเสียเวลามากกว่าที่ได้คืน

ข้อจำกัด

  • AI ไม่รู้ว่าแต่ละแถวของ sheet คุณเป็นแอนิเมชันอะไร คุณต้องบอกมัน
  • ศัตรูเดินตรงเข้าหาฮีโร่ โดยไม่มี pathfinding เลี่ยงของประกอบฉาก
  • ที่มุม 45 องศาพอดี สองแกนเท่ากันและแอนิเมชันเลือกตะวันออก
  • พลังชีวิตหยุดที่ 0 ไม่มีอะไรเกิดขึ้นอีกจนกว่าคุณจะขอให้มีการตาย
  • มันอ่านสถานะแอนิเมชันระหว่างที่กดปุ่มค้างไว้ไม่ได้ และบอกตรงๆ แทนที่จะเดา

สิทธิ์

การอ่านทำได้อิสระ การตรวจดูแอสเซ็ต กราฟ หรือแอนิเมชันที่กำลังรันจะไม่ถามเลย การเปลี่ยนแปลงเป็นไปตามการตั้งค่า Ask Before Edit หรือ Auto Edit ของคุณ เหมือนเครื่องมืออื่นทุกตัว


การทำงานของมัน

  • ปลั๊กอินไม่ได้ผูกกัน ส่วนขยายเข้าถึง PaperZD ผ่าน reflection เท่านั้น Ultimate Engine CoPilot จึง build และรันเหมือนเดิมไม่ว่าจะติดตั้ง PaperZD หรือไม่ และส่วนขยายก็ทำงานต่อได้ข้ามเวอร์ชันของ PaperZD ที่มีการออกแบบเดียวกัน หากการอัปเดตเปลี่ยนชื่อบางอย่าง เครื่องมือจะบอกชื่อฟิลด์ที่หายไปแทนการเดา
  • ใช้ได้ทุกที่พร้อมกัน เครื่องมือทำงานในแชทของ CoPilot ในไคลเอนต์ MCP ภายนอกอย่าง Claude Code และ Cursor และใน coding agent ดู การเชื่อมต่อ MCP
  • 39 เครื่องมือ เครื่องมือสำหรับการสร้าง การตรวจดู และตอนเล่น ครอบคลุมแหล่งแอนิเมชัน sequence, notify, สกิน, Animation Blueprint, กราฟ, state machine, ตัวละคร และ Sequencer

ดู ส่วนขยาย สำหรับวิธีการทำงานของส่วนขยาย และ เพลย์เทสต์ สำหรับวิธีที่ AI ตรวจเกมที่กำลังรัน