Stockage centralisé et outils de code VS pour les moddeurs
SiloDB est un outil d'infrastructure indispensable pour Farming Simulator 25. Il offre aux créateurs de mods une base de données centralisée et structurée pour stocker des informations de manière persistante, sans risque de conflit entre les mods grâce à un système d'isolation par "Namespace".
Fini les fichiers XML ou JSON complexes à gérer manuellement pour chaque mod. Avec SiloDB, les données sont organisées, typées et sauvegardées automatiquement dans votre dossier de partie (Savegame).
Caractéristiques principales :
- 📦 Système ORM complet : Définissez vos modèles de données (champs, types, valeurs par défaut).
- 🛡️ Isolation totale : Chaque mod possède son propre espace de stockage (namespace).
- 💾 Persistance automatique : Les données sont liées à la sauvegarde en cours.
- ⚡ Performances optimisées : Moteur NoSQL léger basé sur le JSON.
- 🛠️ Outils Développeur : Commandes consoles incluses pour inspecter et modifier la base en temps réel.
- 🔗 Zéro configuration : S'intègre via une simple dépendance dans le modDesc.xml.
Pour dynamiser votre flux de travail, il est livré avec une extension VS Code dédiée comprenant IntelliSense, des extraits de code et une arborescence en direct pour inspecter vos fichiers de base de données directement dans l'éditeur.
---
Guide de démarrage (Moddeurs)
Pour utiliser SiloDB dans votre projet, ajoutez d'abord la dépendance dans votre modDesc.xml :
1 <dependencies>
2 <dependency name="FS25_SILODB" />
3 </dependencies>
Exemple d'implémentation (API v2.0) :
Voici comment initialiser l'API, définir un modèle et enregistrer des données en quelques lignes :
-- 1. Initialisation (Accès à l'API globale)
local SILODB = g_globalMods["FS25_SILODB"]
if SILODB and SILODB.isReady() then
-- Connexion à votre espace de stockage dédié
local db = SILODB.bind("FS25_MonMod")
-- 2. Définition du Modèle (Structure des données)
db:define("PlayerStats", {
fields = {
name = { type = "string", required = true },
points = { type = "number", default = 0 },
isVIP = { type = "boolean", default = false },
options = { type = "table" }
}
})
-- 3. Enregistrement des données (Set / Create)
local newRecord, err = db:create("PlayerStats", {
name = "Grizzly",
points = 150,
isVIP = true
})
if not err then
print("Données sauvegardées avec l'ID : " .. newRecord.id)
end
-- Mise à jour d'un enregistrement existant
db:update("PlayerStats", newRecord.id, { points = 200 })
end
---
Commandes Console (Debug) :
- dbList <namespace> : Liste toutes les clés/modèles d'un mod.
- dbGet <namespace> <modèle> <id> : Affiche le contenu d'un enregistrement.
- dbSet <namespace> <clé> <valeur> : Modifie une valeur simple rapidement.
---
Impliquez-vous
Nous recherchons des commentaires ! Que vous souhaitiez signaler un bug, demander une fonctionnalité ou proposer une intégration, rejoignez la conversation sur GitHub.
Dépôt et documents :
SILODB : https://github.com/LeGrizzly/FS25_SILODB
Extension VSCode : https://github.com/LeGrizzly/VS_Code_SILODB
Discorde : https://discord.gg/7xUh3AsJPZ
Changements Majeurs :
- Rebranding complet : DBAPI devient SILODB (modDesc, scripts, commandes console et API).
- Passage à l'ORM : Introduction d'un système de gestion de données structuré (CRUD : Create, Update, Delete, Find).
- Moteur de Requêtes : Ajout du QueryEngine (filtrage, tri, pagination) et du SchemaValidator.
Breaking Changes :
- Suppression du Key-Value : Les anciennes méthodes getValue, setValue, deleteValue et listKeys sont retirées.
- Nouvel Export : Les scripts doivent désormais appeler SILODB au lieu de DBAPI.
Améliorations :
- Mise à jour de ExampleDbUsage.lua avec gestion d'erreurs.