เจาะลึกเทคนิค Attack Magnetism ในเกม Ashen Souls พัฒนาด้วย Unreal Engine 4
สมาชิกกลุ่มแชร์เดฟล็อกการสร้างเกม Action RPG แนว Souls-like โดยหยิบยกปัญหาตัวละครฟันลมมาแก้ด้วยระบบช่วยโจมตีที่แบ่งเป็น 3 ระยะ พร้อมเปิดประเด็นแลกเปลี่ยนเรื่องปัญหาเกมกระตุกหลังเพิ่ม NPC จำนวนมาก
## [Devlog] Ashen Souls – แชร์เทคนิคระบบช่วยโจมตี (Attack Magnetism)
สวัสดีครับ พอดีเห็นว่าเป็นกลุ่มคนพัฒนาเกมเหมือนกัน เลยอยากลองนำเทคนิคและแนวคิดที่ใช้พัฒนาเกมของตัวเองมาแชร์ เผื่อเป็นประโยชน์กับคนที่กำลังทำระบบต่อสู้ครับ
Game Overview & Tools
* **ชื่อเกม:** Ashen Souls
* **แนวเกม:** Single-player Action RPG / Dark Fantasy / Souls-like
* **Engine:** Unreal Engine 4
* **เครื่องมือพัฒนา:** Unreal Engine, C++, Blueprint
* **Generative AI:** ใช้ AI ช่วยเขียน C++ และพัฒนาระบบควบคุมหลายส่วนของเกม โดยผมเป็นคนกำหนดแนวคิด ออกแบบอัลกอริทึม ทดสอบ และปรับแก้การทำงานให้ตรงกับสิ่งที่ต้องการ ส่วนสัดส่วนการใช้ AI ยังไม่ได้ประเมินเป็นเปอร์เซ็นต์ที่แน่นอน
ตัวเกมได้รับแรงบันดาลใจจากเกม Action RPG หลายเกม โดยเน้นระบบต่อสู้ การสำรวจโลก และการตอบสนองของ NPC ต่อการกระทำของผู้เล่น
Feature Deep Dive – Attack Magnetism
**ปัญหาที่เจอคือ ตัวละครโจมตีไม่ค่อยโดนศัตรูครับ 555**
ในช่วงแรกผมพบว่า แม้ผู้เล่นจะหันหน้าไปทางศัตรูแล้ว แต่หากระยะห่างหรือองศาคลาดเคลื่อนเพียงเล็กน้อย ตัวละครก็มักจะฟันลม
พอลองสังเกตระบบต่อสู้ของเกมอื่น ๆ ก็พบว่าหลายเกมมีระบบช่วยปรับตำแหน่งและทิศทางการโจมตีอยู่เบื้องหลัง ทำให้ผู้เล่นรู้สึกว่าโจมตีได้แม่นยำและเป็นธรรมชาติ
ผมจึงลองแกะหลักการเหล่านั้นมาปรับใช้กับเกมตัวเอง โดยแบ่งระยะการโจมตีออกเป็น 3 ส่วน
🟢 **Green Zone – ระยะโจมตีปกติ**
เป็นระยะใกล้ตัวละครมากที่สุด สามารถโจมตีได้ตามปกติโดยไม่ต้องใช้ระบบช่วยเคลื่อนที่
🔵 **Blue Zone – ระบบช่วยโจมตีระยะใกล้**
เมื่อกดโจมตี ระบบจะค้นหาศัตรูที่อยู่ใกล้ที่สุดภายในรัศมีสีน้ำเงิน โดยศัตรูต้องอยู่ในมุมกล้องที่ผู้เล่นมองเห็นด้วย
หากพบเป้าหมาย ระบบจะช่วยหมุนและเคลื่อนตัวละครเข้าระยะโจมตีอัตโนมัติ แม้ศัตรูจะไม่ได้อยู่ตรงหน้าตัวละครก็ตาม
🔴 **Red Zone – ระบบช่วยโจมตีตามทิศทาง**
สำหรับศัตรูที่อยู่ไกลกว่าระยะสีน้ำเงิน ระบบจะมีเส้นแดงสำหรับล็อกทิศทางเป้าหมาย
แต่จะมีเงื่อนไขว่า ผู้เล่นต้องหันตัวละครให้เข็มสีน้ำเงินตรงกับทิศทางเส้นแดงก่อน ระบบจึงจะช่วยเคลื่อนเข้าหาศัตรู
หากหันหน้าไม่ตรงแล้วกดโจมตี ก็สามารถฟันลมได้ตามปกติ
แนวคิดคือช่วยลดความผิดพลาดเรื่องระยะและองศาที่เล็กน้อย แต่ยังให้ผู้เล่นต้องควบคุมทิศทางเอง
การเคลื่อนที่ระหว่าง Combo
อีกส่วนที่ทดลองทำคือการคำนวณเป้าหมายใหม่ทุก Hit
เมื่อโจมตีโดน ศัตรูอาจถอยหลังจากแรงปะทะ และตัวละครสามารถเคลื่อนตามเพื่อโจมตีต่อเนื่องได้
อย่างไรก็ตาม การเข้าถึงระยะฟันไม่ได้หมายความว่าจะโจมตีโดนเสมอ เพราะศัตรูยังสามารถป้องกัน กลิ้งหลบ หรือถอยออกจากระยะได้
เป้าหมายของระบบนี้คือ **ทำให้ผู้เล่นเข้าถึงศัตรูได้ง่ายขึ้น แต่ไม่ได้ทำให้การโจมตีสำเร็จอัตโนมัติ**
Dev Story – ปัญหาที่กำลังเจอในสัปดาห์นี้
ปัญหาที่กำลังเจอในสัปดาห์นี้คือ **เกมเริ่มมีอาการกระตุกหลังจากเพิ่ม NPC จำนวนมากลงในแผนที่**
ก่อนหน้านี้เกมยังทำงานได้ค่อนข้างปกติ แต่พอเริ่มเพิ่ม NPC ให้โลกดูมีชีวิตมากขึ้น ทั้งตัวละครที่เดินไปมาและทำกิจกรรมต่าง ๆ ก็เริ่มพบปัญหาเรื่องประสิทธิภาพ
ตอนนี้กำลังตรวจสอบว่าสาเหตุหลักมาจากส่วนไหน เช่น AI ของ NPC, การประมวลผล Tick, Animation หรือภาระในการแสดงผลตัวละครจำนวนมากพร้อมกัน
ยังไม่ได้สรุปสาเหตุแน่ชัด ต้องค่อย ๆ ทดสอบและปรับปรุงประสิทธิภาพต่อไปครับ
**จากเดิมที่พยายามทำให้โลกดูมีชีวิต ตอนนี้ต้องหาวิธีทำให้โลกมีชีวิตโดยที่เกมยังเล่นได้ลื่นด้วย 555**
สรุป
ส่วนตัวผมมองว่าความยากของเกม Action RPG ควรอยู่ที่การอ่านจังหวะศัตรู การเลือกโจมตี ป้องกัน หรือหลบ มากกว่าการต้องกะระยะดาบให้แม่นยำตลอดเวลา
เพราะคนเล่นก็ไม่ใช่มิยาโมโตะ มูซาชิ จะได้ฟันแม่นทุกครั้ง 555
เลยพยายามทำให้ระบบช่วยจัดระยะการโจมตี โดยยังเปิดโอกาสให้ผู้เล่นฟันพลาดได้หากเลือกทิศทางหรือจังหวะผิด
ภาพที่แนบเป็นดราฟอธิบายอัลกอริทึมคร่าว ๆ ที่กำลังใช้อยู่ครับ
ใครเคยพัฒนาระบบต่อสู้ลักษณะนี้ หรือมีประสบการณ์แก้ปัญหาเรื่องความลื่นไหลของ Animation และการเคลื่อนที่ระหว่างโจมตี มาแลกเปลี่ยนเทคนิคกันได้นะครับ
#AshenSouls #GameDev #IndieGameDev #UnrealEngine #CombatSystem
ความคิดเห็น 0
กำลังโหลดความคิดเห็น...