Desenvolvimento - LSL (Second Life)
Curso de programação de objetos para o Second Life – Parte 2
Nesta segunda parte, você conhecerá os recursos e limitações da linguagem LSL e será apresentado formalmente aos eventos e estados. Veremos ainda como encontrar uma sandbox para criarmos nossos objetos e scritps e como retornar ao local facilmente através de landmarks. Ao final, tomaremos contato com o LSL Editor, que possui vários recursos avançados semelhantes ao Visual Studio e nos permite inclusive emular o SL estando offline.
por Cláudio RalhaNa primeira parte deste curso, vimos como usar o editor de scripts que acompanha o client do Second Life e alguns detalhes da janela de criação e edição de objetos. Você aprendeu como inspecionar objetos e desta forma descobriu que objetos mais complexos como uma jakkuzi ou um carro são compostos por uma coleção de objetos simples conhecidos como primitivas e que podemos ter vários scripts dentro destes objetos, de forma isolada. Além disso, é possível aos vários scripts presentes se comunicarem entre si e interagirem com o usuário, representado no simulador pelo seu avatar.
Como recebemos muitos emails com dúvidas básicas do pessoal que está começando a mexer agora com o SL, vamos detalhar nesta segunda parte do curso alguns tópicos que foram apenas citados na primeira parte, como por exemplo:
- Os recursos e limitações da LSL
- O que são eventos e estados
- Como encontrar o local adequado à criação de objetos
- Como retornar facilmente a um local através da criação de landmarks
Antes de passarmos a explicação de como usar um editor profissional e ao estudo de eventos. Desse modo um número maior de leitores poderá nos acompanhar em nossas experiências pelo mundo virtual.
Para aqueles que estão hesitantes se vale ou não a pena investir tempo nessa nova plataforma, fica aqui nosso apoio. Não tenha medo de tentar, pois além do desafio técnico que encontramos com qualquer linguagem de programação, você ainda irá se divertir muito, pois nesse novo mundo você tem o poder de voar, atravessar paredes, se teleportar, mover objetos sem tocá-lo e transmutar objetos. No final das contas, a sensação é a mesma daquela que temos quando estamos criando um jogo em 3D. Aqui você poderá construir literalmente o seu mundinho particular e interagir com os seus amigos, no melhor estilo Matrix e Minority Report.
Como o LSL funciona...
Você verá ao longo deste curso, que a Linden Scripting Language (LSL) é uma linguagem simples, que pode ser encarada como poderosa em alguns aspectos e limitadas sob outros pontos de vista. No entanto, é a única alternativa que temos atualmente para adicionar comportamentos aos objetos criados no Second Life.
Apesar de estarmos vivendo os tempos em que a POO vem ganhando cada vez mais espaço no mercado, a LSL não é orientada à objetos e sim baseada em eventos e estados. Isto significa dizer que não podemos criar os nossos próprios objetos. Estamos restritos a tipos que encontramos em outras linguagens como integer e string, além de outros exclusivos, como variáveis 3D do tipo vector e quaternioon
(veremos a utilidade das mesmas futuramente). Está presente na linguagem ainda uma extensa lista de funções (mais de 300) que inclui funções para manipulação de Física (physics) e interação entre avatares. Note que apesar da grande quantidade de funções pré-existentes, temos a possibilidade de criarmos as nossas próprias funções.
Entendo o que são Estados e Eventos
Na primeira parte deste curso, vimos como utilizar o editor de scripts que acompanha o cliente do Second Life sem, no entanto, focarmos no script que é gerado por padrão pelo mesmo. A partir de agora, iremos começar a estudar em detalhes a estrutura dos scripts escritos em LSL.
Os scripts que criaremos em LSL possuem estados específicos e realizam suas funções movendo-se pela série de estados de maneira controlada pelos eventos. Será algo novo para a maioria dos desenvolvedores, pois ainda que tenhamos a possibilidade de implementar máquinas de estado na maioria das linguagens, em LSL trabalhamos seguindo este conceito o tempo todo.
O Second Life fornece muitos tipos diferentes de eventos, desde aqueles que ocorrem baseados em um temporizador e não requerem interação com o usuário até os que são explicitamente disparados pelo mesmo. O exemplo mais típico é o evento touch que ocorre quando o usuário toca em um objeto.
Para entendermos como tudo funciona, vamos analisar o template que é gerado como ponto de partida. Crie um novo objeto e adicione um script para o mesmo conforme aprendemos na aula anterior. O editor de scripts será exibido com o código a seguir:
default
{
state_entry()
{
llSay(0, "Hello, Avatar!");
}
touch_start(integer total_number)
{
llSay(0, "Touched.");
}
}
A palavra-chave default representa o estado inicial pelo qual o programa inicia. No pequeno exemplo acima temos dois eventos, state_entry que ocorre quando o objeto é iniciado e touch_start, que acontece quando este é tocado por um usuário.
Voltaremos a este tema na próxima parte do curso quando começaremos a criar nossos próprios scripts, o que facilitará o seu entendimento sobre o assunto.
Onde posso criar meus objetos?
Conforme mencionamos na parte anterior do curso, você só poderá criar objetos em um terreno de sua propriedade ou em um local onde o proprietário tenha concedido este direito aos visitantes. Este tipo de local é conhecido como Sandbox (caixa de construção) e pode ser encontrado com facilidade no Second Life, pois a sua presença em uma ilha ajuda a aumentar o número de visitantes.
Para encontrar locais onde é possível construir, siga este roteiro:
- Clique no botão Procurar na parte inferior da janela.
- A caixa de diálogos Procurar será exibida. Selecione a guia Lugares.
- Digite no campo Encontrar a palavra SandBox.
- Clique no botão Buscar.
- Uma lista de locais adequados a criação de objetos e scripts será exibida.
Veja na base da janela que foram encontrados mais de 100 resultados. O cliente do SL só mostra os 100 primeiros. Para achar outros locais não relacionados na lista retornada, é preciso refinar mais a busca adicionando outras palavras.
- Selecione o local da sua preferência e clique me Teleportar para explorá-lo.
Para saber se é possível construir em determinado local, basta olhar para o topo da janela. Nos locais em que não é possível criar objetos ou script, você verá os ícones a seguir:
Nos locais em que é possível criar objetos e scripts, esses dois ícones não estarão presentes. Confira na captura de tela a seguir referente ao local selecionado na janela Procurar:
Neste local há apenas um ícone sinalizando que não é permitido empurrar objetos criados por outros usuários.
Voltando facilmente ao local
Assim que achar um local adequado, não deixe de criar uma landmark para ele. Trata-se de um atalho com as coordenadas para o local dentro do Second Life que é armazenado sob o grupo Landmarks do seu inventário, permitindo assim o seu retorno posterior ao mesmo facilmente.
Para criar a landmark, faça o seguinte:
- Pare o seu avatar no exato local onde deseja criar a landmark.
- No menu Mundo, clique na opção Criar Landmark aqui.
Feito isso, tecle Ctrl + I para acessar o seu Inventário. Veja que a landmark agora faz parte da sua lista de locais.
Desta forma, com um simples duplo clique no local desejado, você será teleportado para o mesmo. Bem que na vida real também poderia ser assim, simples, rápido e sem congestionamentos para ir para o trabalho, não é verdade?
Perceba na imagem anterior que criamos uma pasta chamada Estudo para armazenar as landmarks, reservada para os locais que são SandBoxes. Procurar manter o seu inventário organizado é algo importante, principalmente porque você visitará muitos locais interessantes e terá uma lista enorme de locais guardados em pouco tempo.
Para criar a pasta, basta clicar com o botão direito sobre o local desejado e selecionar no menu de contexto, a opção Nova Pasta.
Após criar a pasta, arraste os marcadores de locais desejados para dentro da pasta. Note que você não precisa manter o nome atual dos locais para as suas landmarks. Se preferir, escolha outro nome mais adequado para o mesmo e altere-o através da opção Renomear presente no menu de contexto.
Explicados os detalhes, você já está apto a encontrar um local adequado as suas experimentações. Veremos a seguir como usar um editor externo.
Criando scripts em um editor externo
Ainda que possamos codificar qualquer script por meio do editor de scritps interno do Second Life, a sua falta de recursos nos priva de várias facilidades que são importantes durante o desenvolvimento. Para aumentarmos a nossa produtividade e evitarmos puxar demais pela memória, podemos recorrer a editores externos mais sofisticados. Na primeira parte deste curso, mencionamos como alternativa o Notepad++ e nos esquecemos, por um lapso de memória do LSL Editor, como bem nos lembrou o leitor Vagner. Através deste que é o mais completo editor já criado para LSL, é possível testar o seu código em busca de erros de sintaxe, compilar e executar scripts fora do mundo do Second Life. Você não leu errado, através do LSL editor é possível emular o Second Life e “rodar” o seu código enquanto estiver offline. Para baixá-lo, visite:
Desenvolvido em C# para a plataforma .NET 2.0, o LSL editor inclui vários recursos que lembram em muito o Visual Studio da Microsoft (imagens extraídas do site oficial). Dentre eles, podemos destacar:
a) Solution Explorer _ os projetos ficam organizados de forma semelhante ao do Visual Studio.
b) Code highlighting_ utiliza cores diferentes para destacar as estruturas da linguagem, funções, eventos, variáveis e valores. Note que este recurso também está presente no editor que acompanha o visualizador do Second Life.
c) Code Completion _ o já clássico Intellisense, recurso indispensável para desenvolvedores. Veja:
d) Tooltip das palavras-chaves _ oferece dica de uso para todas as palavras reservadas do LSL.
e) Block commenting / uncommenting _ permite comentar/descomentar rapidamente um bloco de código de modo que o mesmo seja desconsiderado pelo compilador.
Note que esses são apenas alguns dos recursos oferecidos por este editor. Baixe-o e execute-o para experimentar todas as features. Não é necessário instalá-lo, apenas descompacte o arquivo .zip e em seguida crie um atalho no seu desktop ou na barra de início rápido para facilitar futuros acessos ao programa. Não se esqueça, contudo, de que é necessário ter o .NET Framework 2.0 instalado na máquina para que o mesmo funcione. Se estiver rodando Windows XP com Service Pack 2, esta versão do framework já estará presente.
Outro ponto a ser destacado é que algumas funcionalidades ainda não estão 100% implementadas (a versão testada foi a 2.16 Beta), por tanto não se assuste se selecionar um recurso e receber uma mensagem informando que o mesmo ainda não se encontra disponível. No entanto, ele inclui todos os recursos que precisaremos para nossas próximas aulas, quando então continuaremos a explicar o seu funcionamento.
Conclusão
Aos poucos, você está tomando contato com o ambiente de desenvolvimento disponível para o Second Life e se acostumando a olhar para cada objeto presente no metaverso sob a ótica de um desenvolvedor. A partir da próxima aula, começaremos a criar nossos próprios scripts e adicionar funcionalidades interessantes aos objetos que criarmos.
Abraços e até a próxima!
Cláudio Ralha
MCP – MCAD – MCTS
- Desenvolvimento de um jogo Quebra-Cabeças para Second LifeLSL (Second Life)
- Second Life: Criando instâncias de objetos via códigoLSL (Second Life)