1P by GN⁺ 8일전 | ★ favorite | 댓글 1개
  • KiDoom은 1993년 고전 슈팅 게임 DOOM을 KiCad PCB 편집기 내에서 벡터 기반으로 렌더링하는 프로젝트
  • PCB 회로선(trace)을 그래픽 출력 경로로 사용하며, 초당 10~25프레임의 속도로 구동
  • 같은 개발자는 ScopeDoom을 통해 오실로스코프에서도 DOOM을 실행, MacBook 헤드폰 잭을 DAC로 활용
  • 이외에도 CircuitSnips.com, AI 채팅 앱, MQTT 기반 트리거, 엔진 시뮬레이터 등 다양한 전자·소프트웨어 프로젝트 진행
  • 하드웨어 설계와 소프트웨어 창의성을 결합한 전자공학 기반 인터랙티브 실험 프로젝트로 주목

주요 프로젝트 개요

  • KiDoom은 KiCad PCB 편집기에서 DOOM을 벡터 방식으로 렌더링하는 실험적 구현
    • PCB 회로선을 그래픽 출력 경로로 사용
    • 10~25 FPS의 속도로 동작
  • ScopeDoom은 오실로스코프에서 DOOM을 실행하는 버전
    • MacBook 헤드폰 잭을 이중 채널 DAC으로 사용해 벡터 그래픽을 4~8Hz로 표시

기타 공개 프로젝트

  • CircuitSnips.com: KiCad 서브회로를 공유하는 플랫폼으로, Thingiverse의 회로 버전 형태
  • HIT Impact Android App: 외상성 뇌손상 센서용 Kotlin 기반 안드로이드 앱
  • MQTT Duration Trigger: Home Assistant용 MQTT 기반 지속시간 트리거 통합 도구
  • TheDuck.chat: T3 Cloneathon을 위해 개발된 AI 기반 채팅 애플리케이션
  • bitwise-mcp: 임베디드 개발자를 위한 MCP 문서 서버, PDF RM에서 레지스터 정의를 추출해 빠른 의미 검색 제공
  • KiCad Netlist Tool: KiCad SCH 파일의 LLM 토큰 수를 줄여 자동 문서화를 지원하는 도구
  • Claude Code Comm Bot: VS Code 통합용 Discord 커뮤니케이션 봇
  • 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: 인증이 필요한 스마트홈 자동화 플랫폼

경력 요약

  • 3개의 ECU 개발, 10년 이상 경력, 2,850만 마일 이상 주행 데이터 기반의 프로젝트 경험 보유
