Resistance is Futile
Currently Browsing: Desarrollos

Pulsar Project : Usando XyyyyzText

El script XyyyyzText permite visualizar texto dentro de un prim ademas de permitir la creación de un conjunto de prims como un tablero para la visualización de texto multilinea, el script que realmente son cuatro: un script para modificar la forma del objeto donde se visualizan los caracteres, para que se vean 5 caras sobre un mismo lado, un script para controlar la visualización del texto en cada objeto, un script que permite controlar un conjunto de objetos para visualizar gran cantidad de caracteres y un script de ejemplo para controlar el tablero y actualizar el texto visualizado en el tablero.

Se realizo una copia local de los scripts para mantener una versión que pueda ejecutarse en Second Life y una modificada para ejecutarlos en OpenSimulator, como tambien modificar los scripts para su uso dentro de Pulsar en los tableros de texto.

XyyyyzText en Funcionamiento

Uso de XyyyyzText en Second Life :

  • Aunque existen muchos lugares donde se pueden encontrar los scripts, se realizo una copia local para controlar el posible cambio de versiones que pueda suceder, aqui esta nuestra copia :
    http://code.google.com/p/pulsarproject1/source/browse/trunk/virtualword/opensim/PulsarProjectTools/XyyyyzText
    O pueden descargarlos directamen del Wiki de SecondLife
    http://wiki.secondlife.com/wiki/XyyyyzText
  • Conectarse a Second Life
  • Crear la Celda :
    • Crear un Prim Cubo
    • Crear un nuevo script dentro del cubo y copiar el contenido de :
      XyyyyzText_Cell_Transform.lslp
    • Este script cambia la forma del cubo para poder visualizar las cinco caras en un solo lado
    • Copiar el script :
      XyyyyzText_Cell.lslp
      Dentro del objeto, con esto tenemos una celda que visualiza 10 caracteres
    • Copiar la celda cuantas veces se requiera,
      por ejemplo para visualizar 180 carateres se pueden crear 18 celdas, 3 filas y 6 columnas
  • Crear el Control del Tablero :

    • Crear un nuevo prim
    • Copiar el script :
      XyyyyzText_BoardControl.lslp
    • Abra el script y vaya a la linea 15 :
      integer linelength = 80;
      Cambie 80 por la longitud de caracteres de la linea
    • Copiar el script de ejemplo que permite actualizar el contenido del tablero con solo escribir el mensaje :
      XyyyyzText_Example.lslp
    • Ahora se deden enlazar todos los elementos en un solo objeto
      Con la tecla SHIFT presionada vaya dando click en cada celda, finalmente de click en el prim del control del tablero y presiones las teclas Ctrl-L, esto enlaza todos los objetos en uno solo y permite que el control del tablero envíe las cadenas a cada celda.
  • Uso :
    Simplemente escriba algo en el chat y esto aparecerá en el tablero, si se desea cambiar de linea coloque el carácter |

Uso de XyyyyzText en OpenSimulator :

  • El script utiliza texturas que no se encuentran disponibles en OpenSim, por tal motivo se deben descargar de Second Life y subir a nuestro servidor de OpenSim
  • Se descargo la lista de texturas utilizadas por el script utilizando una aplicación php que se esta desarrollando para la descarga y subida de texturas, se realizo una copia local en el directorio :
    http://code.google.com/p/pulsarproject1/source/browse/trunk/virtualword/opensim/PulsarProjectTools/#PulsarProjectTools/PulsarXyyyyzText/texturas
  • Se subieron al servidor con otro script de php, cada imagen devuelve un nuevo UUID por lo cual se debe crear una lista de estos para modificarla en el script
  • Realizar los mismos pasos que se realizaron para la construccion del tablero en SecondLife
  • Modificar la lista de texturas en el script :
    XyyyyzText_Cell.lslp
  • Nota :
    • Abra los scripts y haga modificaciones para que OpenSim obligue a su actualización y compilación
    • Se pueden utilizar programas de terceros para subir las texturas a OpenSim o subirlas, se debe generar la lista de UUIDs a mano
    • Las texturas estan en formato jp2 el cual es el standard utilizado en Second Life, se necesitan editores que soporten este formato para visualizar las imagenes
    • Se esta tratando de crear herramientas que permitan de una forma facil y rapida crear texturas que funcionen con este script.

Aunque actualmente se están realizando pruebas de funcionamiento de los scripts al parecer todo esta funcionando muy bien y se procederá a crear tableros basados en este script para la publicación de información tipo texto dentro del mundo virtual. Se deben hacer pruebas de migracion del script a otras regiones, pero eso lo haremos mas adelante.


Pulsar Project : Visualizar Texto en un Prim

Visualizar Texto dentro de objeto (también llamado Prim) dentro de un mundo virtual como Second Life parecería fácil, desafortunadamente no existen funciones que permitan escribir directamente texto sobre un objeto y no existe forma de cargar una textura generada dinamicamente con el contenido texto, tampoco existe una forma de generar la imagen de forma externa y cargarla directamente dentro del objeto; por este motivo mucho del contenido encontrado dentro de los mundos virtuales son imágenes con el texto a visualizar que son generadas con editores de imagen y que son subidas al simulador de Second Life por $10 Lindens cada una, pero afortunadamente existe una forma de visualizar texto dentro de un objeto en Second Life.

Probando Scripts para la Visualizacion de Texto

Algunas Formas :

  • Un letra por Objeto :
    Crear una textura (imagen de 512x512 pixeles) con los caracteres del abacedario a utilizar en la fuente a utilizar, se pueden crear una textura mas grande si el conjunto de letras es muy extenso o varias texturas con diferentes conjuntos de letras, como también se pueden crear texturas por cada fuente a utilizar aunque se recomienda utilizar fuentes donde los caracteres tengan las mismas dimensiones ya que todos aparecerán dentro de objetos del mismo tamaño que conforma el mensaje a utilizar. Luego se debe crear un script que asigne a cada objeto la letra que se quiere visualizar, calculado su posición dentro de la textura y aplicarla al objeto.  Lo malo de esta estrategia es que para mostrar el mensaje "Hola Mundo" se necesitarían diez objetos para la construcción del visor, así que si queremos un tablero de 180 caracteres debemos tener 180 objetos lo cual es una gran cantidad debido a que este recurso es limitado y degrada el desempeño del servidor del mundo virtual.
  • Una Letra por Lado del Objeto :
    Esta estrategia permite colocar varias letras dentro del mismo objeto, esto se logra tomando el objeto cubo que tiene seis caras (en cada cara se puede colocar una textura diferente) y aplanando este, para que por un lado se puedan ver hasta cinco texturas, esto se logra deformando el cubo con las herramientas de edición, una vez que tenemos el cubo podemos colocar un carácter en cada cara, logrando tener un máximo de cinco caracteres por cada objeto, de esta manera podemos colocar el mensaje "Hola Mundo" utilizando dos objetos lo que reduce en una quinta parte el uso de prims y se reduce a una textura con el conjunto de caracteres a visualizar.
  • Varias Letras por Lado del Objeto :
    Otra estrategia a utilizar es colocar dos caracteres por cada cara del objeto, en este caso podríamos obtener diez caracteres y nueva mente reducimos a la mitad el consumo de objetos para la visualización de texto, aunque aumenta el numero de texturas a utilizar ya que debemos crear todas las posibles combinaciones de dos letras lo cual nos demanda una gran cantidad de texturas pero reduciendo el numero de objetos a utilizar. Esta ultima estrategia es la mas usada en la visualización de texto dentro de objetos de SecondLife y de cual existen varios scripts.

Scripts Disponibles en Second Life :

Existen gran cantidad de soluciones para este problema, algunas utilizan mas recursos como prims y scripts lo que puede causar que el rendimiento del simulador se vea afectado (LAG), mientras otras versiones utilizan mas recursos como texturas que no afectan el funcionamiento del simulador pero afectan al cliente, el cual debe descargar gran cantidad de texturas para poder visualizar la información, otro problema adicional es la necesidad de crear nuevas texturas de acuerdo al conjunto de caracteres que se necesitan y aunque los scripts con soporte de UTF mejoran el uso de caracteres especiales, se deben crear las texturas necesarias para su visualización.

Se tomo la decisión de probar XyyyyzText para la creacion basica de los tableros de texto mas adelante se explorara con mas detalle la creación dinámica de texto utilizando otras herramientas. 


Pulsar Project : Tableros de Texto

En el análisis de herramientas educativas a ser utilizadas dentro de los mundos virtuales, aparece la necesidad de crear un tablero que permita visualizar cualquier texto en el, lo cual permitiría crear carteles con el numero y nombre del salón de clases, avisos de identificación de lugares, tableros de información que puedan ser actualizados fácilmente por los dueños de los mismos, como también puedan ser actualizados remotamente.

Para el desarrollo de esta herramienta nos topamos con algunos problemas que debemos solucionar de la mejor manera posible, facilitando la actualización de contenidos en dichos tableros, como tambien adicionar gran cantidad funciones que permitan utilizar los tableros de texto de forma variada.

hippoTELL - Ejemplo de Tablero Texto

Estos son algunos de los problemas que debemos enfrentar al momento de diseñar los tableros de texto :

  • En el caso de Second Life :
    • No ofrece una función que permita crear escribir directamente sobre un Prim (objeto)
    • No ofrece una función que permita crear dinamicamente texturas con texto e imágenes
    • No permite el uso de texturas vía web lo que permitiría generar la textura fuera de Second Life y cargarla directamente en el tablero.
    • Por cada contenido debemos crear una imagen y subirla al simulador lo que cuesta $10 Lindens por imagen
    • Cada que necesitemos cambiar el contenido del tablero, debemos recurrir a un programa de edición como Paint, Gimp entre otras, para crear el contenido, subirlo al simulador y aplicarlo al tablero.
  • En el caso de OpenSim :
    • OpenSim ofrece una función para escribir directamente en los objetos
    • No tiene costo alguno subir texturas al simulador
    • Se podrían crear programas que generen la imagen, la suban y apliquen al tablero directamente.

