AWG: state melding exploration

From Second Life Wiki
Jump to navigation Jump to search

Zha's thoughts on 'state melding'

Raw thoughts warning

This is an early draft, of some raw thoughts. Please feel free to comment on them, ask questions and such. This is not a collective work product at the moment, but rather an atttempt to share my thinking. I do think that a more formal, collectively mulled over version of this page would be a good thing. This isn't it, at least not yet. - Zha

From time to time, I use the phrase state melding, to describe one of the core things which happens in a virtual world. This page is an attempt to describe precisely what I mean by that. It is very intentionally written so as to avoid, as much as possible, a specific implementation model. There is a companion page AWG: Core simulator exploration which attempts to capture the actions described on this page, in the context of an architecture based on Linden Lab's second generation grid plans.

The core user experience in a virtual world is that of experiencing the illusion that they are seeing into, and interacting with a virtual world. The virtual world is composed of a base landscape, objects which exist within the landscape, and avatars. Avatars, represent users, or bots, which are in the same portion of the virtual world.

At the heart of the experience is the notion of a shared reality, where all the participants appear to be experiencing the same set of events, in a fashion similar to how people in a space in the real world experience a consistent reality.

Putting aside notions of philosophy, the core of creating a shared reality within a portion of a virtual world is melding together the acions of all the objects, avatars and their interactions into a form which can be shared among the all of those actors. (And note, it needs to be shared, not just with the end humans, but with the other objects and scripts which make up the scene as well. State Melding is about creating and sharing that melded state.

Consider for a moment, a series of "moments" in a virtual reagion. (This isn't to assert virtual worlds are, or are not cotinuous, just so we can talk about the things which get accounted for, in a stepwise fashion.)

So. At moment one, we have a set of stateful things

  • The landscape (hopefully fairly static)
  • A set of virtual objects (Note, abstract so not prims, just objects)
  • A set of avatars

We take the set of stateful things, and then add a set of inputs which occur between moments:

  • A set of inputs is applied to the objects and avatars
    • avatars send motion requests
    • avatars send "chat" requests
    • avatars update their appearance
  • scripts update object properties
  • New objects and avatars may be added to the region
    • this may include objects attached to avatars
  • Old objects and avatars me deleted from the region
    • this may include objects attached to avatars

Additionally, any physical simulation applied to the objects happens. This may include managing motion, friction, collisions, gravity, and such.

All of these changes coalesce into a new moment. The process by which this new moment is created, is what I mean by state melding. A whole set of states and state changes are melded to create a new moment.

Once we have created the new moment, all the interested parties need to know about it. So, the final step is to, in some way, distribute the new moment back out to all the concerned parties.

Note: in addition to all of this, there is also the question of things such as speech and sound, happen, as well as things we are familiar with, from second life, such as animations, particle systems and texture animations. These all happen off grid in the SL model, but some or all of them may in some models happen in world. Not sure how to account for them, as yet.