- เกม TPS สำหรับ Windows จากปี 2003 อย่าง GunZ: The Duel ถูก
→ พอร์ตให้รันบนเบราว์เซอร์ได้ด้วย WebAssembly + WebGL
- ไม่ต้องติดตั้ง แค่เปิด URL ใน Chrome ก็เล่นได้ทันที https://gunz.sigr.io/
- รองรับแทบทุกสภาพแวดล้อม ทั้ง Linux, macOS ไปจนถึงมือถือ
- รักษาโค้ด C++ เดิมไว้โดย แทบไม่ต้องแก้ไข
- โค้ดที่เขียนขึ้นมาใหม่ ราว 99% ถูกสร้างโดย AI
ทำไมสิ่งนี้จึงมีความหมาย
- เกมพีซีแบบเดิม:
- ต้องดาวน์โหลด/ติดตั้ง
- ผูกกับ Windows
- ผลลัพธ์ครั้งนี้:
- รันเกมเดิมแบบเหมือนทุกอย่างบนเบราว์เซอร์
- ไม่ใช่ “การทำขึ้นมาใหม่ให้คล้ายกัน” แต่เป็น การพอร์ตต้นฉบับโดยตรง
- ในอดีตนี่คือสิ่งที่ “เป็นไปได้ในทางทฤษฎี แต่แทบเป็นไปไม่ได้ในทางปฏิบัติ”
ความพยายามในอดีตและความล้มเหลว
- แนวทางในอดีต:
- สร้างเอนจินใหม่ ด้วย JavaScript + Three.js
- ผลลัพธ์:
- สำเร็จแค่ถึงขั้นเรนเดอร์แผนที่
- ความยากของการสร้างเอนจินทั้งหมดขึ้นมาใหม่สูงเกินไปจนต้องหยุด
- ข้อสรุป:
- แนวทางแบบ “สร้างใหม่ทั้งหมด” แทบเป็นไปไม่ได้ในโลกความจริง
ปัญหาหลัก: การพึ่งพา Windows
- GunZ พัฒนาด้วย C++ และ พึ่งพา Direct3D
- ปัญหา:
- Direct3D เป็น API สำหรับ Windows เท่านั้น
- ในเบราว์เซอร์ (WebGL) ไม่สามารถใช้งานโดยตรงได้
- การคอมไพล์เป็น wasm อย่างเดียวจึงไม่พอ
- กล่าวคือ:
- เฉพาะโค้ดที่ไม่ขึ้นกับแพลตฟอร์มเท่านั้นที่ไป wasm ได้
- ส่วนที่ผูกกับกราฟิก API คือกำแพงที่ใหญ่ที่สุด
ข้อจำกัดของแนวทางเดิม
- แก้โค้ดเกมโดยตรง
- ต้องแก้หลายหมื่นบรรทัด
- ดูแลรักษาต่อแทบไม่ได้
- แปลงอัตโนมัติ (D3D → WebGL)
- ด้วยความหมายของ API ที่ต่างกันจึง แปลงเชิงกลตรง ๆ ไม่ได้
- ข้อสรุป:
- ทุกวิธีแบบเดิมไม่สมจริงในการทำงานจริง
ไอเดียหลัก: “ชั้นแปล”
- แนวทาง:
- คงโค้ดเกมเดิมไว้เหมือนเดิม
- ดักจับการเรียก Direct3D
- แล้ว แปลงเป็น WebGL แบบเรียลไทม์
- การทำงานจริง:
- สร้าง WebGL wrapper ที่มีอินเทอร์เฟซเหมือน D3D9 API
- แทรกระหว่างตัวเกม ↔ กราฟิก API
- ผลลัพธ์:
- แทบไม่ต้องแก้โค้ดเกม
- ตัดการพึ่งพา Windows ออก
- จำกัดต้นทุนการพอร์ตให้อยู่ที่ “การทำ wrapper”
บทบาทของ AI
- เครื่องมือที่ใช้:
- Google Antigravity
- Claude Code (แพลน Max)
- ผลลัพธ์:
- ทำงานวิเคราะห์และแก้ไขโค้ดขนาดใหญ่แบบอัตโนมัติ
- ปัญหาที่เคยใช้เวลาหลายสัปดาห์ ถูกแก้ได้ ภายในไม่กี่ชั่วโมง
- เข้ามาทำงานที่ในทางปฏิบัติมนุษย์แทบทำไม่ไหวแทน
- โดยเฉพาะ:
- AI รับหน้าที่หลักในการทำ D3D → WebGL wrapper
สรุปประเด็นสำคัญ
- ไม่ใช่ “สร้างเกมขึ้นมาใหม่”
→ แต่เป็นการ แก้ปัญหาโดยรักษาโค้ดเดิมให้ใช้ต่อได้
- เทคโนโลยีหลัก:
- WebAssembly
- ชั้นแปล Direct3D → WebGL
- การเปลี่ยนแปลงสำคัญ:
- ด้วย AI ทำให้ การพอร์ตระบบ legacy ขนาดใหญ่กลายเป็นงานที่ทำได้จริง
- นัยสำคัญ:
- ในอนาคต ความยากในการพอร์ตเกม/ซอฟต์แวร์เก่าขึ้นเว็บอาจลดลงอย่างมาก
10 ความคิดเห็น
AI ก็ยอดเยี่ยมเหมือนกัน แต่ผมคิดว่าปัจจัยที่ใหญ่กว่าคือ D3D9 ถูกแยกเป็นอินเทอร์เฟซไว้ได้ดี ถ้ามันพันกันด้วยการอ้างอิงโดยตรงก็คงจะยากกว่านี้มากครับ
เหมือนว่าเมื่อวันก่อนผมเห็นบทความใน Inven อยู่ นี่คือการจัดการโดยสร้าง Direct3D translation layer ขึ้นมาสินะ
ตอนลองทดสอบ ตอนที่เล่นไปยังไม่ถึง 1 นาที ผมรู้สึกค่อนข้างแรงเลยว่าคุณภาพภาพไม่ค่อยดีนัก แต่พอมาคิดว่ามันไม่ได้เป็นแนวคิดแบบสร้างใหม่ทั้งหมดตั้งแต่ต้น แต่เป็นการคงของเดิมไว้ผ่าน translation layer ก็พอเข้าใจได้ว่าอาจจะเป็นแบบนั้น...
แต่อย่างไรก็ตาม ดูเหมือนว่าบล็อกต้นฉบับจะตั้งใจดำเนินการในแบบที่ค่อนข้างเสี่ยงนะครับ ควรระบุให้ชัดว่าเป็นบทแปลหรือเป็นต้นฉบับ...ให้ความรู้สึกแรงพอสมควรเหมือนทำตัวราวกับเป็นผู้เขียนเอง...มีคนทักเรื่องนี้ในคอมเมนต์ด้วย แต่ก็ไม่มีคำตอบกลับ
(ตั้งแต่แรกแล้ว บทความอ้างอิงของบล็อกต้นฉบับก็เป็นภาษาญี่ปุ่นทั้งหมดครับ)
อีกจุดที่ฟังไม่สมเหตุสมผลคือ ถ้าอิงราคาฝั่งเกาหลีของ Hanwha จะไม่มีแพลน Anti Gravity ราคา 3,000 วอนต่อเดือนครับ ในภาพต่าง ๆ ก็แสดงเป็นภาษาญี่ปุ่นทั้งหมด แถมบางภาพยังมีภาษาอังกฤษอยู่ด้วย
ถ้าเป็นอย่างนั้น ผมกลับคิดว่าน่าจะเขียนแปลงเป็นภาษาเกาหลีตั้งแต่แรกไปเลยมากกว่า
ที่บอกว่าจ่ายเงินน่ะเป็น 5x แต่ภาพแคปเป็น 20x ก็จริงอยู่แหละ แต่ก็อาจจะเป็นคนที่อาศัยอยู่ญี่ปุ่นก็ได้มั้ง...
พอดูไปดูมาก็มีความรู้สึกเหมือนจะเป็นเจ้าตัวเองอยู่เหมือนกัน
ข้อความที่แสดงตอนเข้าไปที่ sigr.io ก็เป็นเนื้อเพลงของ aespa,
ชื่อโปรเจกต์ Gunz ก็ใช้ชื่อว่า Whiplash Gunz ซึ่งเป็นชื่อเพลงของ aespa,
แถมแฮนด์เดิลบน velog ก็ใช้เป็น
aespaอย่างสม่ำเสมอ เลยให้ความรู้สึกว่าเจ้าตัวชอบ aespa แบบจริงจัง จนแอบคิดเหมือนกันว่า หรือว่าเจ้าตัวเป็นคนเอาไปแปลแล้วโพสต์ลง velog เองนะ?ไม่ใช่เจ้าตัวที่ทำเองสินะ
แต่เวอร์ชัน Steam ของ GunZ ก็ออกวางจำหน่ายแล้วนี่.. เลยสงสัยว่าทางกฎหมายจะไม่มีปัญหาเหรอครับ
ว้าว สุดยอดจริง ๆ ครับ
เป็นเกมที่ชอบมากจริงๆ ขอบคุณที่ช่วยชุบชีวิตมันขึ้นมาอีกครั้ง
แต่เหมือนไม่มีคนเข้าเล่นเลยนะ
น่าจะเป็นเพราะเซิร์ฟเวอร์ก็รันอยู่ในเบราว์เซอร์ด้วยครับ ถ้าจะเล่นกันหลายคน ดูเหมือนว่าคนที่จะเล่นต้องแลกเปลี่ยนข้อมูลกันเองแล้วเชื่อมต่อกันผ่าน WebSocket ครับ
ยอดเยี่ยมมากครับ ดูเหมือนเป็นการนำ AI มาใช้งานได้อย่างแท้จริง