Babylonian Twins คือเกม Amiga 500 ที่ออกในปี 1993 เขียนด้วย 68000 assembly ล้วนๆ ไม่มีซอร์สโค้ดภาษาอื่นเจือปน ผู้พัฒนาต้นฉบับตัดสินใจพอร์ตมันมา Godot 4 โดยให้ Claude รุ่น Fable 5 ที่ทำงานผ่าน Claude Code เข้าถึงไฟล์ต้นฉบับได้โดยตรง เพื่อช่วยไล่อ่านโค้ดเครื่องกว่า 72,758 บรรทัดที่กระจายอยู่ใน 26 ไฟล์
โจทย์ไม่ใช่แค่แปลงเกมให้รันได้บนเอนจินใหม่ แต่คือการตัดสินใจทีละจุดว่า logic ไหนควรรักษาไว้ตามต้นฉบับ ส่วนไหนควรเขียนใหม่ให้เข้ากับ Godot และจังหวะหรือข้อจำกัดแบบไหนที่เคยเป็นเอกลักษณ์ของเกมจนไม่ควรทิ้งไป
Babylonian Twins คือเกมอะไร ทำไมถึงคุ้มค่าจะปลุกกลับมา
Babylonian Twins เป็นเกมพัซเซิลแพลตฟอร์มที่ให้ผู้เล่นควบคุมตัวละครสองตัวพร้อมกัน วางขายเฉพาะบน Amiga 500 ในปี 1993 และไม่เคยมีเวอร์ชันพอร์ตอย่างเป็นทางการมาก่อน ทำให้ตัวเกมผูกติดกับฮาร์ดแวร์ยุคนั้นแทบทุกจุด ตั้งแต่จังหวะการวาดสไปรต์ไปจนถึงเอฟเฟกต์ copper list ที่ไล่สีท้องฟ้าและทำน้ำเป็นคลื่น

เกมแบบนี้แหละที่เป็นด่านทดสอบที่ดีของแนวคิด “ให้ LLM อ่านโค้ดเครื่องแทนคน” เพราะไม่มีเอกสารประกอบเหลืออยู่เลย มีแต่ไฟล์ assembly กับพฤติกรรมที่เห็นบนจอ
โจทย์จริง: assembly 68000 กว่า 7 หมื่นบรรทัดที่ไม่มีคอมเมนต์สักบรรทัด
โค้ดต้นฉบับทั้งหมด 72,758 บรรทัด กระจายอยู่ใน 26 ไฟล์ ไม่มีคอมเมนต์อธิบายเจตนาแม้แต่บรรทัดเดียว การแก้บั๊กหรือทำความเข้าใจกติกาเกมต้องอาศัยการเดาจากพฤติกรรมที่เห็นบนหน้าจอมากกว่าอ่านโค้ดตรงๆ แค่จะเปลี่ยนภาพหรือปรับเมนูก็เสี่ยงกระทบระบบอื่นโดยไม่รู้ตัว
ตรงนี้เองที่ Claude เข้ามามีบทบาท มันไล่อ่านคำสั่งทีละบล็อก อธิบายว่าค่าตัวแปรแต่ละตัวถูกใช้ทำอะไร และช่วยตามรอยเงื่อนไขของศัตรู การชน หรือจังหวะเปลี่ยนฉาก ให้กลายเป็นคำอธิบายที่มนุษย์อ่านแล้วเข้าใจได้ ก่อนจะนำไปเขียนใหม่เป็น GDScript
Claude อ่านโค้ดเครื่องแล้วแปลงเป็นระบบ Godot ได้แม่นแค่ไหน
ผลลัพธ์ที่ชัดที่สุดคือแผนที่ทั้งห้าด่านถูกดึงออกมาสร้างใหม่ได้ตรงกับต้นฉบับแบบพิกเซลต่อพิกเซล เมื่อเทียบกับภาพจับหน้าจอเก่าก็ไม่มีจุดต่างเลย เอฟเฟกต์ copper list อย่างไล่สีท้องฟ้าและคลื่นน้ำก็ถูกถอดรหัสกลับมาได้ รวมถึงสไปรต์แบบ planar ที่ต้องตีความทิศทางเฟรมซึ่งเดิมทีกำกวมมาก

ทีมงานยังใช้ vasm ประกอบไฟล์ 1993 ต้นฉบับกลับมาเทียบ จนได้ไบนารีที่ตรงกับของเดิมทุกไบต์ ซึ่งช่วยยืนยันว่าความเข้าใจที่ Claude สรุปออกมานั้นตรงกับพฤติกรรมจริงของเกม ไม่ใช่แค่การเดาที่ฟังดูสมเหตุสมผล
สิ่งที่เปลี่ยนไปเทียบกับต้นฉบับปี 1993
| Factor | Amiga 500 ต้นฉบับ (1993) | เวอร์ชัน Godot 4 |
|---|---|---|
| ความถี่รีเฟรช | 50Hz ตามฮาร์ดแวร์เดิม | 60Hz พร้อมโหมดคลาสสิกให้เลือกเล่นแบบ 50Hz |
| แผนที่และภาพ | สไปรต์และ copper list ของ Amiga | สร้างใหม่ตรงกับต้นฉบับระดับพิกเซล |
| การควบคุม | จอยสติ๊กและคีย์บอร์ดยุค 90s | รองรับเกมแพดและอุปกรณ์ปัจจุบัน |
| แพลตฟอร์ม | จำกัดเฉพาะ Amiga 500 | iOS, Android, และ Steam (Windows/Mac/Linux) |
| โครงสร้างโค้ด | 68000 assembly 72,758 บรรทัด | ฉากและสคริปต์ GDScript ที่แก้ไขได้ง่ายกว่า |
| เวอร์ชันต้นฉบับ | - | แนบเกมปี 1993 ตัวจริงไว้เป็นโหมดโบนัส |
เวอร์ชัน iOS และ Android เปิดให้เล่นแล้ว ส่วน Steam จะตามมาในช่วงปลายปี 2026 พร้อมเดโมให้ทดลองก่อน จุดที่น่าสนใจคือทีมงานแนบเกมปี 1993 ตัวจริงไว้เป็นโหมดโบนัสในเวอร์ชันใหม่ด้วย ไม่ใช่แค่ทำวิดีโอเปรียบเทียบให้ดูเฉยๆ
บั๊กเก่าที่โผล่มาระหว่างการพอร์ต
การให้ Claude ไล่อ่านโค้ดทีละบรรทัดยังเผยบั๊กที่ซ่อนอยู่ในเวอร์ชันต้นฉบับมานานสามทศวรรษ เช่น AI ของทหารยามที่สามารถทำดาเมจผู้เล่นทะลุผ่านหินทึบได้ในบางจังหวะ และจุดที่ข้อความสอนวิธีเล่นบนประตูทางออกของด่านแรกไม่เคยแสดงผลจริง

