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).
|