- KiDoom ist ein Projekt, das den klassischen Shooter DOOM von 1993 vektorbasiert im KiCad-PCB-Editor rendert
- Dabei werden PCB-Leiterbahnen (Traces) als Grafik-Ausgabepfad verwendet; die Darstellung läuft mit 10 bis 25 Bildern pro Sekunde
- Derselbe Entwickler ließ DOOM mit ScopeDoom auch auf einem Oszilloskop laufen und nutzte die MacBook-Kopfhörerbuchse als DAC
- Darüber hinaus arbeitet er an verschiedenen Elektronik- und Softwareprojekten wie CircuitSnips.com, einer AI-Chat-App, MQTT-basierten Triggern und einem Motorsimulator
- Das Projekt erregt Aufmerksamkeit als interaktives, elektrotechnisch geprägtes Experiment, das Hardwaredesign und Software-Kreativität verbindet
Überblick über die wichtigsten Projekte
- KiDoom ist eine experimentelle Umsetzung, die DOOM im KiCad-PCB-Editor als Vektorgrafik rendert
- PCB-Leiterbahnen werden als Grafik-Ausgabepfad verwendet
- Läuft mit etwa 10 bis 25 FPS
- ScopeDoom ist eine Version, die DOOM auf einem Oszilloskop ausführt
- Verwendet die MacBook-Kopfhörerbuchse als Dual-Channel-DAC, um Vektorgrafik mit 4 bis 8 Hz darzustellen
Weitere veröffentlichte Projekte
- CircuitSnips.com: Eine Plattform zum Teilen von KiCad-Subschaltungen, gewissermaßen die Schaltungsvariante von Thingiverse
- HIT Impact Android App: Kotlin-basierte Android-App für einen Sensor für traumatische Hirnverletzungen
- MQTT Duration Trigger: MQTT-basierte Integration für zeitbasierte Trigger in Home Assistant
- TheDuck.chat: Eine AI-basierte Chat-Anwendung, entwickelt für den T3 Cloneathon
- bitwise-mcp: Ein MCP-Dokumentationsserver für Embedded-Entwickler, der Registerdefinitionen aus PDF-RMs extrahiert und schnelle semantische Suche ermöglicht
- KiCad Netlist Tool: Ein Tool, das die Anzahl der LLM-Tokens in KiCad-SCH-Dateien reduziert und so die automatische Dokumentation unterstützt
- Claude Code Comm Bot: Ein Discord-Kommunikations-Bot für die VS-Code-Integration
- Agent Tool (deprecated): Ein Echtzeit-Streaming-Web-Frontend für CLI-Tools und LLM-Webservices
- Engine Simulator [WIP]: Ein Projekt zur physikalischen Simulation eines Diesel-Reihensechszylinder-Motors
- Vitamin/Supplement Price Comparison [WIP]: Eine Website zum Preisvergleich von Markenpräparaten und generischen Nahrungsergänzungsmitteln
- Fuel Injector Characterizer: Ein System zur Leistungsprüfung von Kraftstoffeinspritzdüsen mit Arduino und Webserial
Persönliche Entwicklungsumgebung
- VS Code Server: Remote-Entwicklungsumgebung über Tailscale-VPN
- Home Assistant: Smart-Home-Automatisierungsplattform mit Authentifizierungspflicht
Kurzprofil
- Erfahrung mit 3 ECU-Entwicklungen, mehr als 10 Jahren Berufserfahrung und Projekten auf Basis von über 28,5 Millionen Meilen Fahrdaten
1 Kommentare
Hacker-News-Kommentare
An diesem Projekt ist weit mehr als nur das Meme die Art der Umsetzung interessant.
Nicht das Rendern von DOOM an sich ist beeindruckend, sondern dass die Rendering-Pipeline des PCB-Editors gekapert wurde, damit sie wie eine Vektor-Engine in Echtzeit arbeitet.
Dabei wird die Geometrie direkt aus der internen Struktur von DOOM extrahiert, Sprites werden auf echte Bauteil-Footprints abgebildet, und das Objektmodell von KiCad wird in Echtzeit aktualisiert, ohne jedes Mal alles neu zu berechnen.
Dazu kommt noch die Idee, denselben Vektor-Stream an den Audio-DAC eines Oszilloskops zu schicken.
Solche kreativen Verbindungen, bei denen ein Werkzeug „entgegen seinem eigentlichen Zweck“ benutzt wird, sind großartig.
Künftig könnte die ScopeDoom-Richtung sogar noch spannender sein. Vektor-Displays verändern die Art, über Rendering nachzudenken, komplett, und dass DOOM als analoges Spannungssignal gezeichnet wird, hat fast etwas Poetisches.
Wenn man das noch mit schnellen DACs, Oszilloskopen mit analogem Nachleuchten und dynamischer Sprite-Vereinfachung kombiniert, könnte das einer flüssigen Vektor-Shooter-Ästhetik ziemlich nahekommen.
Ich musste daran denken, ob man die Zeichnungen auf Papier drucken und wie ein Flipbook durchblättern könnte.
Irgendwann wird daraus dann vielleicht noch eine PowerPoint-Präsentation.
Wirklich ein erstaunliches Projekt. Es fühlt sich an wie etwas von tom7 oder seinem YouTube-Kanal.
Als ich den Teil über das „direkte Extrahieren von Vektordaten aus der Engine“ gelesen habe, habe ich mich gefragt, ob es so etwas schon einmal auf einem Oszilloskop gab.
DOOM ist wegen seiner Sprite-Basis zwar eingeschränkt, aber zumindest der Hintergrund dürfte renderbar sein.
Es gab bereits Beispiele, bei denen schnelle Oszilloskope als Raster-Displays mit niedriger Auflösung in Schwarzweiß verwendet wurden.
Ich habe ein Video gefunden, in dem Quake auf einem Oszilloskop umgesetzt wurde; durch die 3D-Modelle kommt die räumliche Wirkung gut rüber.
Edit: Später im Artikel war ich überrascht, ScopeDoom zu sehen. Ich hätte gedacht, dass es solche Versuche schon früher gegeben hätte, aber überraschenderweise ist so etwas schwer zu finden.
Es gibt viele Beispiele, in denen DOOM auf Geräten wie dem Keysight MXA läuft, aber das ist letztlich nur die Nutzung als normaler PC.
Ich frage mich, wie Spectrum DOOM aussehen würde. Mit Waterfall-Plot-Snapshots könnte das vielleicht möglich sein.
Der nächste Schritt ist vielleicht, DOOM tatsächlich als PCB zu rendern und so zu spielen.
Man sieht direkt einen Spieler vor sich, der für jedes Frame eine Sonderanfertigung bestellt, zwei Wochen auf die Lieferung wartet und beim Einsetzen der Platinen über sein Leben nachdenkt.
Ich habe erst vor Kurzem angefangen, KiCad zu lernen, und arbeite in einem Coworking-Space für Spieleentwicklung, daher fühlt es sich an, als würden zwei Welten perfekt zusammenkommen. Großartig.
Ich weiß nicht, warum, aber irgendwie habe ich das Gefühl, dass so etwas die Welt zu einem besseren Ort macht.
Als Erweiterungsidee wäre es interessant, neue Maps auf Basis von CAD-Dateien aus dem Chipdesign hinzuzufügen.
Der Chip würde zum Raum und die Lötleitungen zu Korridoren werden.
Ein Projekt, das ich irgendwann einmal machen wollte, war ein mikrocontrollerbasiertes Display-System mit Audio-Klinke.
Ich habe überlegt, ob man XY-Signale direkt verwenden oder per Softmodem aus dem Web dekodieren sollte.
So wurden auch bei den Apollo-Missionen TV-Bilder übertragen.
Modernes SSTV funktioniert schon mit einigen hundert Hz Bandbreite, aber wenn man die gesamten 20 kHz eines Audiokanals nutzt, könnte man wohl etwa 100x100 Pixel mit 1 fps übertragen.
Ich frage mich, ob dafür die neue Socket-API von KiCad v9 verwendet wurde.
Ich habe selbst eine s-expr-Bibliothek gebaut, um Footprints und Symbole einzuschleusen, aber das war voller Bugs und instabil.
Ich würde gern auf einen offizielleren und stabileren Weg umsteigen.
Deine s-expr-Bibliothek interessiert mich. Es scheint Überschneidungen mit meinem anderen Projekt CircuitSnips zu geben.
CircuitSnips ist eine Art Thingiverse für elektronische Schaltungen, und ich habe selbst implementiert, wie man dem KiCanvas-Renderer ganze Sheets zuführt.
Als ich es im KiCad-Discord geteilt habe, bekam ich auch die Rückmeldung, dass die Design-Block-Funktion von KiCad 9+ damit zu tun haben könnte.