Had this idea the other day.
The Basil protocol is built around
The SpaceServer creates entities in the Basil viewer and adds abilities
to that entity.
The abilities add attributes to the entity and the values of the
attributes effect the entity’s actions in the rendered world.
So, there would be abilities like “camera follow” which would be
added to a camera entity to cause the camera to follow something
(usually an avatar). Or maybe “instance” which adds “pos” and “rot”
properties to an entity and makes it appear somewhere in the view.
One problem with that design would be that the abilities need to be embedded into Basil. That is, abilities would have to be part of Basil’s protocol definition (this are the abiltities that are defined) and thus would be rather static.
Also, abilities could get very complex. Like adding an animation to a boned entity. Or just adding the bones. There might be scripted behaviors for entities that is required to be implemented in the viewer for latency issues.
So, the idea I had was: what if I could upload abilities? I could define an API to the Basil entity internals and then individual ability behaviors could be coded separately and dynamically added to Basil.
An interesting idea. It would mean cleaning up the intefaces inside Basil (which is a good thing in any case). Standardizing an internal API. And then figuring out [WebAssembly].
Hummm. I wonder…
[Basil]: [WebAssembly]: https://webassembly.org/