Lokale Deployment
SpacetimeDB lokaal draaien voor development.
Vereisten
Rust
# Installeer Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Voeg WASM target toe
rustup target add wasm32-unknown-unknown
SpacetimeDB CLI
# Installeer SpacetimeDB
curl -fsSL https://install.spacetimedb.com | bash
# Verifieer
spacetime --version
Server Starten
Methode 1: Standalone
# Start SpacetimeDB server
spacetime start
# Server draait op ws://localhost:3000
Methode 2: Met specifieke poort
spacetime start --listen-addr 127.0.0.1:3001
Module Bouwen
cd server
# Build de Rust module naar WASM
spacetime build
# Output: target/wasm32-unknown-unknown/release/milenas_treehouse.wasm
Module Publishen
Eerste keer (nieuwe database)
spacetime publish milenas-treehouse --clear-database
Updates (behoud data)
spacetime publish milenas-treehouse
Met specifieke server
spacetime publish milenas-treehouse --server localhost:3000
Database Beheer
Schema bekijken
spacetime describe milenas-treehouse
SQL queries uitvoeren
spacetime sql milenas-treehouse "SELECT * FROM player"
Logs bekijken
# Follow logs
spacetime logs milenas-treehouse -f
# Laatste 100 regels
spacetime logs milenas-treehouse -n 100
Database wissen
spacetime delete milenas-treehouse
spacetime publish milenas-treehouse --clear-database
Development Workflow
1. Terminal Setup
# Terminal 1: SpacetimeDB server
spacetime start
# Terminal 2: Logs (optioneel)
spacetime logs milenas-treehouse -f
# Terminal 3: Development
cd server
# ... edit code ...
spacetime build && spacetime publish milenas-treehouse
2. Hot Reload Script
#!/bin/bash
# dev.sh - Auto-rebuild on change
while true; do
inotifywait -e modify -r src/
echo "Changes detected, rebuilding..."
spacetime build && spacetime publish milenas-treehouse
echo "Done!"
done
3. Godot Verbinding
In Godot client configuratie:
# addons/SpacetimeDB/config.gd
const SERVER_URL = "ws://localhost:3000"
const MODULE_NAME = "milenas-treehouse"
Test Data Seeden
Via SQL
# Container types
spacetime sql milenas-treehouse "
INSERT INTO container_type (type_id, display_name, slot_count, icon_path)
VALUES ('starter_bag', 'Starter Rugzak', 8, 'containers/starter.png')
"
# Item definitions
spacetime sql milenas-treehouse "
INSERT INTO item_definition
(item_id, category, display_name, description, icon_path, max_stack, is_tradeable, rarity)
VALUES
('honey_jar', 'food', 'Honingpot', 'Zoete honing', 'items/honey.png', 99, true, 0)
"
Via Seed Script
# seed.sh
#!/bin/bash
echo "Seeding container types..."
spacetime sql milenas-treehouse < seeds/container_types.sql
echo "Seeding items..."
spacetime sql milenas-treehouse < seeds/items.sql
echo "Seeding quests..."
spacetime sql milenas-treehouse < seeds/quests.sql
echo "Done!"
Troubleshooting
"Module not found"
# Controleer of module gepublished is
spacetime describe milenas-treehouse
# Zo niet, publish opnieuw
spacetime publish milenas-treehouse --clear-database
"Connection refused"
# Check of server draait
ps aux | grep spacetime
# Start opnieuw
spacetime start
"Build failed"
# Check Rust errors
cd server
cargo check
# Check WASM target
rustup target list | grep wasm32
"Table already exists"
Bij schema wijzigingen soms nodig:
# ⚠️ Wist alle data!
spacetime delete milenas-treehouse
spacetime publish milenas-treehouse --clear-database
Environment Variables
# .env.local
SPACETIME_HOST=localhost:3000
SPACETIME_MODULE=milenas-treehouse
VSCode Setup
tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "Build & Publish",
"type": "shell",
"command": "cd server && spacetime build && spacetime publish milenas-treehouse",
"group": {
"kind": "build",
"isDefault": true
}
},
{
"label": "Start Server",
"type": "shell",
"command": "spacetime start",
"isBackground": true
}
]
}
Keyboard Shortcuts
Ctrl+Shift+B- Build & PublishF5- Start server (met launch config)