1 คะแนน โดย GN⁺ 2025-11-27 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • KiDoom เป็นโปรเจ็กต์ที่เรนเดอร์เกมยิงคลาสสิกปี 1993 อย่าง DOOM แบบเวกเตอร์ภายใน KiCad PCB editor
  • ใช้ลายวงจร PCB (trace) เป็นเส้นทางแสดงผลกราฟิก และทำงานที่ความเร็ว 10–25 เฟรมต่อวินาที
  • นักพัฒนาคนเดียวกันยังเคยทำ ScopeDoom ให้ DOOM รันบนออสซิลโลสโคป โดย ใช้ช่องหูฟังของ MacBook เป็น DAC
  • นอกจากนี้ยังทำโปรเจ็กต์อิเล็กทรอนิกส์และซอฟต์แวร์อีกหลากหลาย เช่น CircuitSnips.com, แอปแชต AI, ทริกเกอร์แบบ MQTT, และ ตัวจำลองเครื่องยนต์
  • เป็น โปรเจ็กต์ทดลองเชิงโต้ตอบบนพื้นฐานวิศวกรรมอิเล็กทรอนิกส์ ที่ผสานการออกแบบฮาร์ดแวร์เข้ากับความคิดสร้างสรรค์ด้านซอฟต์แวร์

ภาพรวมโปรเจ็กต์หลัก

  • KiDoom เป็นการทดลองทำให้ DOOM เรนเดอร์แบบเวกเตอร์ใน KiCad PCB editor
    • ใช้ลายวงจร PCB เป็นเส้นทางแสดงผลกราฟิก
    • ทำงานที่ความเร็วประมาณ 10–25 FPS
  • ScopeDoom เป็นเวอร์ชันที่รัน DOOM บนออสซิลโลสโคป
    • ใช้ช่องหูฟังของ MacBook เป็น DAC แบบสองช่องสัญญาณ เพื่อแสดงกราฟิกเวกเตอร์ที่ 4–8Hz

โปรเจ็กต์อื่นที่เปิดเผยต่อสาธารณะ

  • CircuitSnips.com: แพลตฟอร์มสำหรับแชร์ซับเซอร์กิตของ KiCad ในลักษณะคล้าย Thingiverse สำหรับวงจร
  • HIT Impact Android App: แอป Android ที่พัฒนาด้วย Kotlin สำหรับเซนเซอร์ตรวจจับการบาดเจ็บทางสมองจากแรงกระแทก
  • MQTT Duration Trigger: เครื่องมือรวมทริกเกอร์แบบอิงระยะเวลาบน MQTT สำหรับ Home Assistant
  • TheDuck.chat: แอปพลิเคชันแชตที่ขับเคลื่อนด้วย AI ซึ่งพัฒนาสำหรับ T3 Cloneathon
  • bitwise-mcp: เซิร์ฟเวอร์เอกสาร MCP สำหรับนักพัฒนา embedded ที่ดึงคำจำกัดความของรีจิสเตอร์จาก PDF RM เพื่อให้ค้นหาเชิงความหมายได้อย่างรวดเร็ว
  • KiCad Netlist Tool: เครื่องมือที่ช่วยลดจำนวนโทเค็น LLM ของไฟล์ KiCad SCH เพื่อรองรับการทำเอกสารอัตโนมัติ
  • Claude Code Comm Bot: บอตสื่อสารสำหรับ Discord ที่ใช้ร่วมกับ VS Code integration
  • Agent Tool (deprecated) : เว็บฟรอนต์เอนด์แบบสตรีมเรียลไทม์สำหรับเครื่องมือ CLI และบริการเว็บ LLM
  • Engine Simulator [WIP] : โปรเจ็กต์จำลองเครื่องยนต์ดีเซล 6 สูบด้วยการคำนวณทางฟิสิกส์
  • Vitamin/Supplement Price Comparison [WIP] : เว็บไซต์เปรียบเทียบราคาผลิตภัณฑ์เสริมอาหารทั้งแบรนด์และแบบทั่วไป
  • Fuel Injector Characterizer: ระบบตรวจสอบประสิทธิภาพหัวฉีดเชื้อเพลิงด้วย Arduino และ Webserial

