SheetForge — Tabellengesteuerte Datenpipeline für Unity
SheetForge verwandelt eine Tabelle (Google Sheets oder eine lokale TSV-/CSV-/xlsx-Datei) in stark typisierte C#-Klassen und per Bake erzeugte ScriptableObjects, die Ihr Spiel über eine stabile Adresse lädt.
Jede Zelle wird beim Import validiert. Ein fehlerhafter Wert wird beim Import erkannt, nicht erst, wenn die Zeile zur Laufzeit zum ersten Mal angesteuert wird. Er wird als Satz mit Tab, Zeile, Spalte und einem Lösungsvorschlag gemeldet. Die Pipeline arbeitet wie ein Compiler: Sie sammelt alle Fehler in einem Durchgang und fügt die unveränderlichen Definitionen erst aus einer vollständig fehlerfreien Tabelle zusammen.
Die Tabelle ist stets die einzige Quelle der Wahrheit; das per Bake erzeugte SO ist nur ein Lookup-Cache. Darum herum:
- Round-Trip. Der Import hat einen Rückweg: Export/Push schreibt Werte zurück in die Tabelle und erhält dabei deren Struktur.
- Authoring im Editor. Ein Authoring-Fenster im Editor – das Data Studio – bearbeitet die Tabelle mit Ctrl+Z-Undo.
- Lokalisierte Oberfläche. Die Produktoberfläche ist in 10 Sprachen verfügbar.
- Erweiterung per Plugin. Plugins fügen Zelltypen, Validierungsregeln, Graphkanten und Importquellen hinzu, ohne den Core zu verändern. Die Grenze wird vom C#-Compiler erzwungen.
Die öffentliche API ist ein Authoring-Kernel: Eine zweite Authoring-Oberfläche, etwa eine Node-Graph-Canvas, lässt sich darauf aufbauen – ganz ohne Änderungen an Core oder Editor. Siehe Authoring-Kernel.
Voraussetzungen: Unity 6 und das Addressables-Paket (com.unity.addressables) – das Laden zur Laufzeit ist adressbasiert. Das Asset kompiliert auch ohne das Paket, doch die Pipeline bleibt gesperrt, bis es installiert ist. Erste Schritte begleitet Sie durch die geführte Installation.
So funktioniert es (im Überblick)
ENTRANCES TRUTH EXITS
┌───────────────────────────┐ ┌──────────────────┐ ┌───────────────────────────────┐
│ Google Sheets (SheetsApi/ │ │ │ │ Strongly-typed C# classes │
│ ExportUrl) │──▶│ Immutable IR │──▶│ (codegen, last stage) │
│ Local TSV / CSV / xlsx │ │ (Definitions) │ │ Per-tab Database SO (bake) │
│ Data Studio (in-editor │ │ │ │ → Addressables address │
│ authoring, WYSIWYG) │ │ built ONLY if │ │ "SheetForge/{tab}" │
│ Custom source providers │ │ validation is │ │ Export / Push back to the │
│ (plugin, e.g. DB/REST) │ │ 100% clean │ │ sheet (round-trip) │
└───────────────────────────┘ └──────────────────┘ └───────────────────────────────┘Jeder Eingang erzeugt dieselbe validierte IR, und jeder Ausgang wird daraus abgeleitet. Ein Fehler irgendwo bedeutet gar keine Ausgabe – kein Teil-Zusammenbau.
Jeder Fehler nennt Ihnen:
- wo – Tab · Zeile · Spaltenbuchstabe und Feldname
- was – den fehlerhaften Wert
- warum – die verletzte Regel
- wie – einen umsetzbaren Lösungsvorschlag
Das ersetzt, was ein Team sonst pro Tabelle selbst schreiben müsste: den Parser, den Validator, den Codegenerator und den Ladepfad.
Kennzahlen
- Import von 50,000 Zeilen × 20 Spalten ≈ 628 ms im laufenden Editor (Mono); 50 Tabs × 2,000 Zeilen mit 180k Referenzzellen ≈ 294 ms.
- Strukturierte Fehlercodes – eine vollständige Validierungsreferenz.
- 10 Sprachen für die gesamte Produktoberfläche (Menüs, das Authoring-Fenster, Dialoge, Berichte, Tooltips).
- Testsuite: ein zweigleisiger Prüfstand aus Headless-.NET-Tests und Unity-EditMode-Tests, 0 Fehlschläge – die genauen Zahlen stehen in Möglichkeiten & Grenzen ▸ Verifizierter Zustand.
Dokumentationsübersicht
| Seite | Inhalt |
|---|---|
| Erste Schritte | Voraussetzungen (Unity 6, Addressables), Installation, Einstellungen, Ihr erster Import, die Demo-Szene |
| Kernkonzepte | Tabelle = einzige Quelle der Wahrheit, die IR, die Pipeline-Stufen, das per Bake erzeugte SO als Cache, Baselines, die automatische Importkette |
| Tabellensyntax | Markierungen (@name/@type/@desc/@overlap/@style/@enum/@loc), das vollständige Typsystem, Enum-Definitionstabellen, Notationsregeln |
| Data Studio | Die Authoring-Oberfläche – Nachschlagen, Suche, Zellbearbeitung, Strukturbearbeitung, die Record-Canvas, Ctrl+Z, Vorab-Validierung |
| Quellen, Export & Push | Lokale und Google-Quellen, Provider-Einstellungen, Export-Round-Trip, Push-Sicherungen, ins Sheet geschriebene Dropdowns |
| Google Sheets einrichten | Anlegen des Service-Accounts und des JSON-Schlüssels, Freigeben der Tabelle, SheetForge auf den Schlüssel verweisen |
| Lokalisierung | Die 10-sprachige Oberfläche, benutzerspezifische Sprache, Menü-Neuerzeugung, Hinzufügen von Übersetzungen |
| Lokalisierungstabellen | Der Text Ihres Spiels als Tabelle – @loc-Sprachspalten, LocRef-Referenzen, Schlüsselkonstanten, die StringTable-Bridge zu Unity Localization, Übersetzungs-Workflows |
| Plugin-Erstellung | Die 16 Plugin-Verträge (Zelltypen, Validatoren, Kanten, Markierungen, Vorlagen, Canvas-Overrides, Code-Registries, Themes, deklarative Authoring-Oberflächen, UI-Strings, Pipeline-Beobachter, Quellen, Studio-Widgets/-Aktionen/-Zell-Editoren/-Panels) + die Opt-in-Capabilities, einschließlich vollständiger Referenz-Parität für Ihre eigene Notation – eine Domäne hinzufügen, ganz ohne Änderungen am Core |
| Authoring-Kernel | Aufbau einer zweiten Authoring-Oberfläche (z. B. einer Graph-Canvas) auf der öffentlichen Engine-API |
| API-Referenz | Die vollständige öffentliche API-Oberfläche – jeder öffentliche Typ, nach Assembly |
| Möglichkeiten & Grenzen | Die vollständige Liste dessen, was funktioniert, was nicht, und warum |
| FAQ & Fehlerbehebung | Probleme beim ersten Lauf und bei der Integration, mit Lösungen |
| SheetForge Web | Der Begleiter im Browser – derselbe Core zu WebAssembly kompiliert, Parität bei Authoring/Validierung/Reflection, wann Sie ihn einsetzen |
| Web-Plugin-Markt | Plugins aus der Registry installieren (Ein-Klick, hash-fixiert), das Kompatibilitäts-Gate, ungeprüfte Plugins per GitHub-URL sideloaden, das Markt-Fenster in Unity |
| Web-Zugriff auf Google Sheets | Google Sheets von der veröffentlichten Website aus über Ihre eigene OAuth lesen und schreiben, sowie die Regel, dass der Service-Account-Schlüssel ausschließlich lokal bleibt |
SheetForge Web (Begleit-App)
Eine begleitende Web-App unter web.sheetforge.workers.dev bringt Authoring, Validierung und Sheet-Reflection in den Browser.
Sie kompiliert denselben C#-Core zu WebAssembly – keine Neuimplementierung –, sodass Parser und Validator niemals vom Unity-Asset abweichen können, und eine in Unity gebaute Plugin-DLL lädt unverändert. Codegen und Bake bleiben eine reine Unity-Aufgabe; die Web-Ausgabe ist die gespiegelte Tabelle.
Die drei Web-Seiten oben decken die App, ihren Plugin-Markt und ihren Google-Sheets-Zugriff ab. Jede Sheet-Syntax-Regel dieser Website – einschließlich der IntId@Tab-Referenzparität – gilt im Browser identisch.
Designprinzipien
- Die Tabelle ist kanonisch. Direktes Bearbeiten des SO ist kein Workflow. Alles läuft über die Tabelle und die Re-Import-Validierung. (Ein Schalter für „Testbearbeitung" existiert für temporäre Laufzeit-Experimente – er wird nie zurückgeschrieben und verschwindet beim erneuten Import.)
- Alles sammeln, nichts Kaputtes zusammenbauen. Die Validierung stoppt nie beim ersten Fehler, und ein Fehler bedeutet keine Ausgabe. Sie beheben eine vollständige Liste einmalig, statt einer Schleife aus Einzelfehler-Beheben-und-erneut-Importieren.
- WYSIWYG-Authoring. Im Data Studio ist alles, was Sie vormerken, sofort exakt so sichtbar, wie es landen wird: hinzugefügte Spalten erscheinen, gelöschte Zeilen verschwinden, noch bevor Sie in die Tabelle schreiben.
- Vollautomatisch. Nach einer Authoring-Aktion laufen Codegen → Neukompilierung → Bake vollständig durch, ohne dass Sie etwas erneut anstoßen müssen – auch über den Domain-Reload hinweg.
- Open-Closed-Erweiterung. Neue Zelltypen, Validierungsregeln, Graphkanten und Importquellen kommen per Registrierung hinzu; die Pipeline selbst wird nie verändert.
- Dokumentierte Grenzen. Was das Produkt nicht kann, wird ebenso präzise dokumentiert wie das, was es kann. Siehe Möglichkeiten & Grenzen.
- Offene Daten. Die Wahrheit ist eine einfache TSV-/CSV-/xlsx-Datei oder ein Google Sheet, lesbar mit jedem Werkzeug. Entfernt man SheetForge, verschwindet die Pipeline – nicht Ihre Daten.
Verwandte Seiten
- Hier beginnen: Erste Schritte
- Das Modell verstehen: Kernkonzepte