Ga naar hoofdinhoud

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 & Publish
  • F5 - Start server (met launch config)

Volgende​