Using pub/sub and a zeroconf method:
An actor (avatar) get dropped into the scene which publishes his abilities and subscribes to publicly available sensory inputs (what can he hear, what can he see in scene, and in game).
- He then responds based on those sensory inputs to the "game" scene with built in animations and behaviors when idle (e.g. if scene is cold, he shivers + cold breath)
- and he responds to other compatible game objects in the "editor" scene by presenting new information either in the scene editor or in his inspector.
- He also publishes a "controller" and "camera" ability which then allows the developer to drop in any compatible controllers or cameras into the scene.
An "inventory" gets dropped into the actor.
- it will recognize the actor's config and offer various inventory UI and input mechanisms
- hotbar with active items
- inactive inventory with drag/drop placement
An "active equipment" asset gets dropped onto the actor
- recognizes the player's config and
A "scene environment" asset is loaded
- it has the options to be neutral to players or hostile
- it changes its environment (lights, door access, post processing etc) based on the types of actor in the scene
- it has properties for hot, cold, wet, etc. All of these affect the behavior of actors (player and NPCs).
The environment then has the ability to respond to the actor/avator based on his published data such as:
- his animation state
- his current gear or inventory
- his location
- his direct interactions (only available based on his location and equipped inventory items)
Things like a door which lights up when near, but is locked, a chest which can be opened which gives a key.