Pokemon Battle Engine เผชิญการถกเถียงระหว่างความแม่นยำกับความถูกต้องแท้จริงในช่วงการพัฒนาเริ่มต้น

BigGo Editorial Team
Pokemon Battle Engine เผชิญการถกเถียงระหว่างความแม่นยำกับความถูกต้องแท้จริงในช่วงการพัฒนาเริ่มต้น

โปรเจกต์ pkmn/engine ซึ่งเป็นโปรแกรมจำลองการต่อสู้ Pokemon แบบโอเพนซอร์สที่ทะเยอทะยานและเขียนด้วยภาษา Zig ได้จุดประกายการถกเถียงอย่างเข้มข้นเกี่ยวกับการที่โปรแกรมสมัยใหม่ควรจะสร้างบั๊กและความแปลกประหลาดของเกม Pokemon ต้นฉบับขึ้นมาใหม่อย่างซื่อสัตย์เพียงใด ปัจจุบันเอนจินนี้รองรับเฉพาะกลไกของ Generation 1 โดยมีเป้าหมายที่จะให้ทางเลือกที่มีประสิทธิภาพสูงแทนโปรแกรมจำลองที่มีอยู่ ขณะเดียวกันก็ต้องต่อสู้กับคำถามพื้นฐานเกี่ยวกับความถูกต้องแท้จริงของเกม

ข้อกำหนดทางเทคนิค:

  • ภาษา: เขียนด้วย Zig พร้อม TypeScript bindings
  • APIs: รองรับ C API และ JavaScript/TypeScript
  • ความเข้ากันได้: ต้องใช้ Zig compiler เวอร์ชันเฉพาะ (แนะนำเวอร์ชันก่อน 0.12.0-dev.876+aaf46187a)
  • ใบอนุญาต: MIT License

ปัญหาความถูกต้องแท้จริง

การถกเถียงหลักมุ่งเน้นไปที่บั๊กของเกมต้นฉบับตัวใดที่ควรจะรักษาไว้และตัวใดที่ควรจะแก้ไขเพื่อการเล่นเกมที่ดีขึ้น นักพัฒนาของเอนจินได้ใช้แนวทางที่มีความละเอียดอ่อน โดยเลือกที่จะสร้างบั๊กที่เกิดจากการใช้งานเอฟเฟกต์เฉพาะขึ้นมาใหม่ แต่หลีกเลี่ยงบั๊กที่เกิดจากความเข้าใจผิดในกลไกพื้นฐานหรือข้อจำกัดทางสถาปัตยกรรม

สมาชิกในชุมชนแบ่งความคิดเห็นกันอย่างเฉพาะเจาะจงเกี่ยวกับบั๊กที่มีชื่อเสียงหลายตัวของ Generation 1 ปัญหาต่างๆ เช่น การ desync ในโหมดผู้เล่นหลายคน การใช้ประโยชน์จากช่องโหว่ความไม่ตายในระหว่างท่า Fly และ Dig ขณะที่เป็นอัมพาต และกลไก Focus Energy ที่เสีย ล้วนนำเสนอตัวเลือกที่ยากลำบาก บางคนโต้แย้งว่าบั๊กเหล่านี้เป็นสิ่งจำเป็นสำหรับการเล่นเกมที่แท้จริง ในขณะที่คนอื่นๆ ยืนยันว่าบั๊กเหล่านี้ทำร้ายประสบการณ์ผู้เล่นโดยไม่เพิ่มคุณค่าที่มีความหมาย

บั๊กต่างๆ เช่น normal body slam para invuln, amnesia reapplying speed drops และ toxic counter bugs, 1/256 miss chance, focus energy bugs ผมคาดหวังว่าจะยังคงอยู่ หากบั๊กเหล่านั้นถูกแก้ไข โปรเจกต์นี้จะเข้าไปในเขตของ natdex, Create A Pokemon หรือ Custom Metas ซึ่งก็คือเกมแฟนเมดที่แต่งขึ้นซึ่งไม่เคยมีอยู่ในตลับเกม

สถาปัตยกรรมทางเทคนิคและเป้าหมายประสิทธิภาพ

