Difference between revisions of "SL Cert - Advanced Scripting"

From Second Life Wiki
Jump to navigation Jump to search
Line 20: Line 20:
=== Primitives, Objects  ===
=== Primitives, Objects  ===


The different ways scripts can manipulate an object is included in this category. It does not include the ways to interact between objects and agents. The interaction categories are included in the detection and communications categories.
At the advanced level the person should be aware of all the different ways that a prim can be altered using LSL. This includes all of the methods listed at the intermediate level. The person should demonstrate knowledge of how to change multiple properties of any prim in a linkset in one command. The person should also be able to demonstrate an understanding of issues related to lag and script delay. For example, the person should be able to predict potential problems with a particle command and how it relates to client side performance of people viewing the object.


* Faces
Additionally a person should be able to combine a wide variety of other techniques to manipulate and change the prims within an object to a predetermined state. For example, the person should be able to read the contents of a notecard and interact with an agent using the dialog, chat, and instant message commands to determine how a prim should appear and then change the appearance of the particular prim. The person should also be able to use the link detection commands to determine which prim to change in an object.
# Each face on a prim has a number associated with it.
# The number varies by prim type and can vary depending if the prim has a "cut."
# It is not necessary to memorize all of the face numbers for every prim. It is necessary to know how to find the information and understand how the convention depends on whether or not a prim is cut.
 
* Changing color
# Commands for changing the color
# RGB definition of a color vector in LSL and how it is different from the editor window.
# Know how to convert back and forth between an RGB color vector in LSL and the format found in the editor window.
# Know how to identify when a color is changed using the changed event and the predefined constant CHANGED_COLOR.
 
* Changing alpha
# Commands for changing the alpha level
# Difference between changing alpha level and the two different transparant textures, TEXTURE_TRANSPARENT and  e97cf410-8e61-7005-ec06-629eba4cd1fb (invisiprim).
# Know how to identify when an alpha level is changed using the changed event and the predefined constant CHANGED_COLOR.
 
* Changing textures
# Commands for changing the textures
# Predefined constants for UUIDs of textures
# Know the difference between the constants TEXTURE_TRANSPARENT, TEXTURE_BLANK, TEXTURE_MEDIA, and TEXTURE_PLYWOOD.
# Know how to identify when a texture is changed using the changed event and the predefined constant CHANGED_TEXTURE.
 
* Particles
# Command to create particles
# basic limitation of particles
# basic understanding on how to turn particles on and turn.
 
* Link commands and options
# Commands to determine the UUID, link number, total number of prims etc. for prims within the current object.
 
* Text and pie menu text
# Commands to change the text over a prim.
# Commands to change the text for different options in the pie menu.
 
* Primitive name and description
# Commands to get the name and description of a prim.
# Commands to change the name and description of a prim.
 
* Dataserver events
# Basic understanding of the data server event.
# Basic understanding of the different kinds of information that can be obtained using the Dataserver event.
 
* Obtaining object information
# Getting agent information (llRequestAgentData)
# Getting object information (llGetObjectDetails)
 
* Sound
# Commands to preload sound files.
# Commands to play sounds.
 
 
Note that for many of these items there are a large number of commands asociated with the topic. For example, just to change the color of a prim the following commands can be used: llSetColor, llSetLinkColor, llGetColor, llSetPrimitiveParams, llGetPrimitiveParams, llSetLinkPrimitiveParams. It is adequate for a person to just know how to use llSetPrimitiveParams and llSetLinkPrimitiveParams to change the color of a prim, but the person should know the other commands in case they are asked to adapt another person's code.


=== Avatars and Agents ===  
=== Avatars and Agents ===  

Revision as of 07:07, 26 November 2009

Overview

Criteria required for persons to become certified in advanced scripting.

Audience

Persons who wish to demonstrate competence in advanced LSL scripting.

Prerequisites

Applicant must hold intermediate scripting certification in the specific area.

Criteria for testing to advanced level

Scripting includes a wide variety of categories. At the intermediate and advanced level the different categories are broken out separately. The different categories are given below with the associated topics. Note that there is some overlap between categories. This is because the different topics can not be easily divided and are related. Some topics may be necessary for multiple categories and are listed multiple times to avoid prerequisite clashes between categories.

Primitives, Objects

At the advanced level the person should be aware of all the different ways that a prim can be altered using LSL. This includes all of the methods listed at the intermediate level. The person should demonstrate knowledge of how to change multiple properties of any prim in a linkset in one command. The person should also be able to demonstrate an understanding of issues related to lag and script delay. For example, the person should be able to predict potential problems with a particle command and how it relates to client side performance of people viewing the object.

Additionally a person should be able to combine a wide variety of other techniques to manipulate and change the prims within an object to a predetermined state. For example, the person should be able to read the contents of a notecard and interact with an agent using the dialog, chat, and instant message commands to determine how a prim should appear and then change the appearance of the particular prim. The person should also be able to use the link detection commands to determine which prim to change in an object.

