Talk:Definitions

From OpenSimulator

(Difference between revisions)
Jump to: navigation, search
(New page: We need an overhaul of term definitions in OpenSim before we can clean up the ScenePresence vs. ClientManager mess. Here's a starting point, feel free to revise/append/discuss: ===Entity=...)
 
Line 12: Line 12:
 
===Avatar===
 
===Avatar===
 
An avatar is a specially identified entity that acts just like any other entity (takes up space in 3D, provides a physical proxy, etc). In addition to their 3D presence, avatars have many concepts attached to them such as owning inventory, having groups and friends, and belonging to access control lists that grant or deny them permissions throughout the world.
 
An avatar is a specially identified entity that acts just like any other entity (takes up space in 3D, provides a physical proxy, etc). In addition to their 3D presence, avatars have many concepts attached to them such as owning inventory, having groups and friends, and belonging to access control lists that grant or deny them permissions throughout the world.
 +
 +
[Diva] I don't think we should have this concept *at all* in OpenSim. An avatar is an agent with scene presence and, eventually, an appearance. Let's talk about '''agent''' and '''scene presence''' instead. See below for alternative set of definitions.
  
 
===Client===
 
===Client===
A client is something that connects to the simulation. This may be an end user that has a Second Life(tm) viewer and wants to connect as an avatar, a search engine that wants to connect to the simulator and scrape information, a proxy that is managing hundreds of avatar connections, an external engine that is sending and receiving data to control the simulation, or anything else that needs to establish a connection to the simulator. Clients are distinguished by the protocol they use to communicate, such as a LindenUDP client vs. an MXP client. OpenSim is moving away from the concept of monolithic client interfaces to many smaller client interfaces, so one implementation may implement everything used in the LLUDP protocol while another may only implement chat and IM. These are event driven interfaces. For example, if an entity moves in the scene, any clients that are listening for entity movements will be notified and are responsible for converting the movement event into a network event.
+
A client is something that connects to the simulation via a network. This may be an end user that has a Second Life(tm) viewer and wants to connect as an avatar, a search engine that wants to connect to the simulator and scrape information, a proxy that is managing hundreds of avatar connections, an external engine that is sending and receiving data to control the simulation, or anything else that needs to establish a connection to the simulator. Clients are distinguished by the protocol they use to communicate, such as a LindenUDP client vs. an MXP client. OpenSim is moving away from the concept of monolithic client interfaces to many smaller client interfaces, so one implementation may implement everything used in the LLUDP protocol while another may only implement chat and IM. These are event driven interfaces. For example, if an entity moves in the scene, any clients that are listening for entity movements will be notified and are responsible for converting the movement event into a network event.
 +
 
 +
[Diva] I think the word ''client'' should be replaced by the word ''agent'', because that's what other kinds of servers also use (e.g. web servers). The definition stays exactly as above.
  
 
===Endpoint===
 
===Endpoint===
Line 24: Line 28:
 
===Presence===
 
===Presence===
 
HELP: What is a presence? I can't think of a good definition. Entities are 3D simulated concepts, avatars have all of the avatar-specific concepts, clients process network events, presence seems to be a hack to merge all of these together. Should we try to remove the concept of a presence altogether? This needs more thought.
 
HELP: What is a presence? I can't think of a good definition. Entities are 3D simulated concepts, avatars have all of the avatar-specific concepts, clients process network events, presence seems to be a hack to merge all of these together. Should we try to remove the concept of a presence altogether? This needs more thought.
 +
 +
==Alternative Definitions (Diva)==
 +
 +
===Entity (as above)===
 +
An entity in OpenSim is "something that exists in the 3D simulation". It has a position in the world, a rotation, velocity, etc. It is responsible for providing a physical proxy that can be handed off to a physics engine. It might break every rule and be invisible, static, and have no physical proxy but it must still implement all of these concepts.
 +
 +
===Prim (as above)===
 +
A prim is one type of entity that is very common in OpenSim. It has roots in the Second Life(tm) world, and is a procedurally generated basic shape that has an efficient network representation. It implements the basic concepts required to be an entity, plus many additional concepts that are specific to the LLUDP protocol. It also implements some extra generic concepts in OpenSim, such as acting as a script container.
 +
 +
===Mesh (as above)===
 +
Although mesh support was originally introduced as a proof of concept in OpenSim by the realXtend team, there are many different types of mesh representations and file formats. This blanket term refers to any type of entity that stores geometry data instead of procedural instructions to generate geometry. Depending on the implementation, a mesh may or may not implement additional interfaces such as the scripting container interface or LLUDP concepts.
 +
 +
===Scene Presence===
 +
A scene presence is another type of entity (sibling of prim and mesh) that represents a [mostly anthropomorphic] character. Scene presences interact with scenes and their entities by subscribing to and raising events. Given the foundations in the LL system, the collection of interaction events pertaining to scene presences is very large. We would want to divide this collection in smaller sub-sets that specific implementations of scene presences may choose to implement.
 +
 +
(Note: I can tolerate calling scene presences "avatars", even though I don't like the word avatar. We can pick one in the code, but use the two terms "scene presence" and "avatar" interchangeably)
 +
 +
===Agent===
 +
An agent is OpenSim's internal representation of a client that connects to the simulation via a network. This may be an end user that has a Second Life(tm) viewer and wants to connect, a search engine that wants to connect to the simulator and scrape information, a proxy that is managing hundreds of connections, an external engine that is sending and receiving data to control the simulation, or anything else that needs to establish a connection to the simulator. Agents are distinguished by the protocol they use to communicate, such as a LindenUDP client vs. an MXP client.
 +
 +
===Client===
 +
Any external program that connects to OpenSim servers via a network. It's not part of OpenSim.
 +
 +
===Relations between these concepts===
 +
 +
* An agent may or may not be associated with a scene presence. Some agents may simply not have scene presences at all.
 +
* A Scene Presence may or may not be associated with a client. Some scene presences may simply not have clients behind them at all (e.g. server-side characters).

Revision as of 12:20, 15 October 2009

We need an overhaul of term definitions in OpenSim before we can clean up the ScenePresence vs. ClientManager mess. Here's a starting point, feel free to revise/append/discuss:

Contents

Entity

An entity in OpenSim is "something that exists in the 3D simulation". It has a position in the world, a rotation, velocity, etc. It is responsible for providing a physical proxy that can be handed off to a physics engine. It might break every rule and be invisible, static, and have no physical proxy but it must still implement all of these concepts.

Prim

A prim is one type of entity that is very common in OpenSim. It has roots in the Second Life(tm) world, and is a procedurally generated basic shape that has an efficient network representation. It implements the basic concepts required to be an entity, plus many additional concepts that are specific to the LLUDP protocol. It also implements some extra generic concepts in OpenSim, such as acting as a script container.

Mesh

Although mesh support was originally introduced as a proof of concept in OpenSim by the realXtend team, there are many different types of mesh representations and file formats. This blanket term refers to any type of entity that stores geometry data instead of procedural instructions to generate geometry. Depending on the implementation, a mesh may or may not implement additional interfaces such as the scripting container interface or LLUDP concepts.

Avatar

An avatar is a specially identified entity that acts just like any other entity (takes up space in 3D, provides a physical proxy, etc). In addition to their 3D presence, avatars have many concepts attached to them such as owning inventory, having groups and friends, and belonging to access control lists that grant or deny them permissions throughout the world.

[Diva] I don't think we should have this concept *at all* in OpenSim. An avatar is an agent with scene presence and, eventually, an appearance. Let's talk about agent and scene presence instead. See below for alternative set of definitions.

Client

A client is something that connects to the simulation via a network. This may be an end user that has a Second Life(tm) viewer and wants to connect as an avatar, a search engine that wants to connect to the simulator and scrape information, a proxy that is managing hundreds of avatar connections, an external engine that is sending and receiving data to control the simulation, or anything else that needs to establish a connection to the simulator. Clients are distinguished by the protocol they use to communicate, such as a LindenUDP client vs. an MXP client. OpenSim is moving away from the concept of monolithic client interfaces to many smaller client interfaces, so one implementation may implement everything used in the LLUDP protocol while another may only implement chat and IM. These are event driven interfaces. For example, if an entity moves in the scene, any clients that are listening for entity movements will be notified and are responsible for converting the movement event into a network event.

[Diva] I think the word client should be replaced by the word agent, because that's what other kinds of servers also use (e.g. web servers). The definition stays exactly as above.

Endpoint

Although clients can have very different implementations, one requirement is that each client can be identified by a single remote endpoint (IPEndPoint). This allows indexing and generic operations across clients regardless of their implementation.

Viewer

The viewer concept plays a very minor role in the OpenSim architecture. Some client implementations may use the concept of viewer software that is responsible for the client-side of the networking, but viewers do not exist outside of individual client implementations. For example, the LindenUDP implementation may choose to define a viewer concept and the MXP implementation may also choose to define its own viewer concept, but a remote scripting engine client implementation would have no such concept.

Presence

HELP: What is a presence? I can't think of a good definition. Entities are 3D simulated concepts, avatars have all of the avatar-specific concepts, clients process network events, presence seems to be a hack to merge all of these together. Should we try to remove the concept of a presence altogether? This needs more thought.

Alternative Definitions (Diva)

Entity (as above)

An entity in OpenSim is "something that exists in the 3D simulation". It has a position in the world, a rotation, velocity, etc. It is responsible for providing a physical proxy that can be handed off to a physics engine. It might break every rule and be invisible, static, and have no physical proxy but it must still implement all of these concepts.

Prim (as above)

A prim is one type of entity that is very common in OpenSim. It has roots in the Second Life(tm) world, and is a procedurally generated basic shape that has an efficient network representation. It implements the basic concepts required to be an entity, plus many additional concepts that are specific to the LLUDP protocol. It also implements some extra generic concepts in OpenSim, such as acting as a script container.

Mesh (as above)

Although mesh support was originally introduced as a proof of concept in OpenSim by the realXtend team, there are many different types of mesh representations and file formats. This blanket term refers to any type of entity that stores geometry data instead of procedural instructions to generate geometry. Depending on the implementation, a mesh may or may not implement additional interfaces such as the scripting container interface or LLUDP concepts.

Scene Presence

A scene presence is another type of entity (sibling of prim and mesh) that represents a [mostly anthropomorphic] character. Scene presences interact with scenes and their entities by subscribing to and raising events. Given the foundations in the LL system, the collection of interaction events pertaining to scene presences is very large. We would want to divide this collection in smaller sub-sets that specific implementations of scene presences may choose to implement.

(Note: I can tolerate calling scene presences "avatars", even though I don't like the word avatar. We can pick one in the code, but use the two terms "scene presence" and "avatar" interchangeably)

Agent

An agent is OpenSim's internal representation of a client that connects to the simulation via a network. This may be an end user that has a Second Life(tm) viewer and wants to connect, a search engine that wants to connect to the simulator and scrape information, a proxy that is managing hundreds of connections, an external engine that is sending and receiving data to control the simulation, or anything else that needs to establish a connection to the simulator. Agents are distinguished by the protocol they use to communicate, such as a LindenUDP client vs. an MXP client.

Client

Any external program that connects to OpenSim servers via a network. It's not part of OpenSim.

Relations between these concepts

  • An agent may or may not be associated with a scene presence. Some agents may simply not have scene presences at all.
  • A Scene Presence may or may not be associated with a client. Some scene presences may simply not have clients behind them at all (e.g. server-side characters).
Personal tools
General
About This Wiki