린든 스크립트 언어

린든 스크립트 언어(Linden Scripting Language, LSL)는 린든 랩(Linden Lab)이 운영하고 있는 가상 세계인 세컨드 라이프(Second Life)에서 사용자가 사용할 수 있는 스크립트 언어이다. LSL을 써서 Second Life에서 객체의 동작을 제어할 수 있고, 또한 전자 메일, XML-RPC, HTTP 요청 전송을 통해 외부 인터넷 통신도 행할 수 있다.

LSL은 문법 구조가 C 언어와 가까운 매우 강한 타입 언어이다. 유한 상태 기계(Finite-state machine, 유한 오토마타)를 모델로 한 "상태-이벤트 기반 스크립트 언어(state-event driven scripting language)"라고 할 수 있다.

LSL 구조 
스크립트는 변수, 함수 정의, 1개 이상의 상태(State)로 구성된다. 각 상태는 그 상태에 있을 때 일어난 사건에 어떻게 반응하는가로 설명한다.

기본 데이터 형식은 정수, 부동소수점 실수 타입, 문자열, 키(UUID), 벡터(3차원 위치 및 RGB 색깔 표현), 회전(사원수(四元數, quaternion))가 있다. 또한 배열 형식이나 구조에 해당하는 것으로, 기본 데이터 형식을 요소로 하는 리스트 형식이 있다. 내장 함수는 2010년 3월 현재 350개가 있고, 사용자는 필요에 따라 사용자 정의 함수를 정의할 수 있다.

실행 환경 
스크립트는 Second Life의 가상 세계에 배치된 의자와 벽 등의 개체에 배치되고 실행된다. 시스템 스크립트 이벤트(타이머, 이동, 아바타, 채팅, 이메일, 다른 개체와 충돌)을 전송하고, 그 결과 스크립트는 상태 천이를 일으키거나 다른 개체나 아바타와 대화를 하게 된다.

스크립트는 개체에 추가되는대로 시작된다. 개체가 가상 세계에 배포되는 한, 소유자가 로그인하지 않은 상태에서도 실행은 계속된다. 소유자가 개체를 철거하여 자신의 인벤토리로 옮겨서 가상 세계에 재배치하는 경우에도 스크립트 상태가 보존된다. 파일 또는 데이터베이스 같은 영속적인 데이터 저장 장치는 제공되지 않지만, HTTP 요청 통신을 이용하여 Second Life 외부에 데이터를 저장할 수 있다.

개체는 여러 스크립트를 포함할 수 있고, 그들을 동시에 실행할 수 있다. 독립형 스크립트에서 사용할 수 있는 메모리 공간은 64KiB 이하로 제한된다. 각 스크립트는 바이트 코드 실행 파일에 컴파일되고 린든 랩의 서버에서 Mono을 이용한 가상 머신에서 실행된다.

일부 내장 함수는 부하에 따라 0.2초 ~ 20초의 지연(delay)을 설정하고 있으며, 많은 부하가 필요한 함수의 연속 실행이 제한된다. 이것은 스크립트가 시스템 자원에 과도한 부담을 주지 않도록 하기 위해서이다.

LSL 스크립트의 예 
다음은 일종의 'Hello world 프로그램'이다. default라는 상태에 state_entry와 touch_start라는 2가지 이벤트가 기술되어 있다. 각 이벤트가 발생할 때, "Hello, Avatar!"나 "Touched"가 표시된다.

 default
 {
   state_entry()
   {
     llSay(0"Hello, Avatar!");
   }
   
   touch_start(integer total_number)
   {
     llSay(0"Touched.");
   }
 }

같이 보기 
 세컨드 라이프(Second Life)
 린든 랩(Linden Lab)
 Mono

외부 링크 및 관련 자료 
  Second Life LSL 포털 — 린든 랩이 운영하는 공식 Wiki
  Mono for Second Life — Information regarding the move to Mono
  LSL Wiki — A community effort to supplement the available LSL documentation
  LSL forum — Second Life LSL forum
  Linden Scripting Language Problems — Criticism by Xah Lee
  Linden Scripting Language Script Repository — Anyone can edit and contribute scripts.
  The Book of Script - Second Life Wikia

  

세컨드 라이프
 Linden Scripting Language