- โปรเจกต์นี้พอร์ตเกมคลาสสิกปี 1993 อย่าง DOOM ให้รันบน หูฟังไร้สาย PineBuds Pro และสามารถเล่นระยะไกลผ่านเว็บได้
- ประกอบด้วย 4 องค์ประกอบ ได้แก่ serial server ที่เชื่อมต่อหูฟังกับเว็บเซิร์ฟเวอร์, เว็บเซิร์ฟเวอร์, หน้าเว็บแบบสแตติก, และ DOOM port
- ใช้การเชื่อมต่อ UART เพื่อให้ได้แบนด์วิดท์ราว 2.4Mbps และส่งภาพด้วย MJPEG stream จนทำประสิทธิภาพเชิงทฤษฎีได้สูงสุด 27FPS
- โอเวอร์คล็อก CPU จาก 100MHz เป็น 300MHz และด้วยข้อจำกัดของ JPEG encoding จึงทำประสิทธิภาพจริงได้ราว 18FPS
- แก้ข้อจำกัดด้าน RAM·FLASH ด้วยการปรับแต่งและใช้ไฟล์ Squashware WAD แบบลดขนาด แสดงให้เห็นศักยภาพของการทดลองฮาร์ดแวร์บนพื้นฐานเฟิร์มแวร์โอเพนซอร์ส
ภาพรวมของโปรเจกต์
- พอร์ต DOOM ที่ออกในปี 1993 ให้รันบนหูฟัง PineBuds Pro
- PineBuds Pro ถูกกล่าวถึงว่าเป็นหูฟังไร้สายเพียงรุ่นเดียวที่รองรับ เฟิร์มแวร์โอเพนซอร์ส
- ผู้ที่เข้าเว็บไซต์สามารถเข้าคิวเพื่อเล่นเกมจากระยะไกลได้
- โปรเจกต์ประกอบด้วย 4 ส่วน
- DOOM port ที่รันอยู่บนหูฟัง
- serial server ที่เชื่อมต่อหูฟังกับเว็บเซิร์ฟเวอร์ และแปลง MJPEG stream ไปเป็น Twitch
- เว็บเซิร์ฟเวอร์ ที่ทำหน้าที่ให้บริการแอสเซ็ต จัดการคิว ส่งต่อการกดปุ่ม และแสดงสตรีม
- หน้าเว็บแบบสแตติก ที่ทำหน้าที่แสดงผลบนเบราว์เซอร์และสื่อสารกับเซิร์ฟเวอร์
ฮาร์ดแวร์และโครงสร้างการเชื่อมต่อ
- หูฟังไม่มีจอแสดงผล จึงรับส่งข้อมูลผ่าน Bluetooth หรือ แผ่นสัมผัส UART
- Bluetooth ช้ากว่าที่ราว 1Mbps จึงเหมาะน้อยกว่า UART(2.4Mbps)
- เฟรมบัฟเฟอร์ของ DOOM มีความละเอียด 320×200 สี 8 บิต คิดเป็นประมาณ 96KB
- หากอิงตามแบนด์วิดท์ของ UART จะส่งได้ราว 3FPS
- เพื่อแก้ปัญหานี้จึงเลือกใช้ MJPEG stream
- ใช้ bitbank2/JPEGENC เป็น JPEG encoder
- ขนาดเฟรม JPEG โดยเฉลี่ยอยู่ที่ 11~13.5KB
- ในทางทฤษฎี FPS สูงสุดอยู่ที่ราว 22~27FPS
การปรับประสิทธิภาพ CPU
- คล็อก CPU ของเฟิร์มแวร์เดิมอยู่ที่ 100MHz แต่ถูก เพิ่มเป็น 300MHz และปิดการทำงานโหมดประหยัดพลังงาน
- Cortex-M4F(300MHz) เพียงพอสำหรับการรัน DOOM แต่เกิดคอขวดที่ JPEG encoding
- อัตราเฟรมจริงอยู่ที่ประมาณ 18FPS
การปรับแต่งหน่วยความจำ (RAM)
- RAM ที่เข้าถึงได้ตามปกติมี 768KB และจะได้ 992KB เมื่อปิดใช้งานโปรเซสเซอร์เสริม
- DOOM ต้องการ RAM 4MB จึงต้องมีการปรับแต่งหลายอย่าง
- ประหยัดหน่วยความจำด้วยวิธีอย่าง สร้าง lookup table ล่วงหน้า, เก็บตัวแปร const ลงแฟลช, ปิดระบบแคช, และ ลบตัวแปรที่ไม่จำเป็น
ปัญหาความจุแฟลช (FLASH)
- ไฟล์ WAD พื้นฐานของ DOOM 1 มีขนาด 4.2MB ซึ่งเกินขีดจำกัดพื้นที่เก็บข้อมูล 4MB ของหูฟัง
- แก้ปัญหาด้วยการใช้ Squashware WAD(1.7MB) เวอร์ชันลดขนาดของ fragglet
- ทำให้สามารถเก็บแอสเซ็ตทั้งหมดไว้ในแฟลชได้
โอเพนซอร์สและการเข้าถึง
- โค้ดของโปรเจกต์ถูกเผยแพร่ใน GitHub 2 รีโพซิทอรี
- เว็บไซต์ให้บริการแบบเข้าคิว และตั้งแต่ลำดับที่ 5 เป็นต้นไป Twitch stream จะเปลี่ยนเป็น MJPEG stream แบบหน่วงต่ำ
5 ความคิดเห็น
"มันรัน DOOM ได้"
เหล่ายอดฝีมือแห่ง DOOM นี่... สุดยอดกันจริง ๆ
ว้าว อันนี้มันแบบ... สุดจัดเลย 55555
โอ้พระเจ้า
ความเห็นจาก Hacker News
ทุกครั้งที่เห็น DOOM รันได้บนอุปกรณ์เรียบง่ายอะไรก็ตาม ฉันก็อดคิดไม่ได้ว่านี่คือชัยชนะของซอฟต์แวร์ หรือเป็นความล้มเหลวทางเศรษฐกิจที่เราไม่สามารถสร้าง ฮาร์ดแวร์เฉพาะทาง ที่ถูกกว่านี้ได้กันแน่
หูฟังบลูทูธ ANC ไม่ใช่ผลิตภัณฑ์ง่าย ๆ และ การตัดเสียงรบกวน ต้องคำนวณที่ซับซ้อนอย่างต่อเนื่อง
MCU ที่เร็วไม่ใช่แค่ความสิ้นเปลือง แต่มีข้อดีด้าน latency ต่ำ และการจัดการพลังงานอย่างมีประสิทธิภาพ
การมีโครงสร้างที่อัปเดตได้ด้วย MCU อเนกประสงค์นั้นเป็นจริงได้มากกว่าการสร้าง ASIC ที่สมบูรณ์แบบ
ท้ายที่สุด การซื้อ MCU ที่ผ่านการพิสูจน์แล้วจำนวนมากก็คุ้มกว่าการสร้างชิปแบบสั่งทำมาก
ค่าแรงในการออกแบบและผลิตชิปเฉพาะทาง รวมถึงการทดสอบ การอบรม และต้นทุนการผลิตจำนวนน้อย กลับแพงกว่าเสียอีก
ต้นทุนกระบวนการทางธุรกิจ มีสัดส่วนใหญ่กว่าค่าวัสดุมาก
เราอยู่ในโลกที่ DOOM รันบนหูฟังเอียร์บัดได้แล้ว ไม่มีเหตุผลจะต้องมองเรื่องนี้ในแง่ลบ
สเปกอาจเกินความจำเป็น แต่การที่ทั้งหมดนี้เข้าไปอยู่ในหูได้ก็น่าทึ่งมาก
ฉันเป็นคน พอร์ต DOOM ลง PineBuds Pro เอง
ถ้าเชื่อมต่อผ่านอินเทอร์เน็ต คุณก็เล่น DOOM บนเอียร์บัดของฉันได้
รายละเอียดเพิ่มเติมกับลิงก์ GitHub อยู่บนเว็บไซต์ของฉัน
แอบเสียดายนิดหน่อยที่มีแต่ DOOM ที่ถูกพอร์ตอยู่เรื่อย ๆ
เมื่อก่อนมีเกมที่เรียบง่ายแต่ เล่นเพลินจนติด เยอะมาก แต่เกมสมัยนี้ใหญ่และซับซ้อนเกินไปจนย้ายไปแพลตฟอร์มเล็ก ๆ ได้ยาก
รู้สึกว่าอุตสาหกรรมนี้หลงทิศไปแล้ว ยกเว้นฝั่งอินดี้
เกมอย่าง Master of Orion 1 ในอดีตนั้นเรียบง่ายแต่หยิบมาเล่นซ้ำได้เรื่อย ๆ
เกมสมัยนี้กลับคล้ายวิดีโอมากกว่า คือ ปฏิสัมพันธ์น้อยและเน้นฟาร์ม XP จนความน่าสนใจลดลง
มันกลายเป็นธรรมเนียมไปแล้ว
ตอนนี้ผู้ใช้ส่วนใหญ่ไม่ได้กังวลเรื่องขนาดไฟล์หรือประสิทธิภาพมากนัก
เมื่อผู้บริโภคมีท่าทีว่า “ขอแค่รันได้ก็พอ” คุณค่าของการปรับแต่งประสิทธิภาพ จึงลดลง
ถึงอย่างนั้น ในวงการอินดี้ก็ยังมี เกมสั้นแต่มีสไตล์ อยู่มาก
เพียงแต่เกมสั้นแบบภาพยนตร์มักสร้างอิมแพ็กต์ใหญ่ได้ยาก เลยไม่ค่อยเป็นที่รู้จัก
ดูรายชื่อการพอร์ต DOOM ได้ในหน้าวิกิพีเดีย
คิดว่านี่เป็น ผลด้านการประชาสัมพันธ์ ที่ยอดเยี่ยมสำหรับ PineBuds Pro
สงสัยว่า Fairbuds จะทำแบบนี้ได้ไหม
แต่ในเมื่อ DOOM รันได้บนอุปกรณ์มากมายขนาดนี้ ทำไมมันถึงยัง รันลื่นบน 386 ไม่ได้สักที
ทำให้นึกถึงบทสัมภาษณ์หลัง DOOM 3 ที่ John Carmack บอกว่า เมื่อเอนจินซับซ้อนขึ้น เขาก็ ไม่สามารถเขียนโค้ดทั้งหมดคนเดียวได้อีกต่อไป
เลยสงสัยว่าใน ยุค AI ตอนนี้เขาจะคิดอย่างไร
ส่วนตัวคิดว่าเขาน่าจะมอง AI ในแง่บวก
แล้วก็ “Masters of Doom” เป็นหนังสือที่ดีมาก แนะนำเลย
สงสัยว่ามีใครเคยใช้ PineBuds Pro บ้างไหม
ใน IRC ของ Pine64 ไม่มีช่องที่เกี่ยวข้อง เลยไม่รู้จะไปถามที่ไหน
ไม่รู้เรื่องความสบายเวลาสวมหรือคุณภาพเสียง แต่ใน ช่อง Discord ของ Pine64 มีห้องสำหรับ Pinebuds โดยเฉพาะ
ฉันตั้งใจติดตั้งเฟิร์มแวร์ที่ไม่มี ANC แต่ในฐานะ หูฟังบลูทูธเอียร์บัด มันก็ทำหน้าที่ได้ดีพอ
อีกไม่กี่ปี ถ้าเอียร์บัดมีแรมเพิ่มขึ้นอีกหน่อย ก็คงรัน คลัสเตอร์ Kubernetes แบบโลคัล ได้แล้ว
ฉันกำลังรอโพสต์แนว “พอร์ต DOOM ลงชิปบุหรี่ไฟฟ้าใช้แล้วทิ้ง” อยู่ 😄
ถ้ากฎของมัวร์ยังเดินหน้าต่อไป บางทีอาจเป็นไปได้ในอีกราว 10 ปี
ตัวดูแบบแยกอิสระ ที่เชื่อมต่อกับเอียร์บัดโดยตรงก็ใช้งานบนมือถือได้เช่นกัน
ดู วิดีโอเดโม ได้
ไม่มีระบบควบคุมแบบสัมผัส และเล่นแค่วนลูปช่วงอินโทรเท่านั้น