{"id":16560942,"url":"https://github.com/jb55/protoverse","last_synced_at":"2025-10-28T23:30:21.282Z","repository":{"id":66018311,"uuid":"272119580","full_name":"jb55/protoverse","owner":"jb55","description":"Minimal, accessible metaverse protocol with progressive level of detail","archived":false,"fork":false,"pushed_at":"2021-08-13T23:44:12.000Z","size":1266,"stargazers_count":12,"open_issues_count":0,"forks_count":1,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-02-08T20:45:38.925Z","etag":null,"topics":["metaverse","protocol","wasm"],"latest_commit_sha":null,"homepage":"http://protoverse.tech","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jb55.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-06-14T02:29:30.000Z","updated_at":"2023-04-17T21:02:03.000Z","dependencies_parsed_at":"2023-03-03T19:45:31.954Z","dependency_job_id":null,"html_url":"https://github.com/jb55/protoverse","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jb55%2Fprotoverse","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jb55%2Fprotoverse/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jb55%2Fprotoverse/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jb55%2Fprotoverse/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jb55","download_url":"https://codeload.github.com/jb55/protoverse/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238737820,"owners_count":19522261,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["metaverse","protocol","wasm"],"created_at":"2024-10-11T20:30:44.775Z","updated_at":"2025-10-28T23:30:21.273Z","avatar_url":"https://github.com/jb55.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\nPROTOVERSE\n\nProtoverse is a metaverse protocol. At a high level, protoverse is protocol for\na network of virtual spaces. It is designed to be accessible and open to\neveryone. It achieves this by describing the world abstractly like so:\n\n\n    (room (shape rectangle)\n          (condition \"clean\")\n          (material \"gold\")\n          (name \"Satoshi's Den\")\n          (width 10) (depth 10) (height 100)\n          (group\n            (table (id welcome-desk)\n                   (name \"welcome desk\")\n                   (material \"marble\")\n                   (condition \"new\")\n                   (width 1) (depth 2) (height 1)\n                   (light (name \"desk\")))\n\n            (chair (id welcome-desk-chair)\n                   (name \"fancy\"))\n\n            (light (location ceiling)\n                   (name \"ceiling\")\n                   (state off)\n                   (shape circle))))\n\n\nSince this is an abstract description, we can \"render\" it in many\ndifferent ways. For example, with natural language:\n\n  $ ./protoverse parse example.space\n\n  There is a(n) clean rectangular room made of gold named Satoshi's Den.\n  It contains three objects: a welcome desk table, fancy chair and\n  ceiling light.\n\nThis is important for accessibility. If we want the metaverse to be open\nto everyone, we need some way to describe what is going on in this\nabstract space without a visual rendering.\n\nAnother reason we prefer a high level description is that we want objects\nin the metaverse to be friendly to our machine overlords. The metaverse\nshould be easily programmable with scripts and bots. A high level\ndescription also allows us to reload the space quickly, while keeping\nhigher level-of-detail bits cached from previous loads.\n\n\nPROGRAMMABILITY\n\nThe protoverse uses WebAssembly (WASM [1]) to enable computation for\nclients interacting with the metaverse. WASM was originally devised as a\ngeneric virtual machine for the web, but it is general enough to use for\ncases beyond that.\n\nWith WASM you can use any programming language to code the metaverse.\nprotoverse comes with an embedded WASM interpreter that can execute WASM\ncode.  You will be able to augment clients to render your space in\ngreater detail, show HUD elements, create multiplayer games, etc.\n\nYou can already do a lot without client computation, for instance, your\nspace could be served dynamically, which you could periodically fetch to\nget updated description of the room. This would be equivalent to \"refresh\nthe page\" on the web, except due to the level-of-detail nature of the\nprotoverse, you wouldn't need to refetch the entire room. The client\ncould cache models and other details that have been previously fetched.\n\nThe default, high-level description of the room could include position\ninformation, so you will be able to see things that have moved when you\n\"refetch\" the state of the room. State updates like this could be a bit\njarring, so most likely you wouldn't want to reload the room for position\nupdates, these can be served via \"object state/position update\" network\nmessages.\n\nWhat you do with these network messages could be handled automatically\nfor simple cases by the client, but otherwise could be handled by WASM\ncode served by the protoverse server.\n\n\nTHIS REPOSITORY\n\nThe goal of this source repository is the be the \"linux kernel\" of the\nmetaverse. Developers shouldn't have to deal with low level details of\nthe metaverse, in the same sense that linux application developers\nshouldn't have to think about the details of TCP/IP when building their\napplications.\n\nThis repository serves as the \"monorepo\" of the protoverse.\n\nGoals:\n\n* Zero dependencies. Ideally we will avoid linking to openssl as well.\n  The metaverse should move on from certificate authorities if possible,\n  opting for a trust-on-first-use model instead. Ideally we would use\n  something like the noise protocol for securing communications. We can\n  support this at the protocol level if it makes sense.\n\n* Cross platform. We should try to support all platforms. Right now we're\n  prototyping in linux, but the metaverse should be open and accesible to\n  all platforms.\n\n\nDOCUMENTATION\n\nYou can find further documentation under docs/\n\n\nREFERENCES\n\n[1] https://webassembly.org\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjb55%2Fprotoverse","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjb55%2Fprotoverse","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjb55%2Fprotoverse/lists"}