สภาพแวดล้อมการพัฒนาส่วนตัว

  • VS Code Server: สภาพแวดล้อมพัฒนาระยะไกลผ่าน Tailscale VPN
  • Home Assistant: แพลตฟอร์มสมาร์ตโฮมอัตโนมัติที่ต้องมีการยืนยันตัวตน

สรุปประสบการณ์

  • มีประสบการณ์จากโปรเจ็กต์ที่อิงกับ การพัฒนา ECU 3 ตัว, ประสบการณ์มากกว่า 10 ปี, และ ข้อมูลการขับขี่รวมมากกว่า 28.5 ล้านไมล์

1 ความคิดเห็น

 
GN⁺ 2025-11-27
ความคิดเห็นบน Hacker News
  • โปรเจกต์นี้น่าสนใจกว่ามีมมากตรงที่ วิธีการทำมันขึ้นมา
    ไม่ใช่แค่การทำให้ DOOM เรนเดอร์ได้ที่น่าทึ่ง แต่เป็นการ ไฮแจ็ก pipeline การเรนเดอร์ของตัวแก้ไข PCB ให้ทำงานเหมือนเวกเตอร์เอนจินแบบเรียลไทม์ที่น่าประทับใจ
    มันดึง geometry ออกมาจากโครงสร้างภายในของ DOOM โดยตรง, แมปสไปรต์เข้ากับ footprint ของชิ้นส่วนจริง, และอัปเดต object model ของ KiCad แบบเรียลไทม์โดยไม่ต้องคำนวณใหม่ทั้งหมด
    แถมยังมีไอเดียส่งเวกเตอร์สตรีมเดียวกันไปยัง audio DAC ของออสซิลโลสโคปอีกด้วย
    ความคิดสร้างสรรค์ในการ “เอาเครื่องมือไปใช้ผิดวัตถุประสงค์เดิม” แบบนี้ยอดเยี่ยมมาก
    ต่อไปทิศทางของ ScopeDoom อาจจะน่าสนใจกว่าเดิมอีก เวกเตอร์ดิสเพลย์บังคับให้ต้องเปลี่ยนวิธีคิดเรื่องการเรนเดอร์ไปทั้งหมด และการที่ DOOM ถูกวาดด้วยสัญญาณแรงดันแอนะล็อกก็ดูมีความเป็นบทกวีอยู่ในตัว
    ถ้ารวม DAC ที่เร็วขึ้น, สโคปแบบแอนะล็อกที่มีภาพค้างเรืองแสง, และการลดทอนสไปรต์แบบไดนามิกเข้าด้วยกัน ก็น่าจะเข้าใกล้สุนทรียะของเกมยิงเวกเตอร์ที่ลื่นไหลมากขึ้น

  • ทำให้นึกว่าเราจะพิมพ์แบบลงกระดาษแล้ว พลิกดูเป็น flipbook ได้ไหม
    ไป ๆ มา ๆ วันหนึ่งมันอาจกลายเป็นงานนำเสนอ PowerPoint ก็ได้

  • เป็นโปรเจกต์ที่น่าทึ่งจริง ๆ ให้ความรู้สึกเหมือนงานของ tom7 หรือ ช่อง YouTube ของเขา

    • ได้ยินแบบนั้นแล้วรู้สึกเป็นเกียรติมาก
  • พอเห็นส่วนที่บอกว่า “ดึงข้อมูลเวกเตอร์จากเอนจินโดยตรง” ก็สงสัยว่ามีตัวอย่างที่ทำบนออสซิลโลสโคปหรือยัง
    DOOM มีข้อจำกัดเพราะเป็นแบบสไปรต์ แต่ฉากหลังก็น่าจะเรนเดอร์ได้
    เคยมีตัวอย่างที่ใช้สโคปความเร็วสูงเป็นจอแรสเตอร์ขาวดำความละเอียดต่ำ
    เจอ วิดีโอ Quake บนออสซิลโลสโคป แล้ว ซึ่งเพราะเป็นโมเดล 3D เลยยังคงให้ความรู้สึกมีมิติ
    แก้ไข: พอเห็น ScopeDoom ในช่วงท้ายบทความก็ทึ่งมาก คิดว่าแนวทดลองแบบนี้น่าจะมีมาก่อนหน้านี้แล้ว แต่กลับหาดูได้ยากอย่างน่าประหลาด

    • ผู้เขียนเอง ได้แรงบันดาลใจมาจาก วิดีโอพอร์ตลง Vectrex
      มีตัวอย่างทำให้ DOOM รันบนอุปกรณ์อย่าง Keysight MXA เยอะก็จริง แต่จริง ๆ นั่นก็แค่ใช้มันเป็นพีซีเท่านั้น
      เลยคิดว่า Spectrum DOOM จะเป็นยังไง ถ้าใช้ waterfall plot snapshot ก็น่าจะพอเป็นไปได้
  • ขั้นต่อไปอาจเป็นการเรนเดอร์ DOOM ลงบน PCB จริง แล้วเล่นมันเลยก็ได้
    สั่งผลิตแต่ละเฟรม แล้วค่อยเสียบบอร์ดที่มาส่งอีก 2 สัปดาห์ให้ครบ ขณะนั่งทบทวนชีวิตตัวเองไปด้วย

    • ถ้าเพิ่ม speculative execution ก็น่าจะเร็วขึ้นได้ แต่ต้องมี branch predictor ที่ดี
    • ที่ 15 FPS จะมีค่าใช้จ่ายราว 80~100 ยูโรต่อวินาที และโรงงาน PCB ส่วนใหญ่ก็มีจำนวนสั่งขั้นต่ำ 5 แผ่น ดังนั้นน่าจะเล่นแบบ 5x speed ได้
  • เพิ่งเริ่มเรียน KiCad ไม่นานนี้เอง และเพราะทำงานใน coworking space ด้านพัฒนาเกมอยู่ด้วย เลยรู้สึกเหมือน สองโลกมาบรรจบกันอย่างสมบูรณ์แบบ เท่มาก

  • ไม่รู้ว่าทำไม แต่รู้สึกว่านี่คือสิ่งที่ทำให้โลกน่าอยู่ขึ้น

  • ถ้าจะต่อยอด ไอเดียเพิ่ม แผนที่ใหม่จากไฟล์ CAD สำหรับออกแบบชิป ก็น่าสนุกดี
    ให้ตัวชิปกลายเป็นห้อง และเส้นบัดกรีกลายเป็นทางเดิน

  • มีโปรเจกต์หนึ่งที่อยากลองทำสักวัน คือสร้าง ระบบแสดงผลผ่านแจ็กเสียงที่ขับด้วยไมโครคอนโทรลเลอร์
    ยังลังเลว่าจะส่งสัญญาณ XY โดยตรง หรือใช้ซอฟต์โมเด็มแล้วให้ถอดรหัสจากเว็บดี

    • ถ้าอย่างนั้นลองใช้ การสแกนแรสเตอร์แบบแอนะล็อก หรือ Slow-scan TV(SSTV) ดีไหม
      ภารกิจ Apollo ก็เคยส่งภาพทีวีด้วยวิธีแบบนี้
      SSTV สมัยใหม่ทำงานได้แม้มีแบนด์วิดท์เพียงไม่กี่ร้อย Hz แต่ถ้าใช้ช่องสัญญาณเสียง 20kHz ทั้งหมด ก็อาจส่งภาพความละเอียดประมาณ 100x100 พิกเซลที่ 1fps ได้
  • สงสัยว่าอันนี้ใช้ socket API ใหม่ ของ KiCad v9 หรือเปล่า
    ฉันเคยทำไลบรารี s-expr เองเพื่อฉีด footprint กับ symbol เข้าไป แต่มีบั๊กเยอะและไม่เสถียรมาก
    อยากย้ายไปใช้วิธีที่เป็นทางการและเสถียรกว่านี้

    • ไม่ได้ใช้ socket API เป็นปลั๊กอินทั่วไปที่ทำงานได้ตั้งแต่ v6 ขึ้นไป
      ฉันสนใจไลบรารี s-expr ของคุณนะ น่าจะมีส่วนที่ทับซ้อนกับอีกโปรเจกต์ของฉันคือ CircuitSnips
      CircuitSnips เป็นบริการคล้าย Thingiverse สำหรับวงจรอิเล็กทรอนิกส์ และฉันก็ลงมือทำวิธีป้อนทั้งชีตให้กับตัวเรนเดอร์ KiCanvas เอง
      ตอนเอาไปแชร์ใน Discord ของ KiCad ก็มีคนบอกว่าฟีเจอร์ Design Block ใน KiCad 9+ น่าจะเกี่ยวข้องกับเรื่องนี้เหมือนกัน