• โปรเจกต์ที่เปลี่ยนบทสนทนาแบบซ้ำ ๆ ของเกมคลาสสิก Animal Crossing (GameCube, 2001) ให้เป็น บทสนทนา LLM บนคลาวด์แบบเรียลไทม์
  • เชื่อมเกมกับสคริปต์ Python ภายนอกและ AI ผ่าน การแฮ็กหน่วยความจำและวิธี shared memory (mailbox) โดยไม่แก้โค้ดเกม
  • ข้อความในเกมไม่ได้ถูกจัดการเป็นสตริงธรรมดา แต่เป็น ภาษาควบคุมพิเศษ จึงแก้ปัญหาด้วยการสร้างตัวเข้ารหัสและถอดรหัสแยกต่างหาก
  • การสร้างบทสนทนาถูกแยกเป็น Writer (เขียนบทพูดเชิงสร้างสรรค์) และ Director (เพิ่ม control code และการแสดงออก) เพื่อคงคุณภาพ
  • ผลลัพธ์คือชาวบ้านในหมู่บ้านสามารถพูดคุยแบบ AI ที่คาดเดาไม่ได้ ซึ่งสะท้อนทั้งข่าวลือ ข่าวสาร และเสียดสี ทำให้เกมคลาสสิกมีชีวิตชีวาขึ้นอีกครั้ง
  • โค้ดโปรเจกต์เปิดเผยบน GitHub

นิยามปัญหา

  • Animal Crossing มีเสน่ห์แต่ก็ขึ้นชื่อเรื่องบทสนทนาที่ซ้ำไปซ้ำมา และแม้จะผ่านไป 23 ปี บทพูดก็ไม่เปลี่ยน จึงเกิดแนวคิดว่าจะเปลี่ยนมันอย่างพลิกโฉมได้อย่างไร
  • ปัญหาคือ GameCube เป็นสภาพแวดล้อมแบบปิดที่มี CPU 485MHz, RAM 24MB และไม่รองรับเครือข่าย
  • ต้องคงเกมต้นฉบับไว้เหมือนเดิมโดยไม่แก้ไขโค้ด
  • เป้าหมายคือสร้างบริดจ์เพื่อแทนที่บทสนทนาที่ซ้ำซากด้วย LLM สมัยใหม่

ขั้นแรก: แฮ็กระบบบทสนทนา

  • ด้วย การดีคอมไพล์ Animal Crossing ของชุมชน จึงสามารถเข้าถึงโค้ด C ได้
  • ประสบความสำเร็จในการ แทนที่ข้อความบทสนทนา โดย hook การเรียกฟังก์ชันในไฟล์ m_message.c
  • แต่ยังเหลือโจทย์ว่าจะรับส่งข้อมูลกับ AI ภายนอกแบบเรียลไทม์ได้อย่างไร

วิธี mailbox บนหน่วยความจำ

  • ใช้พื้นที่บางส่วนของ RAM บน GameCube เป็น IPC mailbox
  • สคริปต์ Python ทำ การเขียน/อ่านโดยตรงที่แอดเดรสหน่วยความจำ → ใช้สื่อสารระหว่างเกมกับ AI
  • เขียนตัวสแกนหน่วยความจำเพื่อหาแอดเดรสของ ชื่อผู้พูด (0x8129A3EA), บัฟเฟอร์บทสนทนา (0x81298360)

ภาษาของ control code

  • หากส่งสตริงธรรมดาเข้าไป เกมจะ ค้าง
  • สาเหตุคือ Animal Crossing ใช้ ภาษาที่อิงกับ control code เช่น <End Conversation>, <Pause>, <Color Line>
  • จึงเขียน encoder/decoder ด้วย Python เพื่อแปลงระหว่างข้อความที่มนุษย์อ่านเข้าใจกับลำดับไบต์ที่เกมเข้าใจ

การพิจารณาทางเลือกด้านเครือข่าย

  • แม้จะมี Broadband Adapter สำหรับ GameCube แต่ Animal Crossing ไม่มี network stack
  • หากจะใช้ BBA ต้องเพิ่มทั้ง network stack และ asynchronous I/O จึงไม่คุ้มค่า
  • จึงตัดสินว่า การแฮ็กหน่วยความจำผ่านอีมูเลเตอร์ เรียบง่ายและเสถียรกว่า

ไปป์ไลน์ AI

  • ตอนแรกให้ LLM ตัวเดียว รับผิดชอบทั้งงานสร้างสรรค์และ control code แต่มีปัญหาด้านคุณภาพมาก จึงเลือกกลยุทธ์ แยก Writer-Director
    • Writer: สร้างบทพูดเชิงสร้างสรรค์ตามบุคลิกของตัวละคร (ใช้ข้อมูลจากแฟนวิกิ)
    • Director: อ่านบทพูดแล้วแทรก control code, สีหน้า, สี, เสียง ที่เหมาะสม
  • ไปป์ไลน์ LLM สองขั้นตอน นี้แยกความคิดสร้างสรรค์ของ AI ออกจากข้อกำหนดทางเทคนิค เพื่อใช้จุดแข็งของแต่ละส่วน
  • การแยกบทบาทนี้ช่วยให้ได้คุณภาพที่เสถียร

ผลลัพธ์และการต่อยอด

ความสำคัญ

  • เป็นโปรเจกต์ทดลองที่ผสาน การแฮ็กคอนโซลเรโทร, การรวม AI และการอนุรักษ์เกม เข้าด้วยกัน
  • เชื่อมเกมจากปี 2001 เข้ากับ AI ปี 2025 เพื่อสร้าง ปฏิสัมพันธ์ข้ามยุคสมัย
  • เกมไม่ใช่แค่บทสนทนาซ้ำ ๆ อีกต่อไป แต่พัฒนาเป็น โลกเสมือนที่มีชีวิต
  • กระบวนการพัฒนาทั้งหมด/วิดีโอเดโม: Modern AI in a 24-Year-Old Game

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น