Ein moderner, unabhängiger C++20 / DirectX 12-Editor für Rappelz'
.nui-UI-Layout-Format — von Grund auf neu entwickelt, kein Fork und keine Modernisierung des ursprünglichen Werkzeugs.
Rappelz' ursprünglicher .nui-Editor ("JTool") ist ein rund 20 Jahre altes MFC- + DirectX-9-Werkzeug. Es funktioniert, aber seine Architektur hat sich über die Jahre strukturelle Probleme eingehandelt: ein Parser, der bei der ersten fehlerhaften Zeile die gesamte Datei verwirft (im Release-Build sogar stillschweigend), ein Speicherpfad, der als eigenständiger String-Builder komplett vom Parser entkoppelt ist (nachweislicher Datenverlust — z. B. wird style bei Kind-Controls zwar gelesen, aber nie zurückgeschrieben), ein DirectX-9-Renderer ohne jegliches Batching und ein Property-Inspector, der ein einziges hartkodiertes Formular ist statt vom tatsächlichen Schema jedes Steuerelement-Typs abgeleitet zu werden.
NUIStudio löst jedes dieser Probleme strukturell, nicht durch Nachbessern am Original: ein gemeinsamer Parser-/Serializer-Codec (Lesen und Schreiben können nicht mehr auseinanderdriften), Fehlerbehandlung pro Block (eine fehlerhafte Zeile beschädigt ein Control, nicht die ganze Datei), ein gebündelter DX12-Sprite-Renderer und ein schemagetriebener Inspector, generiert aus einer datengetriebenen Control-Type-Registry.
Das Legacy-Werkzeug bleibt dabei als Referenz wertvoll — jede Rendering- und Format-Entscheidung in diesem Projekt wurde gegen dessen echten Quellcode und echte .nui-Inhalte verifiziert, nicht geraten. Es wird nie verändert, nie weiterverbreitet und ist nicht Teil dieses Wikis oder des Quell-Repositories (siehe Verhältnis zum Legacy-Werkzeug).
| Ich möchte... | Seite |
|---|---|
| NUIStudio bauen und starten | Installation & Build |
| Die ersten Schritte im Editor verstehen | Schnellstart |
| Die Gesamtarchitektur verstehen | Architektur-Übersicht |
Wissen, wie .nui-Dateien aufgebaut sind |
Das .nui-Format |
| Alle Steuerelement-Typen sehen | Steuerelemente-Referenz |
| Verstehen, wie Text/Captions gerendert werden | Text- und Caption-Rendering |
| Die Editor-Oberfläche kennenlernen | Canvas, Hierarchie & Inspector |
| Wissen, wie sich NUIStudio selbst aktualisiert | Automatische Updates |
| Selbst mitentwickeln | Bauen & Testen |
| Ein Fachwort nachschlagen | Glossar |
| Bereich | Status |
|---|---|
| Parser / Serializer / Round-Trip | ✅ Fertig, gegen echten mehrhundert-Dateien-Korpus getestet |
| Undo/Redo, Selektion, Zwischenablage | ✅ Fertig |
| DX12-Renderer-Kern (Device, Batching, Atlas) | ✅ Fertig |
| Sprite- / 9-Slice-Rendering | ✅ Fertig, inkl. typspezifischer Komposition für Buttons (3-Piece pro Zustand), Gauges (Back-Leiste) und Scrollbars (Hintergrund/Buttons/Thumb) |
| Text-/Caption-Rendering (Fonts, Tags, Ausrichtung, Shadow/Outline/Glow/2xGlow/Fett) | ✅ Fertig (Icons/Emoticons bewusst bildtreu ungezeichnet — das Original selbst zeichnet sie nie) |
| Editor-Shell (Canvas, Hierarchie, Inspector, Asset Browser) | ✅ Fertig |
| Control Palette & Drag-&-Drop (neue Controls, Sprite-Zuweisung) | ✅ Fertig |
| Rappelz-Erweiterungspaket (spielspezifische Typen) | ✅ Fertig (alle ~35 Typen schema-registriert; Rendering pro Typ gegen den echten Content-Korpus verifiziert statt geraten — z. B. chaos_gauge mit echtem Idle-Zustand, ungenutzte Typen bewusst auf dem generischen Fallback belassen) |
| Preview-/Testmodus | ✅ Fertig (Button, Checkbox, Edit, Slider, Scrollbar, ComboBox, Tab-Köpfe sind real interaktiv; Wertebereiche bei Slider/Scrollbar und Item-Listen bei ComboBox sind Platzhalter, da diese Daten nie in der .nui-Datei stehen) |
| Autospeichern & Absturz-Wiederherstellung | ✅ Fertig |
| Automatische Updates | ✅ Fertig (prüft ein version.json-Manifest auf einem eigenen Patch-Server, lädt bei neuerer Version die .exe herunter, verifiziert optional SHA-256, startet automatisch neu) |
| Hardening & Release-Verpackung | ✅ Fertig (clang-tidy-Durchlauf: 1 echter Fund behoben, siehe Bauen & Testen; Performance-/Speicherprofil auf der größten Korpus-Datei; CPack-Distributable NUIStudio-1.0.7-win64.zip) |
Diese vier Grundsätze ziehen sich durch die gesamte Entwicklung von NUIStudio und tauchen in fast jeder Wiki-Seite als konkrete Beispiele wieder auf: