So now, I'm starting to break down the functionality so I can start to get a handle on the MicroService boundaries, and how to create the authentication and eventually build all of the Flatbuffers contracts and RPC calls.
I will need to start working on the emissaries themselves. I'm thinking of doing that in TypeScript or possibly in Rust or Go in Webassembly (really, WASI). I really am not sure about the state of C# webassembly, blazor notwithstanding.
I have to restructure my 3DOM library, which is where all my current active code is. It needs to be strategically split into pieces, but I'm not sure where the edges are yet. I'm trying to avoid monoliths.
Here's my brainstorm of the various services I know offhand I might need. I'm sure there are many more, however, these are the main published services. Each World, Avatar, and Entity can create its own layer of custom gRPC calls to handle the provisioning and operation of each emissary and they must remain dynamic.
I think--Stage 1 Hello World--will consist of all 4 servers working with their Ping servers. Though that's not really how the use-case goes.
Ultimately the completed startup is more like this:
- Browser asks Avatar server where Avatar's Kudo Server is
- Browser logs into Avatar and Aspect
- Avatar's Emissary is Marshaled
- Browser connects to world that Avatar wants to materialize in
- Browser asks world's Kudo server to grant permission (based on Visa or open permission)
- World's Emissary is Marshaled
- World then emits the inventory for the scene
- Entities from everywhere begin to Marshal their Emissaries
- World causes the Avatar to materialize in the designated position in the Scene
But, we have to get there incrementally. Server skeletons first, then ping. Enough of a microservice that we can get this running in a Kubernetes Cluster, or at least in Docker on one machine.
Boy, that was ramble...
Tentative Services
Kudo Server
- Ping
- Locate Worlds
- Locate Avatar Service
- Locate Entity Service
- Vouch Self
- Vouch Service
- Vouch CA
- Validate Login Ticket
- Sign [Developer]
- Login from Server [Server]
- Login from Avatar [Avatar]
- Banking Transactions
Kudos:
- Vouch for Kudo
- Generate Kudo
- Transfer Kudo
- Revoke Kudo
- Manipulate Values in Kudo
Standard Kudos:
- Deed
- Lease
- Visa
- Access Grant
- Ban
- World Level
- World Coin
Avatar Server
- Ping
- Locate Kudo Route
- Vouch Self
- Marshal Avatar (As Primary Avatar)
- Marshal Entity (Avatar as Entity)
- Transform Aspect
- Manage Active Inventory
- Transfer Entities Into/From
World Server
- Ping
- Locate Kudo Route
- Vouch Self
- Log Avatar In
- Marshal World
- Unveil Scene Inventory/State
- Marshal Entity (World as Entity)
- Transfer Entities Into/From
Entity Server
- Ping
- Locate Kudo Route
- Vouch Self
- Marshal Entity
- Transfer Entity
- Transfer Entities Into/From
- Instantiate Entity Into
No comments:
Post a Comment