Avatars and Agents

  • Sit positions and associated functions
  1. Setting the position and rotation of a sit position.
  2. Turning off a sit position after it has been set.
  3. Know how to set the camera orientation for a sitting avatar.
  • Permissions
  1. Basic understanding of the permissions system.
  2. Know how to obtain permissions and basic understanding when it is required.
  • Animations
  1. Know how to set a the animation of a person sitting on a prim.
  2. Know how to obtain permission before setting the animation.
  3. Know how to remove an active animation.
  • Camera Controls
  1. Know how to obtain permission to change the camera orientation.
  2. Know the basic ways to change the camera. (Static positioning)
  • Dataserver
  1. Know the commands that can be used to obtain information about an agent.
  2. Know how to obtain agent and avatar information via the data server event.


Inventory and Simulator Information

  • Notecards
  1. Get the number of lines in a note card.
  2. Step through and get each line in a note card.
  3. Know how to stop reading a note card by testing for the EOF constant.
  • Detect when the inventory has changed.
  • Inventory information
  1. Get the name of the creator for an object.
  2. Inventory numbering system.
  3. Inventory types.
  4. Inventory Permissions.
  • Basic use of the llRequestSimulatorData command.


Advanced I/0

  • HTTP - in
  1. Creating an HTTP server
  2. Reacting to errors in the set up
  3. Reacting to changes to the server
  4. Reacting to outside requests
  • HTTP - out
  1. Sending communications out to other http servers
  2. reacting to errors
  3. Writing flexible scripts that can adapt to server outages and other potential failures.
  • Communication with outside servers.

At the advanced level for communications a person should be able to combine the different communication techniques to complete complex operations. For example, the person should be able to combine the use of dialogs and chat commands to send information to different scripts in various prims in an object using the link message system and a single script that interacts with an agent.

In addition to combining communication routines the person should be able to communicate between different objects in world using the http-in and http-out systems. The person should demonstrate scripts that have the flexibility to handle errors in the set up of the http routines and demonstrate flexibility in handling situations impact the http system. For example, the person should be able to develop systems of scripts that can maintain communication in the presence of sim crossings and resets.

Finally the person should demonstrate that they can communicate with outside servers and provide persistant data sources. The person must show basic proficiency in at least one other scripting language such as php, python, perl, or other relevant language. They should also demonstrate a basic profiency in connecting with a database and manipulating the database.

Physics

At the advanced level for physics a person should know the difference between the linear and rotational commands for force and impulse. The person should understand the impulse momentum theorem and the differential form of Newton's Second Law. The person should know how to put the rotational and linear forms of the commands together to achieve specific objectives.

For example, a person should be able to use the physics commands to move an object to a specific location and keep it in a specific orientation. The person should be able to combine different categories in order to move the object. For example, the person should be able to use a sensor or a timer to have a physical object follow an agent and maintain a specific rotation.

Finally, a person should be able to calculate the moment of inertia for simple objects and combinations of simple objects. The person should demonstrate that they know how to use this understanding when using the rotational commands for angular impulse and torque.


Vehicles

At the advanced level a person should be able to construct a vehicle. A person should be able to construct a variety of vehicles and know the differences between them. For example, the person should be able to construct a boat, car, or plane. They should be able to use the permissions system to have a person control the vehicle in nontrivial ways.

Detection

  • Touch events
  1. The three touch events.
  2. Functions to detect information about who has touched a prim.
  3. Passing touch information to other prims in a build.
  • Collision events
  1. The three collision events.
  2. Functions to detect information about what/who took part in the collision.
  • Land collision events
  1. The three land collision events.
  2. Functions to detect information about what/who took part in the land collision.
  • Sensors
  1. The sensor commands.
  2. The two sensor related events.
  3. Limiting the scope of a sensor.
  4. Limitations of a sensor.


Programming and Software Development

  • More advanced use of lists and data types.
  1. Multiple Data Types
  2. Using strided lists with multiple data types
  3. Manipulating all data types
  • Advanced revision systems.
  1. Branching and merging revisions.
  2. Tagged revisions.
  3. Finding and using differences between revisions
  • Workflow
  1. Demonstrate effective interactions with clients and remain flexible through the entire development cycle.
  2. Establishing a plan for systems of scripts and carrying it out.
  3. Be able to adapt the plan as the requirements change.
  4. Be able to establish time lines and effectively communicate them with clients.


At the advanced level a person should be familiar with all data types. The person should know when to use a given a data type and when it is appropriate. The person should be able to use the most advanced features of lists and work with strided lists that contain a variety of data types. The person should be able to use the list functions to determine the data type for an entry in the list.

A person should be able to use the more advanced features of a software revision system. The person should know when it is appropriate to create a branch and know how to create a branch. The person should know how to merge a branch back into an established trunk. The person should also know what a tagged release is and how to create a tagged release in the revision software that they are using.

A person should be able to create plans for creating systems of scripts. The person should be able to demonstrate that they can establish a time line for a project and determine a set of intermediate steps necessary in order to complete a project. The person should demonstrate an ability to communicate the time line and the reasons for their decisions with a client. Finally, the person should demonstrate an ability to adapt and change a timeline as the client changes the requirements. As part of this aspect the person should demonstrate that they can anticipate potential problems with a given set of requirements and work with a client in advance to avoid potential problems.