Baustelle: Diese Seite ist im Aufbau · noindex · Zugangscode erforderlich.
← Zurück zum Portfolio

Fallstudie

UMORIA — das echte Moria von 1983 im CRT-Terminal

Ein echtes Roguelike von 1983, zu WebAssembly kompiliert und in jedem Browser lauffähig — in einem selbst gebauten Phosphor-CRT-Terminal.

WebAssembly WebGL WebAudio PWA C++/Emscripten
UMORIA — das echte Moria von 1983 im CRT-Terminal
Rolle
Solo — design, engineering, build pipeline, deployment, docs
Stack
WebAssembly · WebGL · WebAudio · PWA · GitHub Pages
Zeitraum
~4 days part-time (≈ 1 day of focused work)
Jahr
2026
Status
Live

Ein 40 Jahre altes C++-Spiel, unverändert lauffähig in jedem modernen Browser — in einem selbst gebauten CRT-Terminal, mit live erzeugtem Soundtrack, einem atmosphärischen Erzähler und ganz ohne Installation.

Die Herausforderung

Das echte Umoria von 1983 — kein Remake — in einem modernen Browser zum Laufen bringen und es anfühlen lassen wie an einer Bernstein-Bildröhre: lebendig, atmosphärisch, installierbar und sofort spielbar, ohne Download. Ein originalgetreues Remake ist praktisch unmöglich (jedes Monster, jeder Gegenstand, jede Formel müsste exakt stimmen) — also musste der Originalcode unverändert laufen, eingefasst in eine Präsentationsschicht, die ein Portfolio trägt.

Das Vorgehen

  • Originalen C++-Code zu WebAssembly kompiliert. Der unveränderte Quellcode von Umoria 5.7.15, mit Emscripten zu WASM/asm.js gebaut, über ein reproduzierbares Build-Skript.
  • Eine schlanke „Hülle“ über der Engine. Sie liest das versteckte 80×24- Textraster der Engine in jedem Frame und rendert es über einen eigenen WebGL-CRT-Shader neu — Scanlines, Röhrenwölbung, Phosphor-Glühen, Flackern, Vignette.
  • Eine live erzeugte, sich entwickelnde Klangwelt (ohne Audiodateien). Mehrschichtiger WebAudio-Score, der mit der Tiefe düsterer wird, Dungeon-Ambiente, Sterbeschreie je nach Kreatur und ein gesprochener Erzähler aus gemeinfreien Lesungen — die Musik duckt darunter weg.
  • Spielmechanik als saubere C++-Patches. Mehrere Leben, ein Extra-Leben pro 50 Kills, Bildschirmfarbe pro Leben, dazu Pfeiltasten-Steuerung für Tastaturen ohne Ziffernblock und regelbare CRT-Verzerrung — ohne die Speicher­kompatibilität zu brechen.
  • Als echtes Produkt ausgeliefert. Installierbare PWA (Fenster ohne Browser-Leisten), Spielstände in IndexedDB, dateiweises Cache-Busting per Inhalts-Hash und robuste Fallbacks bei blockiertem Speicher oder altem Cache.
  • Automatisierte Qualität + Assets. Headless-Chrome (DevTools Protocol) für interaktive Smoke-Tests und Screenshots; zweisprachige Dokumentation.

Das Ergebnis

  • Ein vollständiges, authentisches Roguelike, das in Sekunden lädt — in jedem modernen Browser, sofort anklick- und spielbar, ohne Installation.
  • Installierbar als Desktop-/Mobile-App für ein aufgeräumtes, ablenkungsfreies Fenster.
  • Eine eigenständige, atmosphärische Präsentation (CRT + komplett prozedurales Audio), die nach Handwerk aussieht, nicht nach Vorlage.
  • Ein reproduzierbarer Build und gründliche, zweisprachige Doku — leicht aufzugreifen, neu zu bauen und zu erweitern.

Was das zeigt

  • Ich kann Schwieriges oder Altsystem-Code nehmen und ein poliertes, schnelles, installierbares Web-Produkt von A bis Z ausliefern.
  • Volle Verantwortung: Architektur, Build-Pipeline, Performance, Deployment, Doku.
  • Sicher in Grafik (Shader), Audio (Synthese), Systemen (WASM/C++) und Tooling — mit einem klaren Blick für UX und Details.
  • Moderne, KI-gestützte Umsetzung, die Ideen schnell in laufende Software verwandelt — vom Menschen gesteuert und kuratiert.

Technik auf einen Blick

C++ · Emscripten · WebAssembly / asm.js · WebGL (eigener CRT-Shader) · WebAudio (prozedurale Synthese) · Progressive Web App · IndexedDB · Chrome DevTools Protocol (Headless-Tests) · GitHub Pages