Entre los requisitos basicos del tablero de texto tenemos :

  • Visualizar información de tipo texto
  • Posibilidad de crear tableros de varios tamaños
  • Actualizar fácilmente el tablero desde el mismo simulador sin incurrir en uso de herramientas externas

Entre los requisitos avanzados propuestos inicialmente tenemos :

  • Posibilidad de actualizar el tablero remotamente
  • Justificar el contenido dentro del tablero
  • Cambiar el color del texto en el tablero
  • Posibilidad de actualizar el tablero cada cierto tiempo con información descargada desde la web

Como antecedentes podemos citar :


Pulsar Project : Status.net HUD v0.1

Este es el primer desarrollo oficial del Pulsar Project, el Pulsar Status.Net HUD v0.1, este objeto permite actualizar el estado en un servidor basado en la plataforma de microblogging Status.Net, utilza el API compatible con Twitter para actualizar el mensaje de estado del sitio directamente desde el mundo virtual.

Instalación :

  • Ir al inventario
  • Buscar el objeto Pulsar Status.Net HUD v0.1
  • Click derecho sobre el objeto
  • Seleccionar la opción "Attach to HUD"
  • Seleccionar la opción "Top Left"
  • Aparece en pantalla una imagen con el logo de Status.Net
    (este es el objeto pegado a la pantalla)
  • Debe aparecer en el chat el mensaje :
    Pulsar Status.Net HUD v0.1 : Ready

Configuración :

  • Click derecho sobre el objeto
  • Seleccionar la opción "Edit"
  • Ir a la pestaña "Content"
  • Doble Click en el archivo "PulsarStatusNetHUD.lsl"
  • Cambiar los valores de usuario por los de su cuenta :
    string psnh_username = "juanp";
    string psnh_password = "xxxx";
  • Cambiar el numero de canal donde escucha el objeto :
    integer psnh_channel = 5;
  • Cambiar la direccion del servidor, por ejemplo http://servidor/dir/index.php
    string psnh_serverName = "servidor";
    string psnh_serverPath = "/dir";
    string psnh_restPath = "index.php/api/statuses/update.xml";
  • Guardar

Uso :

  • En la ventana de chat escribir el mensaje a colocar utilizando el canal
    por ejemplo para el canal 5 :
    /5 Este es un mensaje desde el Mundo Virtual

    Pulsar Project : Status.Net HUD

    Para la actualización de los sitios de microblogging basados en status.net desde los mundos virtuales basados en OpenSimulator y Second Life, se creara un HUD (Heads-Up Display), objeto que puede ser pegado directamente colocado dentro de la pantalla y no dentro del mundo como un objeto o un accesorio del avatar, de esta forma solo es visible dentro de la interface del usuario que lo esta utilizando.

    El objeto contiene un script desarrollado en LSL (Linden Script Language) que escucha los mensajes enviados por el avatar dueño del objeto a traves del canal 5, de esta forma si el usuario quiere enviar un mensaje debe colocar en la ventana de chat /5 seguido por el mensaje a enviar.

     
        // Listen all the messages and post to the microblogging site
        listen(integer channel, string name, key id, string message) {
        	// Update the status using the message give by the user
        	PSNH_updateStatus(message);
        }
     

    El script toma el mensaje y lo envia a traves de una peticion HTTP al servidor, adicionando informacion de autenticacion y el nuevo estado.

     
    // Update the estatus of the user in the microblogging site
    // @param message The message to use like status
    PSNH_updateStatus(string message) {
    	// Construct the url to send the message
    	// Something like this
    	// http://username:password@server.com/api/statuses/update.xml
    	string url = "http://" + psnh_username + ":" + psnh_password + "@"
    		+ psnh_serverName + psnh_serverPath + psnh_restPath;
     
    	// Prepare request values, using post and send the message encoded
    	string body = "status=" + message;
    	list parameters = [
    		HTTP_METHOD, "POST",
    		HTTP_MIMETYPE, "application/x-www-form-urlencoded; charset=UTF-8"
    	];
     
    	// Sen the request
    	psnh_requestID = llHTTPRequest(url, parameters, body);
    }
     

    La respuesta del servidor es capturada por el script y se visualiza un mensaje de error si el código retornado por el servidor es 200 (OK), si es otro código se escribe en la pantalla de chat simplemente el error y el contenido de la respuesta devuelta por el servidor.

     
    // Check the reponse send by the server
    // @param request_id The identifier of the request
    // @param status The http reponse code send by the server
    // @param metadata Metadata associated with the request
    // @param body The response information send by the server
    PSNH_checkResponse(key request_id, integer status, list metadata, string body) {
    	// If any problem with the server, show the page that send
    	// The server response 200 if not problem
    	if(status != 200)
    		llOwnerSay(body);
    	// Show a info message
    	else
    		llOwnerSay("Status Update!!!");
    }
     

    El script completo es colocado dentro del objeto, acompañado de otros archivos de documentación.

    Enlaces :


    Page 1 of 712345...Last »
    Powered by WordPress | Designed by Elegant Themes