19 Punkte von GN⁺ 2025-04-11 | 5 Kommentare | Auf WhatsApp teilen
  • SpacetimeDB ist ein System, das Datenbank- und Serverfunktionen kombiniert
  • Anstatt einen herkömmlichen Web- oder Gameserver separat zu betreiben, verbinden sich Clients direkt mit der Datenbank und führen dort die Anwendungslogik aus
  • App-Logik kann über in Rust geschriebene gespeicherte Prozeduren in Form von „Modulen“ direkt in die Datenbank hochgeladen werden
  • Die gesamte Anwendung kann als einzelnes Rust-Binary bereitgestellt werden; DevOps, Container, Server und Microservices sind dadurch nicht erforderlich

Hauptmerkmale

  • Das Konzept ähnelt Smart Contracts, hat aber nichts mit Blockchain zu tun
  • Deutlich schneller als bestehende Smart-Contract-Systeme
  • Das Backend des MMORPGs BitCraft Online besteht aus SpacetimeDB allein
  • Alle Elemente im Spiel werden in der Datenbank in Echtzeit verarbeitet und mit den Clients synchronisiert
  • Für Echtzeit-Anwendungen optimiert und mit dem Ziel minimaler Latenz entwickelt
  • Der Anwendungszustand wird im Speicher gehalten und zur Wiederherstellung im WAL (Write-Ahead Log) protokolliert

Installation

Installation unter macOS / Linux

Installation unter Windows

Mit Docker ausführen

  • Falls Docker verwendet wird
    docker run --rm --pull always -p 3000:3000 clockworklabs/spacetime start

Vier Schritte für den Einstieg

  1. Das CLI-Tool spacetime installieren
  2. Mit dem Befehl spacetime start einen einzelnen Node starten
  3. Ein Modul in einer der unterstützten Sprachen schreiben und hochladen
  4. Mit einer Client-Bibliothek eine Verbindung zur Datenbank herstellen

Sprachunterstützung

Serverseitige Module

Client-Bibliotheken

Lizenzinformationen

  • Verwendet die Lizenz BSL 1.1
  • Wechselt nach einer bestimmten Zeit zu AGPL v3.0 + Linking Exception
  • Erfordert keine Offenlegung des Quellcodes von Anwendungen, die mit SpacetimeDB integriert sind
  • Ein Free-Software-Lizenzmodell, das so gestaltet ist, dass Beiträge an die Community zurückfließen

Offizielle Dokumentation

5 Kommentare

 
ethanhur 2025-04-11

Interessante Idee. Ich frage mich, wie sie Dinge wie DDoS oder Authentifizierung gut gelöst haben.

 
turastory 2025-04-11

Allein der Name ist schon verdammt cool.

 
jujumilk3 2025-04-11

Ich dachte, das wäre wirklich originell und sähe großartig aus, aber anscheinend hatte ich es schon vor langer Zeit auf Gitstar markiert. Mein Gedächtnis …

 
xguru 2025-04-11

SpaceTimeDB - DB und Server in einer Einheit kombiniert

