- KiDoom es un proyecto que renderiza en formato vectorial el clásico juego de disparos DOOM de 1993 dentro del editor de PCB KiCad
- Usa las pistas del circuito PCB (
trace) como ruta de salida gráfica y funciona a una velocidad de 10 a 25 cuadros por segundo
- El mismo desarrollador también ejecutó DOOM en un osciloscopio con ScopeDoom, aprovechando el conector de audífonos de una MacBook como DAC
- Además, desarrolla diversos proyectos de electrónica y software como CircuitSnips.com, una app de chat con IA, disparadores basados en MQTT y un simulador de motor
- Ha llamado la atención como un proyecto de experimentación interactiva basado en ingeniería electrónica que combina diseño de hardware y creatividad de software
Resumen de proyectos principales
- KiDoom es una implementación experimental que renderiza DOOM en modo vectorial dentro del editor de PCB KiCad
- Usa las pistas del PCB como ruta de salida gráfica
- Funciona a alrededor de 10~25 FPS
- ScopeDoom es una versión que ejecuta DOOM en un osciloscopio
- Usa el conector de audífonos de una MacBook como DAC de doble canal para mostrar gráficos vectoriales a 4~8Hz
Otros proyectos públicos
- CircuitSnips.com: plataforma para compartir subcircuitos de KiCad, una especie de versión de Thingiverse para circuitos
- HIT Impact Android App: app de Android basada en Kotlin para sensores de lesión cerebral traumática
- MQTT Duration Trigger: herramienta de integración de disparadores por duración basada en MQTT para Home Assistant
- TheDuck.chat: aplicación de chat impulsada por IA desarrollada para T3 Cloneathon
- bitwise-mcp: servidor de documentación MCP para desarrolladores embebidos, que extrae definiciones de registros desde PDF RM para ofrecer búsqueda semántica rápida
- KiCad Netlist Tool: herramienta que reduce la cantidad de tokens LLM en archivos KiCad SCH para facilitar la documentación automática
- Claude Code Comm Bot: bot de comunicación para Discord con integración para VS Code
- Agent Tool (deprecated) : frontend web con streaming en tiempo real para herramientas CLI y servicios web de LLM
- Engine Simulator [WIP] : proyecto que simula mediante cálculos físicos un motor diésel de 6 cilindros
- Vitamin/Supplement Price Comparison [WIP] : sitio para comparar precios entre suplementos de marca y productos genéricos
- Fuel Injector Characterizer: sistema de validación de rendimiento de inyectores de combustible usando Arduino y Webserial
Entorno personal de desarrollo
- VS Code Server: entorno de desarrollo remoto a través de Tailscale VPN
- Home Assistant: plataforma de automatización para hogares inteligentes que requiere autenticación
Resumen de trayectoria
- Experiencia en proyectos basada en 3 desarrollos de ECU, más de 10 años de trayectoria y más de 28.5 millones de millas de datos de conducción
1 comentarios
Comentarios en Hacker News
Este proyecto es mucho más interesante por cómo está implementado que por el meme en sí
No es que renderizar DOOM sea lo impresionante, sino que lograron secuestrar el pipeline de renderizado del editor de PCB para hacerlo funcionar como un motor vectorial en tiempo real
Extraen directamente la geometría de la estructura interna de DOOM, mapean los sprites a footprints de componentes reales y actualizan en tiempo real el modelo de objetos de KiCad sin recalcular todo por completo
Y hasta existe la idea de enviar ese mismo flujo vectorial al DAC de audio de un osciloscopio
Está genial este tipo de conexión creativa de “usar una herramienta para algo distinto de su propósito original”
En adelante, la dirección de ScopeDoom podría ser todavía más interesante. Las pantallas vectoriales cambian por completo la forma de pensar el renderizado, y que DOOM se dibuje como señales de voltaje analógicas tiene algo poético
Yendo más allá, si se combinan DACs rápidos, osciloscopios analógicos con persistencia y simplificación dinámica de sprites, podría acercarse a una estética de shooter vectorial suave
Me hace pensar si se podría imprimir el esquema en papel y pasarlo como un flipbook
A ese paso, algún día hasta podría convertirse en una presentación de PowerPoint
Es un proyecto realmente asombroso. Se siente como algo que haría tom7 o su canal de YouTube
Al leer la parte de “extraer directamente los datos vectoriales del motor”, me pregunté si habría ejemplos implementados en un osciloscopio
DOOM tiene limitaciones por estar basado en sprites, pero el fondo al menos sí parecería renderizable
Ya había ejemplos de usar osciloscopios rápidos como pantallas ráster monocromáticas de baja resolución
Encontré un video de Quake ejecutándose en un osciloscopio, y como usa modelos 3D, la sensación de profundidad se mantiene
Edit: Me sorprendió ver ScopeDoom más adelante en el artículo. Pensé que este tipo de intentos habrían existido mucho antes, pero curiosamente son difíciles de encontrar
Hay muchos ejemplos de DOOM corriendo en equipos como el Keysight MXA, pero eso no pasa de usarlo simplemente como una PC
Me pregunto cómo sería Spectrum DOOM. Tal vez podría hacerse usando snapshots de waterfall plots
El siguiente paso tal vez sea jugar DOOM renderizado en un PCB real
Me imagino al jugador mandando fabricar cada cuadro, insertando la placa al llegar dos semanas después y replanteándose su vida
Hace poco empecé a aprender KiCad, y como trabajo en un coworking de desarrollo de videojuegos, siento que mis dos mundos se unieron perfectamente. Está buenísimo
No sé por qué, pero siento que esto hace del mundo un lugar mejor
Como idea de expansión, estaría divertido agregar nuevos mapas basados en archivos CAD de diseño de chips
El chip sería la habitación y las líneas de soldadura serían los pasillos
Un proyecto que siempre quise intentar algún día es crear un sistema de visualización por jack de audio basado en microcontrolador
Estaba pensando si usar señales XY directas o decodificarlas desde la web con un soft modem
Incluso en las misiones Apolo se transmitía la imagen de TV de esa manera
El SSTV moderno puede funcionar incluso con anchos de banda de unos pocos cientos de Hz, pero si se usan por completo los 20 kHz de un canal de audio, podría transmitirse algo como 100x100 píxeles a 1 fps
Me pregunto si esto usa la nueva API de sockets de KiCad v9
Yo hice mi propia librería s-expr para inyectar footprints y símbolos, pero tenía muchos bugs y era inestable
Me gustaría pasarme a un método más oficial y estable
Me interesa tu librería s-expr. Puede que se superponga con mi otro proyecto, CircuitSnips
CircuitSnips es como un Thingiverse para circuitos electrónicos, e implementé por mi cuenta la forma de suministrar hojas completas al renderizador de KiCanvas
Cuando lo compartí en el Discord de KiCad, también recibí comentarios de que la función de Design Blocks de KiCad 9+ podría estar relacionada