Gecentraliseerde opslag en VS-codetools voor modders
SiloDB is een essentiële infrastructuurtool voor Farming Simulator 25. Het biedt mod-makers een gecentraliseerde en gestructureerde database om informatie permanent op te slaan, zonder risico op conflicten tussen mods dankzij een "Namespace"-isolatiesysteem.
Geen complexe XML- of JSON-bestanden meer die voor elke mod handmatig moeten worden beheerd. Met SiloDB worden gegevens georganiseerd, getypt en automatisch opgeslagen in uw gamemap (Savegame).
Belangrijkste kenmerken:
- 📦 Compleet ORM-systeem: definieer uw datamodellen (velden, typen, standaardwaarden).
- 🛡️ Totale isolatie: elke mod heeft zijn eigen opslagruimte (naamruimte).
- 💾 Automatische persistentie: gegevens worden gekoppeld aan de huidige back-up.
- ⚡ Geoptimaliseerde prestaties: lichtgewicht NoSQL-engine gebaseerd op JSON.
- 🛠️ Developer Tools: Console-opdrachten inbegrepen om de database in realtime te inspecteren en aan te passen.
- 🔗 Nulconfiguratie: integreert via een eenvoudige afhankelijkheid in modDesc.xml.
Om uw workflow te verbeteren, wordt het geleverd met een speciale VS Code-extensie inclusief IntelliSense, codefragmenten en een live-boom om uw databasebestanden rechtstreeks in de editor te inspecteren.
---
Handleiding Aan de slag (moders)
Om SiloDB in uw project te gebruiken, voegt u eerst de afhankelijkheid toe in uw modDesc.xml:
1 <afhankelijkheden>
2 <afhankelijkheidsnaam="FS25_SILODB" />
3 </afhankelijkheden>
Implementatievoorbeeld (API v2.0):
Hier leest u hoe u de API initialiseert, een sjabloon definieert en gegevens in een paar regels opslaat:
-- 1. Initialisatie (toegang tot globale API)
lokale SILODB = g_globalMods["FS25_SILODB"]
als SILODB en SILODB.isReady() dan
-- Verbinding met uw speciale opslagruimte
lokale database = SILODB.bind("FS25_MonMod")
-- 2. Modeldefinitie (gegevensstructuur)
db:define("Spelerstatistieken", {
velden = {
naam = {type = "tekenreeks", vereist = waar },
punten = { type = "aantal", standaard = 0 },
isVIP = {type = "boolean", standaard = false },
opties = { type = "tabel" }
}
})
-- 3. Gegevens opslaan (Instellen / Maken)
lokaal newRecord, err = db:create("PlayerStats", {
naam = "Grizzly",
punten = 150,
isVIP = waar
})
zo niet, dan fout
print("Gegevens opgeslagen met ID: " .. newRecord.id)
einde
-- Een bestaand record bijwerken
db:update("PlayerStats", newRecord.id, { punten = 200 })
einde
---
Console-opdrachten (foutopsporing):
- dbList <namespace>: Toon alle sleutels/modellen van een mod.
- dbGet <naamruimte> <model> <id>: geeft de inhoud van een record weer.
- dbSet <naamruimte> <sleutel> <waarde>: Wijzigt snel een eenvoudige waarde.
---
Doe mee
Wij zijn op zoek naar feedback! Of je nu een bug wilt melden, een functie wilt aanvragen of een integratie wilt voorstellen, neem deel aan het gesprek op GitHub.
Borg en documenten:
SILODB: https://github.com/LeGrizzly/FS25_SILODB
VSCode-extensie: https://github.com/LeGrizzly/VS_Code_SILODB
Onenigheid: https://discord.gg/7xUh3AsJPZ
Grote veranderingen:
- Volledige rebranding: DBAPI wordt SILODB (modDesc, scripts, console-opdrachten en API).
- Overgang naar ORM: Introductie van een gestructureerd datamanagementsysteem (CRUD: Create, Update, Delete, Find).
- Query Engine: QueryEngine toegevoegd (filteren, sorteren, paginering) en SchemaValidator.
Brekende veranderingen:
- Verwijdering van Key-Value: de oude methoden getValue, setValue, deleteValue en listKeys zijn verwijderd.
- Nieuwe export: scripts moeten nu SILODB aanroepen in plaats van DBAPI.
Verbeteringen:
- VoorbeeldDbUsage.lua bijgewerkt met foutafhandeling.