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