protoverse

A metaverse protocol
git clone git://jb55.com/protoverse
Log | Files | Refs | README | LICENSE

commit 032febdccb48afc075e6de0a0e9587e94c918896
parent 5e09b4ce3a007da2385bc49342cae3e0ba5342eb
Author: William Casarin <jb55@jb55.com>
Date:   Wed,  7 Jul 2021 08:52:40 -0700

readme: reformat to 73 cols

Signed-off-by: William Casarin <jb55@jb55.com>

Diffstat:
MREADME | 69++++++++++++++++++++++++++++++++++++---------------------------------
1 file changed, 36 insertions(+), 33 deletions(-)

diff --git a/README b/README @@ -41,62 +41,65 @@ This is important for accessibility. If we want the metaverse to be open to everyone, we need some way to describe what is going on in this abstract space without a visual rendering. -Another reason we prefer a high level description is that we want objects in the -metaverse to be friendly to our machine overlords. The metaverse should be -easily programmable with scripts and bots. A high level description also allows -us to reload the space quickly, while keeping higher level-of-detail bits cached -from previous loads. +Another reason we prefer a high level description is that we want objects +in the metaverse to be friendly to our machine overlords. The metaverse +should be easily programmable with scripts and bots. A high level +description also allows us to reload the space quickly, while keeping +higher level-of-detail bits cached from previous loads. PROGRAMMABILITY -The protoverse uses WebAssembly (WASM [1]) to enable computation for clients -interacting with the metaverse. WASM was originally devised as a generic virtual -machine for the web, but it is general enough to use for cases beyond that. +The protoverse uses WebAssembly (WASM [1]) to enable computation for +clients interacting with the metaverse. WASM was originally devised as a +generic virtual machine for the web, but it is general enough to use for +cases beyond that. With WASM you can use any programming language to code the metaverse. -protoverse comes with an embedded WASM interpreter that can execute WASM code. -You will be able to augment clients to render your space in greater detail, -show HUD elements, create multiplayer games, etc. +protoverse comes with an embedded WASM interpreter that can execute WASM +code. You will be able to augment clients to render your space in +greater detail, show HUD elements, create multiplayer games, etc. -You can already do a lot without client computation, for instance, your space -could be served dynamically, which you could periodically fetch to get updated -description of the room. This would be equivalent to "refresh the page" on the -web, except due to the level-of-detail nature of the protoverse, you wouldn't -need to refetch the entire room. The client could cache models and other details -that have been previously fetched. +You can already do a lot without client computation, for instance, your +space could be served dynamically, which you could periodically fetch to +get updated description of the room. This would be equivalent to "refresh +the page" on the web, except due to the level-of-detail nature of the +protoverse, you wouldn't need to refetch the entire room. The client +could cache models and other details that have been previously fetched. The default, high-level description of the room could include position information, so you will be able to see things that have moved when you -"refetch" the state of the room. State updates like this could be a bit jarring, -so most likely you wouldn't want to reload the room for position updates, these -can be served via "object state/position update" network messages. +"refetch" the state of the room. State updates like this could be a bit +jarring, so most likely you wouldn't want to reload the room for position +updates, these can be served via "object state/position update" network +messages. -What you do with these network messages could be handled automatically for -simple cases by the client, but otherwise could be handled by WASM code served -by the protoverse server. +What you do with these network messages could be handled automatically +for simple cases by the client, but otherwise could be handled by WASM +code served by the protoverse server. THIS REPOSITORY The goal of this source repository is the be the "linux kernel" of the -metaverse. Developers shouldn't have to deal with low level details of the -metaverse, in the same sense that linux application developers shouldn't have -to think about the details of TCP/IP when building their applications. +metaverse. Developers shouldn't have to deal with low level details of +the metaverse, in the same sense that linux application developers +shouldn't have to think about the details of TCP/IP when building their +applications. This repository serves as the "monorepo" of the protoverse. Goals: -* Zero dependencies. Ideally we will avoid linking to openssl as well. The - metaverse should move on from certificate authorities if possible, opting for - a trust-on-first-use model instead. Ideally we would use something like the - noise protocol for securing communications. We can support this at the - protocol level if it makes sense. +* Zero dependencies. Ideally we will avoid linking to openssl as well. + The metaverse should move on from certificate authorities if possible, + opting for a trust-on-first-use model instead. Ideally we would use + something like the noise protocol for securing communications. We can + support this at the protocol level if it makes sense. * Cross platform. We should try to support all platforms. Right now we're - prototyping in linux, but the metaverse should be open and accesible to all - platforms. + prototyping in linux, but the metaverse should be open and accesible to + all platforms. DOCUMENTATION