Hacker News 의견
  • 이 프로젝트는 밈보다 구현 방식이 훨씬 흥미로움
    DOOM을 렌더링하는 게 대단한 게 아니라, PCB 편집기의 렌더링 파이프라인을 하이재킹해서 실시간 벡터 엔진처럼 동작하게 만든 점이 인상적임
    DOOM의 내부 구조에서 geometry를 직접 추출하고, 스프라이트를 실제 부품 풋프린트에 매핑하며, KiCad의 객체 모델을 전체 재계산 없이 실시간으로 업데이트함
    그리고 같은 벡터 스트림을 오실로스코프의 오디오 DAC로 보내는 아이디어까지 있음
    이런 식으로 “도구를 본래 목적과 다르게 사용하는” 창의적인 연결이 멋짐
    앞으로 ScopeDoom 방향이 더 흥미로울 수도 있음. 벡터 디스플레이는 렌더링 사고방식을 완전히 바꾸게 하고, DOOM이 아날로그 전압 신호로 그려지는 건 시적으로 느껴짐
    더 나아가 빠른 DAC, 아날로그 잔광 스코프, 동적 스프라이트 단순화 등을 결합하면 부드러운 벡터 슈터 미학에 가까워질 것 같음

  • 도면을 종이에 인쇄해서 플립북처럼 넘길 수 있을까 하는 생각이 듦
    그러다 보면 언젠가 PowerPoint 프레젠테이션이 될지도 모름

  • 정말 놀라운 프로젝트임. 마치 tom7이나 그의 유튜브 채널의 작품 같다는 느낌이 듦

    • 그런 말을 들으니 영광스러움
  • “엔진에서 벡터 데이터를 직접 추출한다”는 부분을 보고 오실로스코프에서 구현한 사례가 있을까 궁금했음
    DOOM은 스프라이트 기반이라 한계가 있지만, 배경 정도는 렌더링 가능할 듯함
    고속 스코프를 저해상도 흑백 래스터 디스플레이로 사용하는 예시는 있었음
    Quake를 오실로스코프에서 구현한 영상을 찾았는데, 3D 모델이라 입체감이 살아 있음
    수정: 글의 후반부에서 ScopeDoom을 보고 놀랐음. 이런 시도가 더 일찍 있었을 줄 알았는데 의외로 찾기 어려움

    • 작성자임. Vectrex 포트 영상에서 영감을 받았음
      Keysight MXA 같은 장비에서 DOOM을 돌린 예시는 많지만, 그건 단순히 PC로 쓰는 것에 불과함
      Spectrum DOOM은 어떨까 생각함. waterfall plot 스냅샷을 이용하면 가능할지도 모름
  • 다음 단계는 DOOM을 실제 PCB로 렌더링해서 플레이하는 것일지도 모름
    각 프레임을 주문 제작하고, 2주 후 도착한 보드를 끼워 넣으며 인생을 되돌아보는 플레이어의 모습이 그려짐

    • 추측 실행(speculative execution) 을 도입하면 속도를 높일 수 있음. 다만 좋은 분기 예측기가 필요함
    • 15 FPS 기준으로 초당 약 80~100유로가 들고, 대부분의 PCB 공장은 최소 주문 수량이 5장이니 5배속 플레이가 가능함
  • 최근에 KiCad를 배우기 시작했는데, 게임 개발 코워킹 스페이스에서 일하고 있어서 두 세계가 완벽히 만난 느낌임. 멋짐

  • 세상을 더 나은 곳으로 만드는 이유는 모르겠지만, 그냥 그렇다고 느껴짐

  • 확장 아이디어로, 칩 설계 CAD 파일을 기반으로 새로운 맵을 추가하면 재밌을 듯함
    칩이 방이 되고, 솔더 라인이 복도가 되는 식임

  • 언젠가 해보고 싶은 프로젝트로, 마이크로컨트롤러 기반 오디오 잭 디스플레이 시스템을 만들고 싶었음
    XY 신호를 직접 쓸지, 소프트 모뎀으로 웹에서 디코딩할지 고민 중이었음

    • 그럴 바엔 아날로그 래스터 스캔, 즉 Slow-scan TV(SSTV)를 써보는 건 어떨까 함
      아폴로 미션 때도 이런 방식으로 TV 영상을 전송했음
      현대 SSTV는 수백 Hz 대역폭으로도 동작하지만, 오디오 채널의 20kHz를 전부 쓰면 100x100 픽셀 정도의 해상도로 1fps 전송이 가능함
  • 혹시 이게 KiCad v9의 새로운 소켓 API를 사용한 건지 궁금함
    나는 s-expr 라이브러리를 직접 만들어 풋프린트와 심볼을 주입했는데, 버그가 많고 불안정했음
    좀 더 공식적이고 안정적인 방법으로 옮기고 싶음

    • 소켓 API는 사용하지 않았음. v6 이상에서 동작하는 일반 플러그인임
      네 s-expr 라이브러리에 관심 있음. 내 다른 프로젝트인 CircuitSnips와 겹치는 부분이 있을 듯함
      CircuitSnips는 전자 회로용 Thingiverse 같은 서비스로, KiCanvas 렌더러에 전체 시트를 공급하는 방법을 직접 구현했음
      KiCad Discord에서 공유했을 때, KiCad 9+의 Design Block 기능이 관련 있을 거라는 피드백도 받았음