Archiviazione centralizzata e strumenti di codice VS per modder
SiloDB è uno strumento di infrastruttura essenziale per Farming Simulator 25. Offre ai creatori di mod un database centralizzato e strutturato per archiviare informazioni in modo persistente, senza rischio di conflitto tra mod grazie a un sistema di isolamento "Namespace".
Niente più file XML o JSON complessi da gestire manualmente per ogni mod. Con SiloDB i dati vengono organizzati, digitati e salvati automaticamente nella cartella del gioco (Savegame).
Caratteristiche principali:
- 📦 Sistema ORM completo: definisci i tuoi modelli di dati (campi, tipi, valori predefiniti).
- 🛡️ Isolamento totale: ogni mod ha il proprio spazio di archiviazione (namespace).
- 💾 Persistenza automatica: i dati sono collegati al backup corrente.
- ⚡ Prestazioni ottimizzate: motore NoSQL leggero basato su JSON.
- 🛠️ Strumenti per sviluppatori: comandi della console inclusi per ispezionare e modificare il database in tempo reale.
- 🔗 Configurazione zero: si integra tramite una semplice dipendenza in modDesc.xml.
Per potenziare il tuo flusso di lavoro, viene fornito con un'estensione VS Code dedicata che include IntelliSense, frammenti di codice e un albero live per ispezionare i file del database direttamente nell'editor.
---
Guida introduttiva (moder)
Per utilizzare SiloDB nel tuo progetto, aggiungi prima la dipendenza nel tuo modDesc.xml:
1 <dipendenze>
2 <nome dipendenza="FS25_SILODB" />
3</dipendenze>
Esempio di implementazione (API v2.0):
Ecco come inizializzare l'API, definire un modello e salvare i dati in poche righe:
-- 1. Inizializzazione (accesso all'API globale)
SILODB locale = g_globalMods["FS25_SILODB"]
se SILODB e SILODB.isReady() allora
-- Connessione al tuo spazio di archiviazione dedicato
db locale = SILODB.bind("FS25_MonMod")
-- 2. Definizione del modello (struttura dei dati)
db:define("Statistiche giocatore", {
campi = {
nome = { tipo = "stringa", obbligatorio = vero },
punti = { tipo = "numero", predefinito = 0 },
isVIP = { tipo = "booleano", predefinito = false },
opzioni = { tipo = "tabella" }
}
})
-- 3. Salvataggio dei dati (Imposta / Crea)
newRecord locale, err = db:create("PlayerStats", {
nome = "Grizzly",
punti = 150,
isVIP = vero
})
altrimenti sbagli allora
print("Dati salvati con ID: " ..newRecord.id)
fine
-- Aggiornamento di un record esistente
db:update("PlayerStats", newRecord.id, { punti = 200 })
fine
---
Comandi della console (Debug):
- dbList <namespace>: elenca tutte le chiavi/modelli di un mod.
- dbGet <namespace> <model> <id>: visualizza il contenuto di un record.
- dbSet <namespace> <key> <value>: modifica rapidamente un valore semplice.
---
Lasciati coinvolgere
Cerchiamo feedback! Che tu voglia segnalare un bug, richiedere una funzionalità o suggerire un'integrazione, partecipa alla conversazione su GitHub.
Deposito e documenti:
SILODB: https://github.com/LeGrizzly/FS25_SILODB
Estensione VSCode: https://github.com/LeGrizzly/VS_Code_SILODB
Discordia: https://discord.gg/7xUh3AsJPZ
Principali modifiche:
- Rebranding completo: DBAPI diventa SILODB (modDesc, script, comandi console e API).
- Transizione a ORM: Introduzione di un sistema strutturato di gestione dei dati (CRUD: Crea, Aggiorna, Cancella, Trova).
- Motore di query: aggiunto QueryEngine (filtraggio, ordinamento, impaginazione) e SchemaValidator.
Modifiche importanti:
- Rimozione del valore-chiave: i vecchi metodi getValue, setValue, deleteValue e listKeys sono stati rimossi.
- Nuova esportazione: gli script ora devono chiamare SILODB anziché DBAPI.
Miglioramenti:
- Aggiornato EsempioDbUsage.lua con gestione degli errori.