การลบโค้ด

ตอนนี้ผมกำลังทำเกมให้เป็น ECS กับ C# Jobs ใหม่ของ Unity อยู่ เพราะเกมผมมีฉากสำคัญ reuse แทบตลอดอยู่ฉากนึง (ฉากเล่น)

การลบโค้ด

ตอนนี้ผมกำลังทำเกมให้เป็น ECS กับ C# Jobs ใหม่ของ Unity อยู่ เพราะเกมผมมีฉากสำคัญ reuse แทบตลอดอยู่ฉากนึง (ฉากเล่น) ที่ถ้าเร็วที่สุดเท่าที่เป็นไปได้จะดีมากๆ

เมื่อย้ายโค้ดจาก MonoBehaviour มาเข้าสู่โลก ECS ก็ถึงเวลาปะติดปะต่อ ค่อยๆอพยพ เอา ECS ไปต่อไว้หลัง Update ก่อน แล้วเอาที่เหลือที่เคยอยู่ Update ไปที่ LateUpdate จะได้รับผลคำนวณได้ ตัวแปรที่เคยเป็นตัวแปรเก็บค่าก็กลายเป็น get set ถามข้อมูลจาก EntityManager แทน

เมื่อ logic ค่อยๆย้ายไป JobComponentSystem / ComponentSystem ก็จะมีจุดนึงที่มี logic ซ้ำกันสองที่ แล้วก็ถึงเวลา “สับสวิตซ์” เปลี่ยนโลก แล้วให้ที่เหลือที่อยู่ข้างหลังเหมือนเดิมดูซิว่าจะเล่นได้มั้ย พอไม่ได้ (ไม่มีตอนไหนหรอกที่ได้เลย 555) ก็ต้องมา print debug ค่า output ของสองระบบประชันกันหน่อย

และพอในที่สุดค่าเท่ากัน ก็ถึงเวลา ลบโค้ดเก่า… โดยที่ตัวที่อยู่ข้างหลังคงไม่ได้รู้สึกตัวเลย ว่าเพื่อนเก่าของมันเปลี่ยนเป็นคนใหม่แล้วนะ

ตั้งแต่ทำเกมนี้มาตั้งแต่เรียนโทอยู่ญี่ปุ่น โค้ดก็อัพเกรดแบบ band-aid มาเรื่อยๆ (แล้วก็มารู้ทีหลังเดือนนี้แหละ ว่าที่ตัวเองพยายาม optimize มันเป็นเกือบๆ ECS แต่อยู่ในกรอบ OOP) โค้ดไหนนรกก็แตะแค่พอแก้ได้ มาช่วงนี้แหละเกิด diff ลบโค้ดที่ใหญ่ที่สุดตั้งแต่ทำเกมนี้มา

ก็เลยมีเรื่องราวมาเล่า ตอนผมกำลังจะกดลบนี่ ใจมันหยุดกึกนิดๆจนรู้สึกได้ ไม่เคยรู้สึกแบบนี้ตอนเขียนโค้ดมาก่อนเลยครับ

ยิ่งพอเห็นคอมเมนต์ที่ตัวเองเขียนไว้ก็ระลึกได้ ไอ้บรรทัดนี้มันอายุ 2 ปีแล้วนี่นะ ตอนนั้นเรากินข้าวผัดทำเองอยู่ในห้องเช่าเล็กๆที่มหาลัยนาระนี่นะ แล้วยังมีที่โดดปาร์ตี้กับเพื่อนกลับก่อนเพราะอยากมาทำเกม ดูซะ introvert เชียว แล้วก็มีตอนที่เอาเข็มกลัดไปแจกคนที่ส่งเพลงมาประกวดถึงมือที่ญี่ปุ่น ตอนนั้นก็ทำโค้ดตรงนั้นตรงนี้ แล้วก็สำคัญที่สุดตอนไปสอบภาษาที่ญี่ปุ่นแล้วหนีออกมาก่อนเพราะทำไม่ได้อยู่ไปก็เสียเวลา ขากลับเดินมาระหว่างทางเกิดไอเดีย reform เกมเพลย์ครั้งใหญ่ซะงั้น จนกลายเป็นแบบที่อยู่หน้าจอตอนนี้ มองกลับไปแล้วแบบตอนนี้สนุกกว่ามากเลย อา การจะลบโค้ดนี่มัน emotional จังเลย

ถึงเวลาจากกันแล้วก็เศร้าเหมือนกันแฮะ แต่ยังไงพวกนายก็คงอยู่ในซัก blob นึงใน git repo ไปตลอดกาล วันไหนคิดถึงเราอาจจะไปหา

ปล. ยังมีฟังก์ชั่นสำคัญที่สุดและวางอยู่ท้ายสุดคือฟังก์ชั่นวาด ที่ถ้า ECS แล้วคงได้ความแตกต่างมากแต่ยังทำใจไม่ได้ ขอเก็บอันเล็กๆก่อนหน้าก่อน 555