แนวทางหลายภาษาของโปรเจกต์นี้รวม Zig สำหรับประสิทธิภาพหลักเข้ากับ TypeScript bindings สำหรับการเข้าถึงเว็บ ตัวเลือกการออกแบบนี้มีเป้าหมายที่จะส่งมอบความเร็วในการคำนวณที่จำเป็นสำหรับการฝึก AI และการจำลองทัวร์นาเมนต์ ขณะเดียวกันก็รักษาความเข้ากันได้อย่างกว้างขวางในแพลตฟอร์มต่างๆ เอนจินเปิดเผยทั้ง C APIs สำหรับการรวมแบบ native และ JavaScript interfaces สำหรับแอปพลิเคชันที่ใช้เบราว์เซอร์

อย่างไรก็ตาม โปรเจกต์นี้ปัจจุบันต้องการ Zig compiler เวอร์ชันเฉพาะเจาะจงเนื่องจากปัญหาความเข้ากันได้ที่กำลังดำเนินอยู่ ซึ่งเน้นย้ำถึงความท้าทายในการสร้างบน toolchains ที่พัฒนาอย่างรวดเร็ว นักพัฒนาได้รวม compiler patches โดยตรงในต้นไม้ซอร์สของพวกเขา ซึ่งแสดงให้เห็นว่าพวกเขากำลังหาทางแก้ไขบั๊กที่ยังใช้งานอยู่ในระบบนิเวศ Zig

แผนงานการพัฒนาและข้อจำกัดปัจจุบัน

เอนจินปฏิบัติตามแนวทางการพัฒนาแบบเป็นขั้นตอน โดยงานพื้นฐานเสร็จสิ้นส่วนใหญ่แล้วและการใช้งาน Generation 1 และ 2 กำลังดำเนินการอยู่ในปัจจุบัน ทีมงานได้ปฏิเสธคุณสมบัติบางอย่างอย่างชัดเจน รวมถึงการบังคับใช้กฎแบบกำหนดเอง รูปแบบการต่อสู้นอกเหนือจากรูปแบบมาตรฐาน และการสนับสนุนระดับแรกสำหรับการปรับแต่งเกม

ขอบเขตที่มุ่งเน้นนี้สะท้อนถึงแนวทางที่ปฏิบัติได้จริงต่อปัญหาที่ซับซ้อน แต่ก็หมายความว่าเอนจินจะไม่ให้บริการผู้ใช้ที่มองหาตัวเลือกการปรับแต่งที่กว้างขวางหรือโหมดการเล่นเกมที่ไม่ใช่มาตรฐาน

ขั้นตอนการพัฒนา:

  • ขั้นตอนที่ 0: เอกสาร การรวมระบบ การทดสอบประสิทธิภาพ โปรโตคอล (เสร็จสมบูรณ์เกือบหมดแล้ว)
  • ขั้นตอนที่ 1: การใช้งาน RBY & GSC (อยู่ระหว่างดำเนินการ)
  • ขั้นตอนที่ 2: ADV & DPP
  • ขั้นตอนที่ 3: เจเนอเรชั่นสมัยใหม่

การตอบรับจากชุมชนและแนวโน้มในอนาคต

โปรเจกต์นี้ได้ดึงดูดความสนใจจากทั้งผู้เล่น Pokemon แข่งขันและนักพัฒนาที่ทำงานกับ AI agents สำหรับการต่อสู้ Pokemon การอนุญาต MIT และความพร้อมใช้งานของ C API ได้รับการตอบรับอย่างดีเป็นพิเศษจากนักพัฒนาที่ต้องการรวมเอนจินเข้ากับโปรเจกต์เชิงพาณิชย์โดยไม่มีข้อจำกัด copyleft

ขณะที่เอนจินก้าวหน้าผ่านขั้นตอนการพัฒนา การถกเถียงเรื่องความถูกต้องแท้จริงที่กำลังดำเนินอยู่น่าจะทวีความรุนแรงขึ้น การตัดสินใจของทีมเกี่ยวกับบั๊กในอดีตตัวใดที่จะรักษาไว้จะส่งผลกระทบอย่างมีนัยสำคัญต่อการยอมรับเอนจินในชุมชนต่างๆ ตั้งแต่ speedrunners ที่แสวงหาความแม่นยำที่สมบูรณ์แบบไปจนถึงผู้เล่นแข่งขันที่ให้ความสำคัญกับการเล่นเกมที่สมดุล

pkmn/engine เป็นตัวอย่างกรณีศึกษาที่น่าสนใจในการที่นักพัฒนาสมัยใหม่เข้าหาระบบเกมเก่า โดยสร้างสมดุลระหว่างความซื่อสัตย์ทางประวัติศาสตร์กับความคาดหวังด้านการใช้งานร่วมสมัย

อ้างอิง: pkmn/engine