/drsp

A real-time massive multiplayer decentralized persistent virtual world built on IPFS and delta-crdts.

Primary LanguageJavaScript

DRSP, which stands for decentralized r/place (our inspiration), is a real-time massive multiplayer decentralized persistent virtual world.

There is no central server behind this game. You dynamically load small chunks of a gigantic map as you move around, and sync updates about the world state only with the othe people in those chunks.

It's built with IPFS pubsub room and delta-crdts. CRDTs are Confilct-free Replicated Data Types, and are the reason everyone on DRSP ends up with the same world-state no matter what order updates are recieved in.

installation

npm install

run

npm run compile
npm run start

peering servers

Unfortunately this does rely on peering servers to make the initial contact between two users. Here's an example setup of such a server:

First, get nginx and docker (you can do it without docker too).

You will also need https certs since Chrome won't let you use http websocket on https pages.

To start the actual peering server run sudo docker run -d -p 9090:9090 --name rendezvous libp2p/websocket-star-rendezvous:release.

To make it possible to use with https (a must), run nginx with an nginx.conf file like the one in rendezvous. These commands may be useful:

sudo systemctl start nginx
sudo systemctl status nginx
sudo systemctl stop nginx

You should now be able to add a peering server to the list that looks something like '/dns4/npfoss.mit.edu/tcp/13579/wss/p2p-websocket-star/'!