20220601 How To Build A Metaverse - orbitalfoundation/wiki GitHub Wiki
WORK IN PROGRESS
How to build
- https://medium.com/swift2go/6-tips-for-a-software-development-success-philosophy-fb0cc00b74ce
- primary mantra: user centered design and development, constantly iterating with real users with real needs
- https://protoio.medium.com/the-complete-guide-to-user-research-e2b1cba4595
- https://medium.com/design-team-insights/the-process-of-product-design-f22ab01f2f7c
- https://medium.com/@charliefink/book-review-the-metaverse-and-how-it-will-revolutionize-everything-by-matthew-ball-bd885edbc749
- dogfooding
- user studies
- who is the customer?
- how do we meet their needs?
- how do we measure how we do?
How to build Open Source
-
how do we build in the open?
-
how: traditional development practices
-
differences between open dev and closed dev
-
curating a community; building, rewarding participation
-
high level vision
-
low level vision - technical engineering choices
-
scheduling, shipping
-
recruiting participation
-
distributing power
-
shipping
-
small steps, iterate, all stakeholders see work
-
https://brandur.org/small-sharp-tools -> "The mistake we made was that although each service was kept fairly simple with the separation, the sum of their complexity was much greater than that of the integrated system. Despite being less sound from an idealogical standpoint, the monolith could be improved more quickly, operated more easily, and could better guarantee data consistency."
What not to build
-
https://medium.com/@hadeaninc/the-spatial-revolution-behind-web-3-0-and-the-metaverse-99109d73d435
-
is not specifically 3d, blockchain, distributed, wearable, social, a video game or a simulation
-
not specifically spatial although it does lean that way
-
https://future.com/metaverse-infrastructure-technology-games/
-
not about bringing your toys from one game to another, or moving your avatar from one game to another
-
not about speeding up game development
-
not about identity specifically, or payments specifically
-
not about improving game physics, latency or cheating related issues
-
not about testing services, ai, training algorithms
-
not about 3d content production, cloud based asset management, build systems, tuning the game balance, or virtual game studios
-
not specifically about social, economic, monetary, analytic, communication or content 'challenges' although it enables these issues
-
not about employing world builders, experience creators - although it may do so
-
not about reproducing architecture limited by gravity and physics; not even about having gravity,
-
https://medium.com/@plutonians/plutonians-what-is-the-metaverse-80180fae719f
-
not the convergence of vr, crypto and open standards although those may play a role optionally
-
https://medium.com/@dinisguarda/decomposing-the-metaverse-cbcd43ec5064
-
not meta
-
not a verse
-
not specifically the next big thing, not a grab bag of all new technologies,
Other efforts
What to build
-
"we are not building the metaverse, we are discovering it"
-
consumer perspective:
-
similar to a web browser
-
seen as a user interface or a desktop that runs many apps at once
-
a communications tool, a sense making tool, an entertainment tool
-
probably has some built in concepts for manipulating objects; effectively a kind of desktop paradigm
-
multiplayer
-
can paint 3d graphics as well as 2d graphics
-
probably improved identity concepts
-
probably improved payment concepts
-
often related to place and space but not always
-
easy to create and share apps
-
apps paint to the same display, not to separate windows, and share the same model of the world
-
probably has some generalized thinking about noise filtering, anti-harassment and healthy conversation
-
engineering perspective:
-
an operating system and a 'desktop'; users can load and run, start and stop 'apps'
-
apps can message each other
-
apps are built out of shared libraries
-
apps can rely on a persistent state server and networking
-
apps are carefully sandboxed
-
probably distributed rather than a single silo approach; protocol based agreements between compute instances
-
meta verse
CONSTRAINTS
-
zero global compile as a constraint -> the environment is the editor -> real time editing, real time collaboration -> see https://www.pawfal.org/fluxus/
-
can run code:
-
late binding, portable computation
-
inter application communication
-
distributed computation
-
security safety
-
portable execution
-
composability, granularity of assets at runtime; minimize compilation and baking
-
late binding dynamically loaded behavior
-
formal messaging models
-
zero code creativity as a constraint
-
revision control of dynamically loaded objets
-
elevated perms, security, privs, bad actor curation -> effectively as simple as text, granular, social, dna, atomicity
FRUSTRATION POINTS
-
utter simplicity; bevy3d and other systems are astronomically way too complex - can an 8 year old code in bevy?
-
hard to extend
-
hard to communicate
-
hard to understand
-
slows development
-
prevents collaboration
-
makes cross cutting concerns such as say piping a video feed into the system very hard
-
pretty much impossible to integrate other services; say a third party ux
-
unreal is also an absolute nightmare for example; hermetic, insanely complex, poorly documented, fragile
-
zero compile
-
i don't want to spend even one minute to recompile a build to test an idea
-
i want interactive real time editing
-
traditional build systems are even worse than this; unreal can take many minutes to test/iterate an idea
-
the poisonous idea of necessary compilation has even leaked down to web pages with webpack and npm recompiles
-
velocity
-
coming from the web i'm used to a high velocity of iteration
-
a few seconds to refresh a page to try a new idea
-
sharable;
-
i can paste a url to somebody and they can try my idea out
-
no binary blob that has to be downloaded and then installed; basically instant
-
no licensing and app signing
-
no begging apple for permission to ship my app on their device
-
no navigating operating system versioning, packaging and distribution conflicts
REQUIREMENTS / FEATURES
-
is an operating system
-
technical reqs -> needs a generalized computational environment / operating system - that can run metaverse style applications
-
human comprehensible well named resources and consistent namespaces
-
publishing assets, caching
-
granular event based architecture; messaging
-
erlang -> https://surma.dev/things/actormodel/
-
protocol ideas -> https://roderickkennedy.com/virtual-reality/http-for-vr
-
https://htmx.org/essays/how-did-rest-come-to-mean-the-opposite-of-rest/ and https://oleb.net/2018/rest/
-
objects, prototypes, classes and reflection
-
formal models of abstract state; class property sheets and so on
-
scripting / programming languages at the joins between parts:
-
https://www.bryanbraun.com/2022/07/16/scratch-is-a-big-deal/
-
https://en.m.wikipedia.org/wiki/E_(programming_language) https://evrone.com/douglas-crockford-interview
-
"Douglas: I have been hoping for that since 1995. There are two difficulties. First, we don't have the next language yet. It needs to be a minimal capability-based actor language that is designed specifically for secure distributed programming."
-
wasm / executable behavior / objects
-
https://gbracha.blogspot.com/2022/06/the-prospect-of-execution-hidden.html?m=1
-
https://blog.scottlogic.com/2022/06/20/state-of-wasm-2022.html
-
https://filecoin.io/blog/posts/filecoin-v16-network-upgrade-skyr/
-
rik
-
https://www.bryanbraun.com/2022/07/16/scratch-is-a-big-deal/
-
security
-
https://awesomekling.github.io/pledge-and-unveil-in-SerenityOS/
-
rust wasm
-
state / database local
-
for 3d objects one should be able to perform rich queries on them
-
for other kinds of objects also reflection and querying
-
rich query languages ; spatial and otherwise, local, networked
-
servers/clients - state replication
-
keyvalue stores -> redis, keydb, dragonfly, skytable, ana keyvaluestore, https://news.ycombinator.com/item?id=31796311
-
IEEE P2874 SPATIAL WEB PROTOCOL, ARCHITECTURE AND GOVERNANCE WORKING GROUP - https://sagroups.ieee.org/2874/
-
cloud compute
-
improbable
-
cloudflare workers
-
https://cloud.google.com/architecture/cloud-game-infrastructure
-
corners we paint ourselves into
-
https://raphlinus.github.io/rust/gui/2022/07/15/next-dozen-guis.html also https://news.ycombinator.com/item?id=32112846
-
https://github.com/aws-samples/aws-ambit-scenario-designer-ue4
-
https://gfodor.medium.com/the-secret-mozilla-hubs-master-plan-2c1364033bec
TECHNOLOGY CHOICES
-
what do other platforms do?
-
unity
-
unreal -> how unreal works for example; how parts are wired together, the idea of compilation, binary blobs
-
ios apps
-
web apps
-
rust apps
-
rust crates
-
npm ...
-
javascript / web
-
https://www.youtube.com/watch?v=AmoWmgAM0PM ARENA -> https://wise.ece.cmu.edu/projects/arena.html
-
croquet
-
bevy3d
-
https://future.com/metaverse-infrastructure-technology-games/
-
technical layer, creative layer, user experiences
-
identity
-
friend graphs
-
automated testing tools
-
asset crunching
NOTES
- pull in finks thinking
- https://hackaday.com/2022/03/17/open-source-farming-robot-now-includes-simulations/
- https://svl.stanford.edu/igibson/
- https://say-can.github.io/
- http://web.mit.edu/16.400/www/auto_sim/Help/SDL.htm
- opencv on the web
- https://morpheusxr.com
- https://demodern.com/services/metaverse
- https://docs.google.com/presentation/d/1Hxlk8ppQmFr_NkYk5BBVgiTGXbRQiGmIL0lKiwfeZFY/edit?usp=sharing