220 likes | 356 Views
Second Life: Introduction. Russell Gayle Comp 790-058 – Robot Motion Planning Fall 2007 September 24, 2007. What is Second Life?. The Grid: The hardware behind the SL Metaverse. What is Second Life?. The Grid is organized into Simulators Single server instances. Connecting to Isle 1.
E N D
Second Life: Introduction Russell Gayle Comp 790-058 – Robot Motion Planning Fall 2007 September 24, 2007
What is Second Life? • The Grid: The hardware behind the SL Metaverse
What is Second Life? • The Grid is organized into Simulators • Single server instances Connecting to Isle 1 Isle 1 Isle 2 Isle 3 Side connections to adjacent simulators Isle 4 Isle 5 Isle 6 Simulators
What is Second Life? • Simulators are where the real work happens • Each simulator is responsible for its avatars Isle 1 Communications (chat/IM) Physical State, Collisions Inventory Animations SL Identifier
What is Second Life? • Simulators are where the real work happens • Each simulator stores and distributes its prims Isle 1 Transformations Textures Physics Embedded items
What is Second Life? • Primitives can hold any type of object • Primitives, scripts, animations, sounds, etc • LSL makes the world interactive • Embedded into prims LSL Scripts Change primitive appearance Interact with other primitives Interact with avatars Physics Query remote resources Many more!
What’s missing? • Important features of SL that we will not cover • Economy • Linden Dollars • Content creation • and IP rights • Land ownership • In world attractions • Virtual sightseeing • “Live” music
The Grid • Collectively can be considered “The World” • A large array of Debian servers • Each server can support several simulations • Centralized network topology • All communications goes through the Grid • Beta Grid: A test bed for upcoming technologies
Simulators • Also referred to as a Region • e.g. Natoma, UNC CH I, UNC CH II • Typically has a dedicated CPU • Each region is 256 m by 256 m • Larger islands are made by connecting several regions • Responsibilities • Geometry / Prims • Avatars • Local messaging (whisper, say, shout) • Voice-chat • Client-server networking
Simulators • SLUIDs • Every object (prims, avatars, animations, audio, etc) has a (global) SL Unique ID number • Each simulator also has local references to avatars and primitives • Multi-simulator islands • In reality, connected to multiple island simultaneously in case you cross borders • Note: You may need to keep track of this in your work!
Avatars • Your virtual representation (or your bot’s) • Stored in a central database • Important features • Appearance • How you look (height, clothing, etc) • Inventory • What you can use and what you can DO • Local animations • Local sounds • Other primitives or scripts • Communication • State and Motion • Position, orientation, velocity, colliding, physics, etc
Avatars: What they can do • Create primitives • Interact with (touch) primitives • This often activates scripts • Attach prims to themselves • Chat (whisper, say, shout) • This can also activate scripts • Navigate • Ground-based (walk, run) • Air-based (fly) • Predefined animations • Instant navigation (teleportation) • You may not always end up where you expect!
Avatars: Limitations • Precision • Not easy to reach a specific location • Occasionally collisions are missed • Bandwidth • Not always enough to update all objects • May cause missed collisions or stalled motion
Primitives • Belongs to a Region (simulator) • 7 base types • Box, cylinder, prism, sphere, torus, tube, ring • All items built by transformations of these • 1 special type • Sculpted prim • Prim whose shape is determined by a “Sculpt Texture”
Primitives • Seven base material types • Stone, metal, glass, wood, flesh, plastic, rubber • Has several other state parameters • Physical • Flexible (automatically non-physical) • Texture • Color • Bumpiness • Lighting • Transparency
Linden Script Language (LSL) • Embedded in a prim (or a group of prims) • Not in avatars • Each prim in a group can have a script • Scripts between linked prims are faster • All scripts in a prim are run • Similar to C or Java • But with an emphasis on states and events • Events trigger behaviors (functions) • Can also cause a change of state • And now for a crash course in LSL!
LSL: Getting Started • Creating a script • Open the prim “Create” menu • Select a prim • Find the contents of the prim • Select “Create a new script” • The default script default { state_entry() { llSay(0, "Hello, Avatar!"); } touch_start(integer total_number) { llSay(0, "Touched."); } }
LSL: States • State is used to determine which “behavior” should be used default //default state is mandatory { state_entry() { llSay(0, "turning on!"); llSetColor(<1.0, 1.0, 1.0>, ALL_SIDES); } touch_start(integer total_number) { state off; } } state off { state_entry() { llSay(0, "turning off!"); llSetColor(<0.0, 0.0, 0.0>, ALL_SIDES); } touch_start(integer total_number) { state default; } } Triggers a change of state A new state
LSL: Events • We’ve seen two events • state_entry - When a state is activated • touch_start – When an object is touched • A few others which may be useful at_target – when a prim reaches its target collision – when a prim collides http_response – response to http request (used when working with remote resources) sensor – when a sensor call returns something • Note: Sensors are useful for tracking and following Documentation: http://wiki.secondlife.com/wiki/LSL_Portal
Live Demo! • Overview of the main features in Second Life
Introduction: Robots in SL • Two varieties • LSL (primitives) • Simulated network traffic (avatars) • Tradeoffs • LSL is stored and run on the simulator (server-side) • Only works with prims • Network traffic is subject to missed packets and limited by client performance • Note • Both can access remote utilities!
LIBSecondLife • http://www.libsecondlife.org • Reverse engineering of SL network protocol • Inspect, insert, or remove packets from the client • Create your own client • We will control an autonomous avatar this way • More of this next time