19 poin oleh GN⁺ 2025-04-11 | 5 komentar | Bagikan ke WhatsApp
  • SpacetimeDB adalah sistem yang menggabungkan database dan fungsi server
  • Alih-alih menempatkan web atau game server tradisional secara terpisah, klien dapat terhubung langsung ke database untuk menjalankan logika aplikasi
  • Logika aplikasi dapat diunggah langsung ke database melalui stored procedure berbentuk "modul" yang ditulis dengan Rust
  • Seluruh aplikasi dapat dideploy sebagai satu biner Rust, sehingga DevOps, container, server, dan microservice tidak diperlukan

Fitur utama

  • Konsepnya mirip smart contract, tetapi tidak terkait dengan blockchain
  • Jauh lebih cepat dibanding sistem smart contract yang ada
  • Backend MMORPG BitCraft Online dibangun hanya dengan satu SpacetimeDB
  • Semua elemen dalam game diproses secara real-time di database dan disinkronkan ke klien
  • Dioptimalkan untuk aplikasi real-time dan dirancang dengan tujuan meminimalkan latensi
  • Status aplikasi disimpan di memori, lalu dicatat ke WAL (Write-Ahead Log) untuk pemulihan

Cara instalasi

Instalasi macOS / Linux

Instalasi Windows

Menjalankan dengan Docker

  • Jika menggunakan Docker
    docker run --rm --pull always -p 3000:3000 clockworklabs/spacetime start

4 langkah untuk memulai

  1. Instal tool CLI spacetime
  2. Jalankan satu node dengan perintah spacetime start
  3. Tulis dan unggah modul dengan salah satu bahasa yang didukung
  4. Hubungkan ke database dengan library klien

Dukungan bahasa

Modul sisi server

Library klien

Informasi lisensi

  • Mengikuti lisensi BSL 1.1
  • Setelah jangka waktu tertentu, beralih ke AGPL v3.0 + link exception
  • Tidak mewajibkan publikasi source code aplikasi yang terintegrasi dengan SpacetimeDB
  • Pendekatan lisensi perangkat lunak bebas yang dirancang agar kontribusi kembali ke komunitas

Dokumentasi resmi

5 komentar

 
ethanhur 2025-04-11

Idenya menarik. Saya penasaran bagaimana mereka menangani hal-hal seperti DDoS atau auth dengan baik.

 
turastory 2025-04-11

Namanya benar-benar keren.

 
jujumilk3 2025-04-11

Saya sempat merasa ini benar-benar segar dan terlihat bagus, tapi ternyata dulu saya sudah memberi bintang di GitHub. Ingatan saya...

 
xguru 2025-04-11

SpaceTimeDB - Menggabungkan DB dan server menjadi satu

Saya pernah memperkenalkannya sekitar satu setengah tahun lalu, dan tampaknya terus diperbarui dengan baik. a16z dan Supercell juga ikut berinvestasi.

 
GN⁺ 2025-04-11
Komentar Hacker News
  • SpacetimeDB termasuk dalam genre teknologi "rekonfigurasi cara berpikir secara kosmik". Ini memiliki potensi untuk meningkatkan performa secara besar melalui penataan ulang struktural

    • Teknologi semacam ini mengharuskan pengembang menata ulang cara berpikir mereka, dan sulit membedakan apakah masalahnya karena teknologinya belum sepenuhnya diadopsi, atau karena janji teknologinya tidak cocok untuk kasus penggunaan tertentu
    • Teknologi serupa mencakup Elixir dan Node, di mana Anda perlu mengadopsi stack tersebut dan menerima batasan baru demi mendapatkan jaminan yang langka
    • Teknologi semacam ini lebih mungkin berhasil ketika para perintis dengan visi yang jelas menunjukkan kekuatannya lewat open source
    • Semoga Clockwork Labs berhasil menghadirkan game contoh mereka
  • Komentar terbaik dari postingan sebelumnya:

    • SpacetimeDB adalah basis data umum yang mendukung latensi rendah dan stored procedure WASM
    • Ini tampak seperti blok bangunan yang solid untuk persistent world pada game multipemain
    • Anda tetap harus mengimplementasikan sendiri netcode untuk menyamarkan latensi
  • SpacetimeDB dikembangkan untuk mendukung MMORPG skala besar bernama BitCraft

    • Dirancang sesuai kebutuhan performa game tersebut
    • Menawarkan latensi sangat rendah dan throughput tinggi
    • Jika ingin membangun MMO baru, ada baiknya melihat pendekatan yang ada di pasar saat ini
    • Dengan contoh World of Warcraft, keandalan klien dan koordinasi event di server adalah inti dari hack skalabilitas
  • Sulit memahami bagaimana menulis server game dengan teknologi ini

    • Muncul pertanyaan bagaimana mengintegrasikannya ketika simulasi fisika, pathfinding, animasi, dan sebagainya harus disimulasikan di server
    • Biasanya orang memakai mode headless Unreal/Unity, tetapi dengan SpacetimeDB tampaknya Anda harus meninggalkan game engine dan mengimplementasikan ulang semuanya dari nol
  • BitCraft terlihat lucu

    • Saya sempat punya bias pribadi saat melihat istilah harga "maincloud", tetapi itu hanya penamaan untuk kredit hosting
  • YouTube merekomendasikan SpacetimeDB, tetapi belum pernah membuat video game

    • Semoga para pengembang game bisa memberi pendapat tentang seberapa bergunanya teknologi ini dalam praktik
    • Sulit menilai seberapa besar ini hanya hasil pemasaran yang bagus
  • Proyek ini dilindungi BSL, dengan batas waktu yang agak memberatkan

    • Hanya satu instance per layanan yang diizinkan
  • Jangan mencampuradukkan skema basis data relasional dengan cara aplikasi memproses data

    • Diperlukan kontrol yang eksplisit, dan sebaiknya hindari sihir anotasi
  • Saya penasaran apakah menjalankan basis data secara lokal pada game single-player memang masuk akal

    • Dipertanyakan apakah ada keuntungan menjalankan seluruh state game melalui basis data lokal
    • Jika ada state manager yang tangguh sebagai perangkat lunak terpisah, rasanya kita hanya perlu menulis engine grafis
  • Ini tampak seperti basis data in-memory, dengan runtime WASM untuk meng-host logika domain

    • Tidak jelas bagaimana skalabilitas dan clustering ditangani
    • Tampaknya Anda harus melakukan sharding data sendiri
    • Replikasi dan konsistensi adalah bagian yang sulit dalam basis data terdistribusi
    • Tabel berbasis memori dan disk sama-sama bisa digunakan
    • Basis data umum pada dasarnya sudah melakukan ini, dan menulis logika domain dalam stored procedure terasa merepotkan
    • Menyematkan sqlite sebagai tabel memori ke dalam file biner saat ini terasa setara
    • Anda harus menulis kode untuk memublikasikan pembaruan tabel ke klien
    • Ada dokumentasi tentang clustering, tetapi tidak spesifik