2022-08-24 07:10:04 +00:00
|
|
|
|
Nexus is a federated, free software, hackable VR social platform and protocol.
|
2022-08-12 22:45:52 +00:00
|
|
|
|
|
2022-08-24 07:10:04 +00:00
|
|
|
|
Project members include Person 1 <user@example.com>, Person 2 <user@example.com>,
|
|
|
|
|
and Person 3 <user@example.com>. The representative of the project is Person 1.
|
2022-08-12 22:45:52 +00:00
|
|
|
|
|
|
|
|
|
Nexus' current design is subject to change; we are still in the rough
|
2022-08-22 23:08:19 +00:00
|
|
|
|
prototyping stage and we expect to "Ship-of-Theseus" our current design quite a
|
2022-08-12 22:45:52 +00:00
|
|
|
|
bit. The goal of Nexus is to provide an open, extendable, VR social platform. To
|
2022-08-22 23:08:19 +00:00
|
|
|
|
do this, Nexus separates its logic into individual Wasm scripts and a networking
|
2022-08-12 22:45:52 +00:00
|
|
|
|
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:
|
|
|
|
|
|
2022-08-22 23:08:19 +00:00
|
|
|
|
A “world” is a collection of Wasm scripts and gLTF models able to be reproduced.
|
2022-08-12 22:45:52 +00:00
|
|
|
|
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.
|
|
|
|
|
|
2022-08-22 23:08:19 +00:00
|
|
|
|
The current plan is to provide almost everything using Wasm scripts.
|
2022-08-12 22:45:52 +00:00
|
|
|
|
|
2022-08-22 23:08:19 +00:00
|
|
|
|
Wasm scripts have two categories so far; there are server scripts, that just run
|
2022-08-12 22:45:52 +00:00
|
|
|
|
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
|
2022-08-22 23:08:19 +00:00
|
|
|
|
provided by Wasm scripts. We will provide default implementations, but the
|
2022-08-12 22:45:52 +00:00
|
|
|
|
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
|
2022-08-22 23:08:19 +00:00
|
|
|
|
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
|
2022-08-12 22:45:52 +00:00
|
|
|
|
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.
|
2022-08-22 23:08:19 +00:00
|
|
|
|
As long as clients or servers properly respect the Wasm scripts, everything
|
2022-08-12 22:45:52 +00:00
|
|
|
|
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.
|
|
|
|
|
|
2022-08-22 23:08:19 +00:00
|
|
|
|
The fact that we use Wasm also means that game developers can create games or
|
2022-08-12 22:45:52 +00:00
|
|
|
|
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.
|
|
|
|
|
|
2022-08-22 23:08:19 +00:00
|
|
|
|
The current plan is to use IPFS to provide sharing of Wasm scripts, models, and
|
2022-08-12 22:45:52 +00:00
|
|
|
|
whatever else may materialize in the future.
|
|
|
|
|
|
|
|
|
|
Theoretical work on a permissions system has not yet begun.
|
|
|
|
|
|
2022-08-24 07:10:04 +00:00
|
|
|
|
The aim is to provide an free software VR social platform where people can
|
2022-08-12 22:45:52 +00:00
|
|
|
|
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.
|
|
|
|
|
|
2022-08-22 23:08:19 +00:00
|
|
|
|
The server and client implementation will be licensed under the GPLv3, but all
|
2022-08-12 22:45:52 +00:00
|
|
|
|
the base scripts, for things like physics, inverse kinematics, and the basic UI
|
2022-08-24 07:10:04 +00:00
|
|
|
|
implementation will be licensed under the Expat License.
|