บั๊กแบบนี้ไม่มีทางเจอได้ถ้าแค่เล่นเทียบสองเวอร์ชันเฉยๆ ต้องอาศัยการอ่านเงื่อนไขในโค้ดจริงถึงจะรู้ว่าอะไรคือพฤติกรรมที่ตั้งใจ กับอะไรคือบั๊กที่หลุดมาตั้งแต่ปี 1993
ถ้าไม่ใช้ Godot กับ LLM มีทางเลือกอะไรบ้าง
| Factor | Godot + Claude | จำลองฮาร์ดแวร์เดิม | เอนจินเชิงพาณิชย์ | Reverse engineer ไม่ใช้ LLM |
|---|---|---|---|---|
| ความแม่นยำ | สูง เมื่อตรวจสอบกับไบนารีต้นฉบับ | สูงมาก | ขึ้นกับการเขียนใหม่ | สูง แต่ใช้แรงคนมาก |
| เวลาในการพัฒนา | เร็วขึ้นชัดเจน | นาน | ปานกลางถึงนาน | นานมาก |
| การควบคุมผลลัพธ์ | สูง เพราะเขียนใหม่เป็นโค้ดที่แก้ได้ | จำกัดด้วยข้อจำกัดฮาร์ดแวร์เดิม | ปานกลาง | สูง แต่ต้องเข้าใจเองทั้งหมด |
| ดูแลระยะยาว | ง่ายกว่า เพราะโค้ดอ่านออก | ยากขึ้นเรื่อยๆ เมื่อเครื่องมือเก่าหายาก | ขึ้นกับใบอนุญาตเอนจิน | ขึ้นกับเอกสารที่ทำไว้ |
การจำลองฮาร์ดแวร์เดิมยังให้ความแม่นยำสูงสุดถ้าต้องการประสบการณ์ต้นฉบับแบบเป๊ะทุกจุด แต่ดูแลรักษายากขึ้นเรื่อยๆ เมื่อเครื่องมือและความรู้เกี่ยวกับ Amiga หายากขึ้น ส่วนการ reverse engineer เองโดยไม่พึ่ง LLM ให้การควบคุมผลลัพธ์สูงเท่ากัน แต่ต้องแลกกับเวลาที่มากกว่าหลายเท่า
จุดแข็งที่เห็นชัด และข้อจำกัดที่ต้องยอมรับ
การให้ Claude อ่าน 68000 assembly ช่วยร่นเวลาทำความเข้าใจโค้ดเก่าที่ไม่มีเอกสารได้มาก และยังช่วยเจอบั๊กที่ซ่อนอยู่มาสามสิบปี แต่คำอธิบายที่ได้ก็ยังต้องผ่านการตรวจสอบกับไบนารีจริงทุกจุด อย่างที่ทีมงานใช้ vasm รีบิลด์เทียบให้ตรงกันแบบไบต์ต่อไบต์ ผมว่านี่คือขั้นตอนที่ขาดไม่ได้เลยครับ เพราะถ้าข้ามไปจะแยกไม่ออกเลยว่าอะไรคือพฤติกรรมเดิม กับอะไรคือความเข้าใจผิดที่หลุดเข้ามาระหว่างพอร์ต
ข้อดี
- +อ่าน 68000 assembly กว่า 7 หมื่นบรรทัดและสรุปพฤติกรรมเกมได้เร็วกว่าคนไล่เอง
- +ช่วยเจอบั๊กเดิมที่ซ่อนอยู่ในโค้ดมานานสามสิบปี เช่น AI ทหารยามที่ทำดาเมจทะลุกำแพง
ข้อเสีย
- −คำอธิบายของ LLM อาจผิด ต้องตรวจกับไบนารีต้นฉบับทุกจุดสำคัญ
- −แยกบั๊กจากโค้ดเดิมกับบั๊กที่เกิดระหว่างพอร์ตยังต้องใช้แรงคนตรวจสอบมาก
บทเรียนจากการชุบชีวิตเกมเก่าด้วย LLM
Babylonian Twins แสดงให้เห็นว่า LLM อย่าง Claude ทำหน้าที่ได้มากกว่าแค่แปลงโค้ดให้รันได้ มันช่วยตีความเจตนาของผู้สร้างเดิมที่ไม่มีเอกสารเหลืออยู่แล้ว และยังช่วยขุดบั๊กที่ซ่อนมาตั้งแต่ยุคที่เกมยังทดสอบด้วยมือล้วนๆ
สิ่งที่ยังต้องมีอยู่เสมอคือคนที่คอยตัดสินใจว่าอะไรควรรักษา อะไรควรเขียนใหม่ และอะไรอาจหายไปได้ระหว่างทาง สำหรับใครที่มีเกมเก่าค้างคาใจอยู่ นี่อาจเป็นจังหวะที่เหมาะจะเริ่มบันทึกว่าโค้ดทำงานอย่างไร ก่อนที่ไฟล์ต้นฉบับและความทรงจำของคนทำจะหายไปจริงๆ