70 lines
3.9 KiB
Plaintext
70 lines
3.9 KiB
Plaintext
Nexus is a federated, open source, hackable VR social platform and protocol.
|
||
|
||
Project members include Person1 <user@example.com>, Person2 <user@example.com>,
|
||
and Person 3 <user@example.com>. The representative of the project is Person1.
|
||
|
||
Nexus' current design is subject to change; we are still in the rough
|
||
prototyping stage and we expect to "ship-of-thesus" our current design quite a
|
||
bit. The goal of Nexus is to provide an open, extendable, VR social platform. To
|
||
do this, Nexus separates its logic into individual WASM scripts and a networking
|
||
API based on the ECS model. Everything communicates using the gLTF and VRM
|
||
standards: VRM for avatars, and gLTF for objects and worlds. Several different
|
||
actors are present within the Nexus architecture:
|
||
|
||
A “world” is a collection of WASM scripts and gLTF models able to be reproduced.
|
||
It is intended for users to be able to create worlds, and to share them,
|
||
allowing others to use the worlds as templates from which to create servers. A
|
||
“server” is a running instance of a world; how servers interop with other
|
||
servers is yet to be determined. A “client” is the front-end application that
|
||
can connect to any Nexus server and interact with other clients over the server.
|
||
|
||
The current plan is to provide almost everything using WASM scripts.
|
||
|
||
WASM scripts have two categories so far; there are server scripts, that just run
|
||
on the server, and client scripts, which are sent over to the client for the
|
||
client to run locally and then interact with the server using the networking
|
||
API. It's possible that we will come up with some kind of server-client dual
|
||
script type, in which clients run a script to keep themselves up to date with
|
||
the server. The server checks to make sure its results line up with the clients’
|
||
in order to limit abuse.
|
||
|
||
Camera and physics (gravity, collision, buttons, etc.) interactions, IK and FBT,
|
||
and GUI systems (server discovery interfaces, friends lists, etc.) will all be
|
||
provided by WASM scripts. We will provide default implementations, but the
|
||
community will be free to hack on those scripts or create their own from scratch
|
||
to provide the same or new functionality. This creates an extremely extensible
|
||
platform. Using WASM means that, as we go into the future, more languages could
|
||
be utilized to write social vr, or non-social vr experiences, such as games, a
|
||
scene editor, media creation tools, etc.
|
||
|
||
This system enables people to to write clients and servers in other languages or
|
||
engines than Bevy, which we are currently using for our standard implementation.
|
||
As long as clients or servers properly respect the WASM scripts, everything
|
||
should work across different implementations. If someone creates a Nexus server
|
||
SDK in Unity, they will be able to take advantage of much of Unity to create
|
||
Nexus worlds.
|
||
|
||
The fact that we use WASM also means that game developers can create games or
|
||
experiences in normal, 2D IDEs, such as writing a game in Rust, instead of
|
||
having to deal with our scene editor. That being said, we do plan to make a
|
||
scene editor in Nexus, but this is a tentative, far-future plan.
|
||
|
||
The current plan is to use IPFS to provide sharing of WASM scripts, models, and
|
||
whatever else may materialize in the future.
|
||
|
||
Theoretical work on a permissions system has not yet begun.
|
||
|
||
The aim is to provide an open source VR social platform where people can
|
||
collaborate and communicate with each other, and a game engine-like base to
|
||
build social VR applications.
|
||
|
||
Our Minimum Viable Product is gLTF models loaded in for avatars, downloading and
|
||
loading, basic voice chat, and synced worlds.
|
||
|
||
The timespan of this project to full completion is several years. If all goes
|
||
according to plan, an MVP should be only a few months off.
|
||
|
||
The server and client implementation will be licensed under the GplV3, but all
|
||
the base scripts, for things like physics, inverse kinematics, and the basic UI
|
||
implementation will be licensed under the Expat License (also known as the MIT
|
||
License). |