Talk:Definitions
From OpenSimulator
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.
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.
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.