Armazenamento centralizado e ferramentas de código VS para modders
SiloDB é uma ferramenta de infraestrutura essencial para Farming Simulator 25. Oferece aos criadores de mod um banco de dados centralizado e estruturado para armazenar informações de forma persistente, sem risco de conflito entre mods, graças a um sistema de isolamento "Namespace".
Chega de arquivos XML ou JSON complexos para gerenciar manualmente para cada mod. Com o SiloDB os dados são organizados, digitados e salvos automaticamente na pasta do jogo (Savegame).
Principais características:
- 📦 Sistema ORM completo: Defina seus modelos de dados (campos, tipos, valores padrão).
- 🛡️ Isolamento total: Cada mod possui seu próprio espaço de armazenamento (namespace).
- 💾 Persistência automática: os dados são vinculados ao backup atual.
- ⚡ Desempenho otimizado: mecanismo NoSQL leve baseado em JSON.
- 🛠️ Ferramentas de desenvolvedor: comandos de console incluídos para inspecionar e modificar o banco de dados em tempo real.
- 🔗 Configuração zero: Integra-se através de uma dependência simples em modDesc.xml.
Para impulsionar seu fluxo de trabalho, ele vem com uma extensão VS Code dedicada, incluindo IntelliSense, trechos de código e uma árvore dinâmica para inspecionar seus arquivos de banco de dados diretamente no editor.
---
Guia de primeiros passos (Moders)
Para usar o SiloDB em seu projeto, primeiro adicione a dependência em seu modDesc.xml:
1 <dependências>
2 <nome da dependência="FS25_SILODB" />
3 </dependências>
Exemplo de implementação (API v2.0):
Veja como inicializar a API, definir um modelo e salvar dados em poucas linhas:
-- 1. Inicialização (Acesso à API global)
SILODB local = g_globalMods["FS25_SILODB"]
se SILODB e SILODB.isReady() então
-- Conexão ao seu espaço de armazenamento dedicado
banco de dados local = SILODB.bind("FS25_MonMod")
-- 2. Definição do modelo (estrutura de dados)
db:define("Estatísticas do Jogador", {
campos = {
nome = { tipo = "string", obrigatório = verdadeiro },
pontos = { tipo = "número", padrão = 0 },
isVIP = { tipo = "booleano", padrão = falso },
opções = { tipo = "tabela" }
}
})
-- 3. Salvando dados (Definir/Criar)
local newRecord, err = db:create("PlayerStats", {
nome = "Grizzly",
pontos = 150,
éVIP = verdadeiro
})
se não errar então
print("Dados salvos com ID: " .. newRecord.id)
fim
-- Atualizando um registro existente
db:update("PlayerStats", newRecord.id, { pontos = 200 })
fim
---
Comandos do console (depuração):
- dbList <namespace>: Lista todas as chaves/modelos de um mod.
- dbGet <namespace> <model> <id>: Exibe o conteúdo de um registro.
- dbSet <namespace> <key> <value>: Modifica um valor simples rapidamente.
---
Envolva-se
Estamos procurando feedback! Se você deseja relatar um bug, solicitar um recurso ou sugerir uma integração, participe da conversa no GitHub.
Depósito e documentos:
SILODB: https://github.com/LeGrizzly/FS25_SILODB
Extensão VSCode: https://github.com/LeGrizzly/VS_Code_SILODB
Discord: https://discord.gg/7xUh3AsJPZ
Principais mudanças:
- Rebranding completo: DBAPI passa a ser SILODB (modDesc, scripts, comandos de console e API).
- Transição para ORM: Introdução de um sistema estruturado de gestão de dados (CRUD: Create, Update, Delete, Find).
- Query Engine: Adicionado QueryEngine (filtragem, classificação, paginação) e SchemaValidator.
Quebrando mudanças:
- Remoção de Key-Value: Os antigos métodos getValue, setValue, deleteValue e listKeys são removidos.
- Nova Exportação: Os scripts agora devem chamar SILODB em vez de DBAPI.
Melhorias:
- ExemploDbUsage.lua atualizado com tratamento de erros.