Ich hatte es vor anderthalb Jahren schon einmal vorgestellt, und es wird weiterhin gut aktualisiert. Offenbar haben auch a16z und Supercell investiert.

 
GN⁺ 2025-04-11
Hacker-News-Kommentare
  • SpacetimeDB gehört zu einem technischen Genre der „kosmischen Neugestaltung des Denkens“. Das birgt die Möglichkeit, die Leistung durch strukturelle Neuordnung stark zu verbessern.

    • Solche Technologien verlangen von Entwicklern, ihr Denken neu auszurichten, und es ist schwer zu unterscheiden, ob Probleme daher kommen, dass die Technik nicht vollständig angenommen wurde, oder ob ihr Versprechen nicht zu bestimmten Anwendungsfällen passt.
    • Ähnliche Technologien sind Elixir und Node; man muss den Stack übernehmen und neue Einschränkungen akzeptieren, um seltene Garantien zu erhalten.
    • Solche Technologien haben die besten Erfolgschancen, wenn Pioniere mit einer klaren Vision ihre Stärken in Open Source demonstrieren.
    • Hoffentlich gelingt es Clockwork Labs, ihr Beispielspiel erfolgreich bereitzustellen.
  • Bester Kommentar aus dem vorherigen Beitrag:

    • SpacetimeDB ist eine allgemeine Datenbank, die niedrige Latenz und WASM-Stored-Procedures unterstützt.
    • Sie wirkt wie ein solides Fundament für persistente Welten in Multiplayer-Spielen.
    • Netcode zum Kaschieren von Latenz muss man selbst implementieren.
  • SpacetimeDB wurde entwickelt, um das große MMORPG BitCraft zu unterstützen.

    • Es wurde auf die Performance-Anforderungen des Spiels zugeschnitten.
    • Es bietet sehr niedrige Latenz und hohen Durchsatz.
    • Wenn man ein neues MMO bauen will, lohnt sich ein Blick auf die Ansätze des bestehenden Marktes.
    • Am Beispiel von World of Warcraft sind die Zuverlässigkeit des Clients und die Ereignissteuerung auf dem Server der Kern des Skalierungs-Hacks.
  • Es ist schwer zu verstehen, wie man mit dieser Technologie Spieleserver schreiben soll.

    • Wenn Physiksimulation, Pathfinding, Animationen usw. auf dem Server simuliert werden müssen, stellt sich die Frage, wie man das integriert.
    • Normalerweise nutzt man den Headless-Modus von Unreal oder Unity, aber mit SpacetimeDB müsste man die Game Engine aufgeben und alles von Grund auf neu implementieren.
  • BitCraft sieht niedlich aus.

    • Der preisbezogene Begriff „maincloud“ hat bei mir zunächst persönliche Vorbehalte ausgelöst, aber das ist einfach nur eine Bezeichnung für Hosting-Guthaben.
  • YouTube empfiehlt SpacetimeDB, hat aber noch nie Videospiele entwickelt.

    • Ich würde gern Meinungen von Spieleentwicklern dazu hören, wie nützlich diese Technik in der Praxis wirklich ist.
    • Es ist schwer zu beurteilen, wie viel davon einfach gutes Marketing ist.
  • Dieses Projekt steht unter der BSL und hat eine etwas belastende zeitliche Einschränkung.

    • Pro Service ist nur eine Instanz erlaubt.
  • Man sollte das Schema relationaler Datenbanken nicht mit der Art verwechseln, wie Apps Daten verarbeiten.

    • Es braucht explizite Kontrolle, und man sollte Annotation-Magie vermeiden.
  • Ich frage mich, ob es bei Singleplayer-Spielen sinnvoll ist, eine Datenbank lokal laufen zu lassen.

    • Es ist fraglich, ob es Vorteile bringt, den gesamten Spielzustand über eine lokale Datenbank laufen zu lassen.
    • Wenn es einen robusten Zustandsmanager als separate Software gäbe, müsste man wohl nur noch die Grafik-Engine schreiben.
  • Es wirkt wie eine In-Memory-Datenbank mit einer WASM-Runtime zum Hosten von Domain-Logik.

    • Es ist nicht klar, wie Skalierung und Clustering gehandhabt werden.
    • Offenbar muss man das Sharding der Daten selbst übernehmen.
    • Replikation und Konsistenz sind die schwierigen Teile bei verteilten Datenbanken.
    • Es können sowohl In-Memory- als auch diskbasierte Tabellen verwendet werden.
    • Gewöhnliche Datenbanken können das bereits, und Domain-Logik in Stored Procedures zu schreiben ist mühsam.
    • Derzeit wäre es gleichwertig, sqlite mit In-Memory-Tabellen als Binärdatei einzubetten.
    • Man muss selbst Code schreiben, der Tabellen-Updates an Clients veröffentlicht.
    • Es gibt Dokumentation zu Clustering, aber sie ist nicht konkret.