- 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 ความคิดเห็น
ความคิดเห็นบน Hacker News
โปรเจกต์นี้น่าสนใจกว่ามีมมากตรงที่ วิธีการทำมันขึ้นมา
ไม่ใช่แค่การทำให้ DOOM เรนเดอร์ได้ที่น่าทึ่ง แต่เป็นการ ไฮแจ็ก pipeline การเรนเดอร์ของตัวแก้ไข PCB ให้ทำงานเหมือนเวกเตอร์เอนจินแบบเรียลไทม์ที่น่าประทับใจ
มันดึง geometry ออกมาจากโครงสร้างภายในของ DOOM โดยตรง, แมปสไปรต์เข้ากับ footprint ของชิ้นส่วนจริง, และอัปเดต object model ของ KiCad แบบเรียลไทม์โดยไม่ต้องคำนวณใหม่ทั้งหมด
แถมยังมีไอเดียส่งเวกเตอร์สตรีมเดียวกันไปยัง audio DAC ของออสซิลโลสโคปอีกด้วย
ความคิดสร้างสรรค์ในการ “เอาเครื่องมือไปใช้ผิดวัตถุประสงค์เดิม” แบบนี้ยอดเยี่ยมมาก
ต่อไปทิศทางของ ScopeDoom อาจจะน่าสนใจกว่าเดิมอีก เวกเตอร์ดิสเพลย์บังคับให้ต้องเปลี่ยนวิธีคิดเรื่องการเรนเดอร์ไปทั้งหมด และการที่ DOOM ถูกวาดด้วยสัญญาณแรงดันแอนะล็อกก็ดูมีความเป็นบทกวีอยู่ในตัว
ถ้ารวม DAC ที่เร็วขึ้น, สโคปแบบแอนะล็อกที่มีภาพค้างเรืองแสง, และการลดทอนสไปรต์แบบไดนามิกเข้าด้วยกัน ก็น่าจะเข้าใกล้สุนทรียะของเกมยิงเวกเตอร์ที่ลื่นไหลมากขึ้น
ทำให้นึกว่าเราจะพิมพ์แบบลงกระดาษแล้ว พลิกดูเป็น flipbook ได้ไหม
ไป ๆ มา ๆ วันหนึ่งมันอาจกลายเป็นงานนำเสนอ PowerPoint ก็ได้
เป็นโปรเจกต์ที่น่าทึ่งจริง ๆ ให้ความรู้สึกเหมือนงานของ tom7 หรือ ช่อง YouTube ของเขา
พอเห็นส่วนที่บอกว่า “ดึงข้อมูลเวกเตอร์จากเอนจินโดยตรง” ก็สงสัยว่ามีตัวอย่างที่ทำบนออสซิลโลสโคปหรือยัง
DOOM มีข้อจำกัดเพราะเป็นแบบสไปรต์ แต่ฉากหลังก็น่าจะเรนเดอร์ได้
เคยมีตัวอย่างที่ใช้สโคปความเร็วสูงเป็นจอแรสเตอร์ขาวดำความละเอียดต่ำ
เจอ วิดีโอ Quake บนออสซิลโลสโคป แล้ว ซึ่งเพราะเป็นโมเดล 3D เลยยังคงให้ความรู้สึกมีมิติ
แก้ไข: พอเห็น ScopeDoom ในช่วงท้ายบทความก็ทึ่งมาก คิดว่าแนวทดลองแบบนี้น่าจะมีมาก่อนหน้านี้แล้ว แต่กลับหาดูได้ยากอย่างน่าประหลาด
มีตัวอย่างทำให้ DOOM รันบนอุปกรณ์อย่าง Keysight MXA เยอะก็จริง แต่จริง ๆ นั่นก็แค่ใช้มันเป็นพีซีเท่านั้น
เลยคิดว่า Spectrum DOOM จะเป็นยังไง ถ้าใช้ waterfall plot snapshot ก็น่าจะพอเป็นไปได้
ขั้นต่อไปอาจเป็นการเรนเดอร์ DOOM ลงบน PCB จริง แล้วเล่นมันเลยก็ได้
สั่งผลิตแต่ละเฟรม แล้วค่อยเสียบบอร์ดที่มาส่งอีก 2 สัปดาห์ให้ครบ ขณะนั่งทบทวนชีวิตตัวเองไปด้วย
เพิ่งเริ่มเรียน KiCad ไม่นานนี้เอง และเพราะทำงานใน coworking space ด้านพัฒนาเกมอยู่ด้วย เลยรู้สึกเหมือน สองโลกมาบรรจบกันอย่างสมบูรณ์แบบ เท่มาก
ไม่รู้ว่าทำไม แต่รู้สึกว่านี่คือสิ่งที่ทำให้โลกน่าอยู่ขึ้น
ถ้าจะต่อยอด ไอเดียเพิ่ม แผนที่ใหม่จากไฟล์ CAD สำหรับออกแบบชิป ก็น่าสนุกดี
ให้ตัวชิปกลายเป็นห้อง และเส้นบัดกรีกลายเป็นทางเดิน
มีโปรเจกต์หนึ่งที่อยากลองทำสักวัน คือสร้าง ระบบแสดงผลผ่านแจ็กเสียงที่ขับด้วยไมโครคอนโทรลเลอร์
ยังลังเลว่าจะส่งสัญญาณ XY โดยตรง หรือใช้ซอฟต์โมเด็มแล้วให้ถอดรหัสจากเว็บดี
ภารกิจ Apollo ก็เคยส่งภาพทีวีด้วยวิธีแบบนี้
SSTV สมัยใหม่ทำงานได้แม้มีแบนด์วิดท์เพียงไม่กี่ร้อย Hz แต่ถ้าใช้ช่องสัญญาณเสียง 20kHz ทั้งหมด ก็อาจส่งภาพความละเอียดประมาณ 100x100 พิกเซลที่ 1fps ได้
สงสัยว่าอันนี้ใช้ socket API ใหม่ ของ KiCad v9 หรือเปล่า
ฉันเคยทำไลบรารี s-expr เองเพื่อฉีด footprint กับ symbol เข้าไป แต่มีบั๊กเยอะและไม่เสถียรมาก
อยากย้ายไปใช้วิธีที่เป็นทางการและเสถียรกว่านี้
ฉันสนใจไลบรารี s-expr ของคุณนะ น่าจะมีส่วนที่ทับซ้อนกับอีกโปรเจกต์ของฉันคือ CircuitSnips
CircuitSnips เป็นบริการคล้าย Thingiverse สำหรับวงจรอิเล็กทรอนิกส์ และฉันก็ลงมือทำวิธีป้อนทั้งชีตให้กับตัวเรนเดอร์ KiCanvas เอง
ตอนเอาไปแชร์ใน Discord ของ KiCad ก็มีคนบอกว่าฟีเจอร์ Design Block ใน KiCad 9+ น่าจะเกี่ยวข้องกับเรื่องนี้เหมือนกัน