SheetForge — Pipeline de données piloté par feuille de calcul pour Unity
SheetForge transforme une feuille de calcul (Google Sheets ou TSV/CSV/xlsx local) en classes C# fortement typées et en ScriptableObjects bakés que votre jeu charge par une adresse stable.
Chaque cellule est validée à l'import. Une valeur incorrecte est détectée au moment de l'import, pas quand la ligne est atteinte pour la première fois à l'exécution. Elle est signalée sous forme de phrase avec son onglet, sa ligne, sa colonne, et une correction suggérée. Le pipeline fonctionne comme un compilateur : il recueille toutes les erreurs en une seule passe et n'assemble les Définitions immuables qu'à partir d'une feuille entièrement propre.
La feuille est toujours la source unique de vérité ; la SO issue du bake n'est qu'un cache de consultation. Autour de cela :
- Aller-retour. L'import a un chemin inverse : Export/Push réécrit les valeurs dans la feuille tout en préservant sa structure.
- Création intégrée à l'éditeur. Une fenêtre de création intégrée à l'éditeur — le Data Studio — modifie la feuille avec un Ctrl+Z d'annulation.
- Interface localisée. L'interface du produit est livrée en 10 langues.
- Extension par plugin. Les plugins ajoutent des types de cellule, des règles de validation, des arêtes de graphe, et des sources d'import sans modifier le Core. La frontière est imposée par le compilateur C#.
L'API publique est un noyau de création : une seconde surface de création, comme un canevas de graphe à nœuds, peut être construite dessus sans aucun changement dans Core ou Editor — voir Noyau de création.
Prérequis : Unity 6 et le package Addressables (com.unity.addressables) — le chargement à l'exécution est fondé sur l'adresse. L'asset compile sans le package, mais le pipeline reste verrouillé tant qu'il n'est pas installé. Prise en main couvre l'installation guidée.
Comment ça fonctionne (en un coup d'œil)
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) │
└───────────────────────────┘ └──────────────────┘ └───────────────────────────────┘Chaque entrée produit le même IR validé, et chaque sortie en est dérivée. Une seule erreur, où que ce soit, signifie aucune sortie du tout — aucun assemblage partiel.
Chaque erreur vous indique :
- où — onglet · ligne · lettre de colonne et nom de champ
- quoi — la valeur fautive
- pourquoi — la règle enfreinte
- comment — une suggestion exploitable
Cela remplace ce qu'une équipe écrirait autrement pour chaque table : l'analyseur syntaxique (parser), le validateur, le générateur de code, et le chemin de chargement.
Chiffres clés
- Import de 50,000 lignes × 20 colonnes ≈ 628 ms dans l'éditeur en direct (Mono) ; 50 onglets × 2,000 lignes avec 180k cellules de référence ≈ 294 ms.
- Codes d'erreur structurés — une référence de validation complète.
- 10 langues pour toute l'interface du produit (menus, la fenêtre de création, boîtes de dialogue, rapports, infobulles).
- Suite de tests : un double harnais de tests .NET headless et de tests Unity EditMode, 0 échec — les chiffres exacts figurent dans Capacités et limites ▸ État vérifié.
Plan de la documentation
| Page | Contenu |
|---|---|
| Prise en main | Prérequis (Unity 6, Addressables), installation, paramètres, votre premier import, la scène de démonstration |
| Concepts fondamentaux | La feuille comme source unique de vérité, l'IR, les étapes du pipeline, la SO issue du bake comme cache, les baselines, la chaîne d'import automatique |
| Syntaxe des feuilles | Marqueurs (@name/@type/@desc/@overlap/@style/@enum/@loc), le système de types complet, les feuilles de définition d'enum, les règles de notation |
| Data Studio | La surface de création — consultation, recherche, édition des cellules, édition de structure, le canevas d'enregistrements, Ctrl+Z, validation préalable |
| Sources, export et push | Sources locales et Google, paramètres des fournisseurs, aller-retour d'export, garde-fous de sécurité du Push, les menus déroulants inscrits dans la feuille |
| Configuration des feuilles Google | Création du compte de service et de la clé JSON, partage de la feuille, configuration de SheetForge avec la clé |
| Localisation | L'interface en 10 langues, la langue par utilisateur, la régénération des menus, l'ajout de traductions |
| Feuilles de localisation | Le texte de votre jeu sous forme de feuille — colonnes de locale @loc, références LocRef, constantes de clé, le pont StringTable Unity Localization, flux de traduction |
| Création de plugins | Les 16 contrats de plugin (types de cellule, validateurs, arêtes, marqueurs, modèles, surcharges de canevas, registres de code, thèmes, surfaces de création déclaratives, chaînes d'UI, observateurs de pipeline, sources, widgets/actions/éditeurs de cellule/panneaux du Studio) + les capacités optionnelles, y compris la parité de référence complète pour votre propre notation — ajoutez un domaine sans aucune modification du Core |
| Noyau de création | Construction d'une seconde surface de création (par ex. un canevas de graphe) sur l'API publique du moteur |
| Référence de l'API | La surface complète de l'API publique — tous les types publics, par assembly |
| Capacités et limites | La liste complète de ce qui fonctionne, ce qui ne fonctionne pas, et pourquoi |
| FAQ et dépannage | Problèmes de premier lancement et d'intégration, avec leurs corrections |
| SheetForge Web | Le compagnon navigateur — le même cœur compilé en WebAssembly, la parité de création/validation/réflexion, quand l'utiliser |
| Marché de plugins Web | Installer des plugins depuis le registre (en un clic, verrouillés par hash), la porte de compatibilité, le sideloading de plugins non revus par URL GitHub, la fenêtre de marché intégrée à Unity |
| Accès Web à Google Sheets | Lire et écrire des feuilles Google Sheets depuis le site déployé via votre propre OAuth, et la règle de clé de compte de service locale uniquement |
SheetForge Web (compagnon)
Une application web compagne sur web.sheetforge.workers.dev apporte la création, la validation et la réflexion de feuille au navigateur.
Elle compile le même cœur C# en WebAssembly — pas une réimplémentation — de sorte que l'analyseur syntaxique et le validateur ne peuvent jamais dériver de l'asset Unity, et une DLL de plugin construite avec Unity se charge sans modification. Le codegen et le bake restent une responsabilité réservée à Unity ; la sortie web est la feuille réfléchie.
Les trois pages web ci-dessus couvrent l'application, son marché de plugins et son accès à Google Sheets. Chaque règle de syntaxe de feuille de ce site — y compris la parité de référence IntId@Tab — s'applique à l'identique dans le navigateur.
Principes de conception
- La feuille est canonique. L'édition directe de la SO n'est pas un flux de travail. Tout passe par la feuille et la validation de réimport. (Un interrupteur « Modification test » existe pour des expérimentations temporaires à l'exécution — il n'est jamais réécrit, et disparaît au réimport.)
- Tout collecter, ne rien assembler de cassé. La validation ne s'arrête jamais à la première erreur, et une seule erreur signifie aucune sortie. Vous corrigez une liste complète une seule fois, au lieu d'une boucle « corriger un puis réimporter ».
- Création WYSIWYG. Dans le Data Studio, tout ce que vous préparez est immédiatement visible exactement comme il apparaîtra à l'arrivée : les colonnes ajoutées apparaissent et les lignes supprimées disparaissent avant même que vous n'écriviez dans la feuille.
- Entièrement automatique. Après une action de création, la chaîne codegen → recompilation → bake se termine sans que vous ayez à redéclencher quoi que ce soit, à travers le rechargement de domaine.
- Extension ouverte-fermée. Les nouveaux types de cellule, règles de validation, arêtes de graphe et sources d'import s'intègrent par enregistrement ; le pipeline lui-même n'est jamais modifié.
- Limites documentées. Ce que le produit ne peut pas faire est documenté avec la même précision que ce qu'il peut faire. Voir Capacités et limites.
- Données ouvertes. La vérité est un simple fichier TSV/CSV/xlsx ou une feuille Google, lisible par n'importe quel outil. Retirer SheetForge retire le pipeline, pas vos données.
Pages associées
- Commencez ici : Prise en main
- Comprendre le modèle : Concepts fondamentaux