SpacetimeDB - マルチプレイヤーゲーム/アプリを構築するためのDB
(spacetimedb.com)- SpacetimeDBはデータベースとサーバー機能を組み合わせたシステム
- 従来のWebサーバーやゲームサーバーを別途用意する代わりに、クライアントが直接データベースに接続してアプリケーションロジックを実行
- Rustで書かれた「モジュール」形式のストアドプロシージャを通じて、アプリロジックをデータベースに直接アップロード可能
- 単一のRustバイナリでアプリケーション全体をデプロイ可能で、DevOps、コンテナ、サーバー、マイクロサービスなどが不要
主な特徴
- スマートコントラクトに似た概念だが、ブロックチェーンとは無関係
- 既存のスマートコントラクトシステムよりはるかに高速
- MMORPGゲーム BitCraft Online のバックエンドはSpacetimeDB単体で構成されている
- ゲーム内のあらゆる要素がデータベースでリアルタイムに処理され、クライアントに同期される
- リアルタイムアプリケーション向けに最適化されており、レイテンシ最小化を目標に設計されている
- アプリケーション状態はメモリ上に保持され、復旧のためにWAL(Write-Ahead Log)に記録される
インストール方法
macOS / Linux へのインストール
- 次のコマンドでインストール
curl -sSf https://install.spacetimedb.com | sh
Windows へのインストール
- PowerShellで以下のコマンドを実行
iwr https://windows.spacetimedb.com -useb | iex
Dockerで実行
- Dockerを使用する場合
docker run --rm --pull always -p 3000:3000 clockworklabs/spacetime start
始めるための4ステップ
spacetimeCLIツールをインストールspacetime startコマンドで単一ノードを実行- サポートされている言語のいずれかでモジュールを作成してアップロード
- クライアントライブラリでデータベースに接続
言語サポート
サーバーサイドモジュール
- Rust: https://spacetimedb.com/docs/modules/rust/quickstart
- C#: https://spacetimedb.com/docs/modules/c-sharp/quickstart
クライアントライブラリ
- Rust: https://spacetimedb.com/docs/sdks/rust/quickstart
- C#: https://spacetimedb.com/docs/sdks/c-sharp/quickstart
- TypeScript: https://spacetimedb.com/docs/sdks/typescript/quickstart
ライセンス情報
- BSL 1.1ライセンスに従う
- 一定期間後に AGPL v3.0 + リンク例外 へ移行
- SpacetimeDBと連携したアプリケーションのソース公開は求められない
- コミュニティへの貢献が還元されるよう設計された自由ソフトウェアライセンス方式
公式ドキュメント
- 全ドキュメント、ガイド、サンプル: https://spacetimedb.com/docs
5件のコメント
面白いアイデアですね。DDoSやAuthのようなものをどううまく解決したのか気になります。
名前の格好よさは抜群ですね
本当に斬新で良さそうだと思っていたんですが、かなり前にもう GitHub Star を付けていたみたいですね。記憶力が……
SpaceTimeDB - DBとサーバーを1つに統合
1年半前に紹介されていましたが、継続的にしっかり更新されているようですね。a16z と Supercell も投資しているんですね。
Hacker Newsのコメント
SpacetimeDBは「宇宙的な発想の再構成」という技術ジャンルに属する。これは、構造的な再配置によって性能を大きく向上させられる可能性がある
前回の投稿でのベストコメント:
SpacetimeDBは、大規模MMORPGであるBitCraftを支えるために開発された
この技術を使ってゲームサーバーをどう書くのか理解しづらい
BitCraftはかわいらしく見える
YouTubeがSpacetimeDBを勧めてくるが、動画ゲームを作ったことはない
このプロジェクトはBSLで提供されており、やや負担の大きい時間制限がある
リレーショナルデータベースのスキーマと、アプリでデータをどう扱うかを混同すべきではない
シングルプレイヤーゲームでローカルにデータベースを動かすことに意味があるのか気になる
インメモリデータベースのようであり、ドメインロジックをホストするためのWASMランタイムを備えている