19 ポイント 投稿者 GN⁺ 2025-04-11 | 5件のコメント | WhatsAppで共有
  • SpacetimeDBはデータベースとサーバー機能を組み合わせたシステム
  • 従来のWebサーバーやゲームサーバーを別途用意する代わりに、クライアントが直接データベースに接続してアプリケーションロジックを実行
  • Rustで書かれた「モジュール」形式のストアドプロシージャを通じて、アプリロジックをデータベースに直接アップロード可能
  • 単一のRustバイナリでアプリケーション全体をデプロイ可能で、DevOps、コンテナ、サーバー、マイクロサービスなどが不要

主な特徴

  • スマートコントラクトに似た概念だが、ブロックチェーンとは無関係
  • 既存のスマートコントラクトシステムよりはるかに高速
  • MMORPGゲーム BitCraft Online のバックエンドはSpacetimeDB単体で構成されている
  • ゲーム内のあらゆる要素がデータベースでリアルタイムに処理され、クライアントに同期される
  • リアルタイムアプリケーション向けに最適化されており、レイテンシ最小化を目標に設計されている
  • アプリケーション状態はメモリ上に保持され、復旧のためにWAL(Write-Ahead Log)に記録される

インストール方法

macOS / Linux へのインストール

Windows へのインストール

Dockerで実行

  • Dockerを使用する場合
    docker run --rm --pull always -p 3000:3000 clockworklabs/spacetime start

始めるための4ステップ

  1. spacetime CLIツールをインストール
  2. spacetime start コマンドで単一ノードを実行
  3. サポートされている言語のいずれかでモジュールを作成してアップロード
  4. クライアントライブラリでデータベースに接続

言語サポート

サーバーサイドモジュール

クライアントライブラリ

ライセンス情報

  • BSL 1.1ライセンスに従う
  • 一定期間後に AGPL v3.0 + リンク例外 へ移行
  • SpacetimeDBと連携したアプリケーションのソース公開は求められない
  • コミュニティへの貢献が還元されるよう設計された自由ソフトウェアライセンス方式

公式ドキュメント

5件のコメント

 
ethanhur 2025-04-11

面白いアイデアですね。DDoSやAuthのようなものをどううまく解決したのか気になります。

 
turastory 2025-04-11

名前の格好よさは抜群ですね

 
jujumilk3 2025-04-11

本当に斬新で良さそうだと思っていたんですが、かなり前にもう GitHub Star を付けていたみたいですね。記憶力が……

 
xguru 2025-04-11

SpaceTimeDB - DBとサーバーを1つに統合

1年半前に紹介されていましたが、継続的にしっかり更新されているようですね。a16z と Supercell も投資しているんですね。

 
GN⁺ 2025-04-11
Hacker Newsのコメント
  • SpacetimeDBは「宇宙的な発想の再構成」という技術ジャンルに属する。これは、構造的な再配置によって性能を大きく向上させられる可能性がある

    • この種の技術では、開発者が発想を組み替える必要があり、技術がまだ完全に受け入れられていないことが問題なのか、それとも技術の約束が特定のユースケースに合っていないのかを見分けるのが難しい
    • 類似の技術としてElixirやNodeがあり、まれな保証を得るためにそのスタックを採用し、新たな制約を受け入れなければならない
    • このような技術は、明確なビジョンを持つ先駆者がオープンソースでその強みを示すとき、成功する可能性が高い
    • Clockwork Labsがサンプルゲームをうまく提供してくれることを期待したい
  • 前回の投稿でのベストコメント:

    • SpacetimeDBは、低レイテンシとWASMストアドプロシージャをサポートする汎用データベース
    • マルチプレイヤーゲームの永続的な世界のための堅牢なビルディングブロックに見える
    • レイテンシを隠すネットコードは自分で実装する必要がある
  • SpacetimeDBは、大規模MMORPGであるBitCraftを支えるために開発された

    • ゲームの性能要件に合わせて設計されている
    • 非常に低いレイテンシと高いスループットをうたっている
    • 新しいMMOを構築するなら、既存市場のアプローチを見るのがよい
    • World of Warcraftの例では、クライアントの信頼性とサーバー側のイベント調整がスケーラビリティ上のハックの核心となっている
  • この技術を使ってゲームサーバーをどう書くのか理解しづらい

    • 物理シミュレーション、経路探索、アニメーションなどもサーバーでシミュレートする必要がある場合、どう統合するのかが気になる
    • 通常はUnreal/Unityのヘッドレスモードを使うが、SpacetimeDBを使うならゲームエンジンを捨てて、すべてをゼロから再実装しなければならないように見える
  • BitCraftはかわいらしく見える

    • 「maincloud」という価格関連の用語を見て個人的な先入観を持ったが、これは単にホスティングクレジットのための命名だった
  • YouTubeがSpacetimeDBを勧めてくるが、動画ゲームを作ったことはない

    • ゲーム開発者から、この技術が実際にどれほど有用なのか意見を聞きたい
    • どこまでがマーケティングのうまさなのか判断しづらい
  • このプロジェクトはBSLで提供されており、やや負担の大きい時間制限がある

    • サービスごとに1つのインスタンスしか許可されない
  • リレーショナルデータベースのスキーマと、アプリでデータをどう扱うかを混同すべきではない

    • 明示的な制御が必要で、アノテーションの魔法は避けるべき
  • シングルプレイヤーゲームでローカルにデータベースを動かすことに意味があるのか気になる

    • すべてのゲーム状態をローカルデータベース経由で動かすことに利点があるのか疑問
    • 堅牢な状態管理者が独立したソフトウェアとして存在するなら、グラフィックスエンジンだけを書けばよいようにも思える
  • インメモリデータベースのようであり、ドメインロジックをホストするためのWASMランタイムを備えている

    • スケーラビリティやクラスタリングをどう扱うのかは明確ではない
    • データの分割は自分でやる必要があるように見える
    • レプリケーションと一貫性が分散データベースで難しい部分
    • メモリベースとディスクベースのテーブルの両方が使える
    • 一般的なデータベースはすでにこれを行っており、ストアドプロシージャにドメインロジックを書くのは面倒
    • sqliteをインメモリテーブルとしてバイナリに組み込むのが、現時点では同等に見える
    • クライアントにテーブル更新を配信するコードを書く必要がある
    • クラスタリングに関するドキュメントはあるが、具体性に欠ける