May 12

Una vez mas me dispongo a utilizar OpenSimulator para crear un mundo virtual, en este caso para el programa Ingenio de la Universidad Autonoma de Manizales que permite a los estudiantes de ultimo año de los colegios hacer parte de una experiencia educativa en la Universidad y que este año en el área de sistemas hemos utilizado OpenSimulator para la creación de la isla Ingenio y cada grupo de estudiantes tiene su terreno para crear lo que gusten.

SecondLIfe Viewer 2 y OpenSimulator 0.6.9 rc2

En esta ocasión instalaremos el OpenSimulator en un Ubuntu Desktop 10.04 y lo conectaremos al visor oficial de Second Life en su version 2, especificamente la version 2.0.1.203797.

La versión 0.6.8 de OpenSimulator lanza una excepción al ejecutarse sobre la distribución actual de Ubuntu 10.04 Desktop por tal motivo utilizaremos la versión 0.6.9 rc que esta en desarrollo.

Preparativos :

  • Abrir una consola
  • Instalar paquetes adicionales de Mono que no vienen con la instalación por defecto de Ubuntu
    sudo apt-get install libmono-microsoft8.0-cil

Instalacion OpenSimulator :

  • Abrir un navegador, ir a la pagina de descargas :
    http://opensimulator.org/wiki/Download
  • Descargar o copiar la URL del paquete Binario
    en este caso encontramos que la versión mas reciente es la 0.6.8
  • Abrir una consola
  • Descargar el paquete
    wget http://dist.opensimulator.org/opensim-0.6.8-binaries.zip
  • Expandir el paquete
    unzip opensim-0.6.8-binaries.zip
  • Cambiar al directorio
    cd opensim-0.6.8-binaries/bin
  • Ejecutar el servidor para crear una nueva Region
    ./OpenSim.exe

Crear la Nueva Región :

En este caso crearemos una Region llamada Ingenio, con un avatar maestro llamado Master Ingenio y de clave abcde :

  • Al ejecutar el OpenSimulator este solicita la información del la Region, ejemplo :New region name []: Ingenio
    Region UUID [aba75aca-58f6-47b4-a860-95396ea2c236]:
    Region Location [1000,1000]:
    Internal IP address [0.0.0.0]:
    Internal port [9000]:
    Allow alternate ports [False]:
    External host name [SYSTEMIP]:
    Master Avatar UUID [00000000-0000-0000-0000-000000000000]:
    Master Avatar first name (enter for no master avatar) []: Master
    Master Avatar last name []: Ingenio
    Master Avatar sandbox password []: abcde
  • Al terminar la instalacion debe aparecer el prompt de la region :
    Region (Ingenio) #

Instalar Visor Oficial de Second Life :

  • Ir a la pagina de descargas de Second Life y descargar el visor mas actual :

    http://secondlife.com/support/downloads/?lang=en-US

  • O descargar el visor, abriendo una terminal
  • Ejecutar el comando para descargar el visor
    wget http://download.cloud.secondlife.com/Viewer-2/SecondLife-i686-2.0.1.203797.tar.bz2
  • Expandir el archivo BZip2 :
    bunzip2 SecondLife-i686-2.0.1.203797.tar.bz2
  • Extraer el contenido :
    tar -xvf SecondLife-i686-2.0.1.203797.tar
  • Cambiar al directorio del visor
    cd SecondLife-i686-2.0.1.203797
  • Ejecutar el visor
    ./secondlife -loginuri http://<IpServidor>:9000/ -loginpage http://<IpServer>:9000/?method=login

Problemas :

  • El avatar aparece como una nube cuando se utiliza el visor oficial de Second Life version 2

Enlaces :

Tagged with:



En May 12 de 2010, Marlon J. Manrique escribió acerca de Instalacion de OpenSimulator en Ubuntu 10.04.
May 11

Al tratar de instalar la versión 0.6.8 de OpenSimulator en Ubuntu Desktop 10.04 este lanza la siguiente excepción :

23:04:03 - [APPLICATION]:
APPLICATION EXCEPTION DETECTED: System.UnhandledExceptionEventArgs
Exception: System.Exception: There was a SQL error or connection string configuration error when saving the region settings.

Esto al parecer sucede debido a la versión del SQLLite que no permite conectar a la base de datos, una forma de evitar el problema es utilizar otra base de datos como MySQL.

Tagged with:



En May 11 de 2010, Marlon J. Manrique escribió acerca de OpenSimulator 0.6.8 no instala en Ubuntu 10.04.
Feb 24

Una forma para realizar comunicación entre los prims internos de OpenSimulator o Second Life y el mundo externo es a través del uso de XML-RPC el cual permite enviar mensajes a un objeto dentro de una región, siempre y cuando este se haya registrado para recibir dicha comunicación.

Crear Script para Recibir Datos :

  • Abrir nuestro visor favorito y entrar al servidor de OpenSimulator o SecondLife
  • Crear un objeto
  • Adicionar un Script
  • Abrir el script
  • Colocar el siguiente codigo :
    default {
       state_entry()
       {
          llOpenRemoteDataChannel();
       }
    
       remote_data(integer type, key channel, key message_id, string sender, integer ival, string sval) {
          if(type == REMOTE_DATA_CHANNEL) {
             llOwnerSay("Canal : " + (string) channel + "");
          }
          else if(type == REMOTE_DATA_REQUEST) {
             llRemoteDataReply(channel,NULL_KEY,"Exito",1221);
             llOwnerSay("Cadena : " + sval + "nNumero: " + (string) ival);
          }
          else {
             llOwnerSay("Error");
          }
       }
    }
  • Guardar
  • En este momento el servidor debe compilar el script y muestra en el chat :
    [11:54]  Compile successful
    [11:54]  Primitive: Canal : 61b5e9ca-9378-4254-af36-d78d6ed839de
  • La cadena : 61b5e9ca-9378-4254-af36-d78d6ed839de es el identificador del canal por el cual escucha el prim, es diferente para cada prim

Enviar Datos con C# :

Se utilizara la libreria XmlRpcCS para realizar la comunicación entre la aplicación y el objeto en OpenSimulator o SecondLife.

  • Abrir una consola
  • Crear el directorio para el cliente
    mkdir clientxmlrpc
  • Cambiar al directorio
    cd clientxmlrpc
  • Copiar la libreria al directorio actual
    cp ../XmlRpcCS/XmlRpcCS.dll .
  • Crear un archivo Client.cs y adicionamos el siguiente codigo :
    using System.Collections;
    using Nwc.XmlRpc;
     
    public class Client {
            public static void Main() {
                    // Informacion del Servidor de Second Life
                    // Canal por donde escucha el cliente
                    string server = "http://xmlrpc.secondlife.com/cgi-bin/xmlrpc.cgi";
                    string channel = "eafc58de-5d8a-364e-d6d8-4c4cab0129f4";
     
                    // Parametros
                    Hashtable args = new Hashtable();
                    args.Add("Channel",channel);
                    args.Add("IntValue",12345);
                    args.Add("StringValue","Hello World!"); 
     
                    // Cliente XMLRPC
                    XmlRpcRequest request = new XmlRpcRequest();
                    request.MethodName = "llRemoteData";
                    request.Params.Add(args);
     
                    // Invocacion y Resultado
                    Hashtable ret = (Hashtable) request.Invoke(server);
                    System.Console.WriteLine(ret["StringValue"]);
                    System.Console.WriteLine(ret["IntValue"]);
            }
    }
  • Compilamos el codigo :
    gmcs -lib:. -r:XmlRpcCS.dll Client.cs
  • Ejecutamos
    mono Client.exe
  • Debe mostrar en pantalla los valores enviados por el objeto
    Exito
    1221
  • Mienstras tanto en OpenSimulator debe aparecer en el chat la informacion enviada
    Hello World!!! 12345

Para usar el mismo codigo con OpenSimulator la cadena server debe tener la direccion de nuestro servidor : http://<ipServidor>:<puerto>/cgi-bin/xmlrpc.cgi

Enlaces :

Tagged with:



En February 24 de 2009, Marlon J. Manrique escribió acerca de Cliente XML-RPC en Mono para OpenSimulator.
Feb 24

Actualmente algunos sistemas como OpenSimulator o Second Life utilizan servicios remotos basados en XML-RPC, por tal motivo es necesario utilizar una libreria para realizar los llamados a estos servicios, actualmente para Microsoft .NET podemos encontrar dos librerias :

Utilizaremos la libreria XmlRpcCS, la cual es utilizada por el proyecto OpenSimulator para implementar el servicio de XMLRPC que permite realizar llamados remotos a objetos en este mundo virtual.

Requerimientos :

  • Debemos instalar lo paquetes para compilar la libreria
    sudo apt-get install nant mono-2.0-devel libmono-winforms2.0-cil mono-1.0-devel

Construcción de la Libreria :

  • Abrir una consola
  • Descargar la ultima versión de la libreria
    http://sourceforge.net/project/platformdownload.php?group_id=123702
  • Por ejemplo la versión 1.10
    wget http://ufpr.dl.sourceforge.net/sourceforge/xmlrpccs/XmlRpcCS-1.10.zip
  • Descomprimir el archivo
    unzip XmlRpcCS-1.10.zip
  • Cambiar al directorio de la libreria
    cd XmlRpcCS
  • Compilar la libreria
    nant
  • El archivo XmlRpcCS.dll es creado

Enlaces :

Tagged with:



En February 24 de 2009, Marlon J. Manrique escribió acerca de Libreria XML-RPC para Mono.
Feb 19

mp4live_rtsp

Continuando con las pruebas de transmisión de vídeo en vivo desde una cámara web, utilizando mp4live para la transmisión, ahora el turno es para la combinación con Darwing Streaming Server que permite crear urls basados en RTSP para el acceso al vídeo, el cual puede ser accedido por medio de muchos reproductores y como casos especiales los cuales me interesan Second Life y clientes Java en teléfonos móviles.

Pasos :

Ahora podemos acceder a través del url rtsp://<ipServidor>/default.sdp el cual puede ser utilizado en teléfonos móviles, Second Life o OpenSimulator para acceder al vídeo en vivo.

mp4live_secondlife

Visualizar vídeo con OpenSimulator :

Enlaces :

Tagged with:



En February 19 de 2009, Marlon J. Manrique escribió acerca de mp4live, DSS y OpenSimulator.
Dec 19

Hasta el momento he utilizado el OpenSimulator con SQLite que ejecuta el motor directamente con el simulador y no tenemos que crear bases de datos para almacenar la informacion pero algunas veces los datos son muchos o se quieren tener en una base de datos externa como MySQL, a continuacion haremos los cambios necesarios para alojar los assets y el inventario :

Requerimientos : (ver antiguas entradas)

  • Instalar el OpenSimulator
  • Instalar MySQL

Configuracion :

  • Abrir una terminar y abrir el directorio donde esta el opensimulator instalado :
    cd opensim
  • Editar el archivo de configuracion
    vi bin/OpenSim.ini
  • Cambiar las siguientes propiedades a los valores dados :
    storage_plugin = OpenSim.Data.MySQL.dll
    storage_connection_string = "Data Source=localhost;Database=opensim;User ID=opensim;Password=opensim;"
    asset_database = local
    inventory_plugin = OpenSim.Data.MySQL.dll
    inventory_source = "Data Source=localhost;Database=opensim;User ID=opensim;Password=opensim;"
    userDatabase_plugin = OpenSim.Data.MySQL.dll
    user_source = "Data Source=localhost;Database=opensim;User ID=opensim;Password=opensim;"
    asset_plugin = OpenSim.Data.MySQL.dll
    asset_source = "Data Source=localhost;Database=opensim;User ID=opensim;Password=opensim;"
  • Abrir el cliente de mysql :
    mysql -u root -p mysql
  • Ejecutar el siguiente sql (modifique las claves)
    CREATE USER 'opensim'@'%' IDENTIFIED BY 'opensim';
    GRANT USAGE ON *.* TO 'opensim'@'%' IDENTIFIED BY 'opensim';
    CREATE DATABASE IF NOT EXISTS `opensim`;
    GRANT ALL PRIVILEGES ON `opensim`.* TO 'opensim'@'%';
  • Cambiar al directorio bin del opensimulator
    cd bin
  • Ejecutar el OpenSim :
    ./OpenSim.exe
  • El OpenSimulator se encarga de crear las tablas e iniciarlizar sus datos
Tagged with:



En December 19 de 2008, Marlon J. Manrique escribió acerca de OpenSimulator con MySQL.
Dec 17

ScienceSim

Despues de conocer que Intel estaba creando un mundo virtual llamado ScienceSim basado en OpenSimulator, ni corto ni perezoso trate de bajar e instalar sus servidores pero todavia no estan disponibles al publico en general, entonces opte por solicitar una cuenta para echarle un vistazo y mirar en que estan trabajando. Hoy me llego un correo con mi usuario y utilizando HippoViewer entre a pasear un rato.

Comence entonces entrando a la pagina web del simulador la cual esta desarrollada en PHP que permite solicitar una cuenta, actualizar los datos de la cuenta, visualizar las ultimas noticias, listado de regiones, estado de las regiones y mapas de estas. En el wiki encontre como acceder a las regiones utilizando el HippoViewer que hace poco descargue.

Lo primero que hice al llegar a las islas fue personalizar mi avatar (para luego darme cuenta que una seccion de bienvenida existen avatars gratis), luego me fui por los diferentes sitios donde encontre una zona de bienvenida donde existen imagenes con datos acerca de como moverse, usar la camara, modificar la apariencia y demas, en otro lugar hay edificios administrativos y al parecer algunas oficinas, tambien encontre un edificio como un observatorio y debajo del agua una cupula transparente a la cual no pude entrar. Tambien a los lados de un puente encontre unas pantallas donde se pueden observar varios tutoriales de Torley acerca de Second Life.

Las islas estan en construccion pero ya tengo mi usuario.

Enlaces :

Tagged with:



En December 17 de 2008, Marlon J. Manrique escribió acerca de Primeras Impresiones ScienceSim.
Dec 08

Esta vez necesito descargar una textura desde el servidor del OpenSimulator para realizar backups y otras tareas, para esto de nuevo utilizaremos LibOpenMetaverse, Mono con el lenguaje C#

En este caso necesitaremos el UUID de la imagen que vamos a descargar, para esto vamos a utilizar el cliente de SecondLife entrar a nuestro mundo, pulsar el boton del inventario, abrir el directorio de texturas, click derecho sobre la imagen a descargar y Copiar el AssetUUID

OpenSim Textura

El identificador es una cadena alfanumerica que utilizaremos para solicitar la imagen,  ejemplo :  12C00245-3432-4E1E-91E7-C2FD5C104E31

Escribir el Programa :

  • Abrir una consola
  • Crear el directorio para nuestro programa
    mkdir TextureDownloader
    cd TextureDownloader
  • Copiar las dlls necesarias de la libreria libopenmetaverse compiladas anteriormente
    cp <directorio libopenmv>/trunk/bin/OpenMetaverse.dll .
    cp <directorio libopenmv>/trunk/bin/OpenMetaverseTypes.dll .
    cp <directorio libopenmv>/trunk/bin/OpenMetaverseTypes.dll.config .
    cp <directorio libopenmv>/trunk/bin/OpenMetaverse.StructuredData.dll .
    cp <directorio libopenmv>/trunk/bin/log4net.dll .
    cp <directorio libopenmv>/trunk/bin/openjpeg-dotnet.dll .
    wget http://opensimulator.org/svn/opensim/trunk/bin/libopenjpeg-dotnet-2.1.3.0-dotnet-1.so
  • Crear el programa en C#
    vi TextureDownloader.cs
    using System;
    using System.IO;
    using System.Threading;
    using OpenMetaverse;
     
    public class ImageDownloader {
            public static void Main(string[] args) {
     
                    // Realizar el login
                    GridClient client = new GridClient();
                    LoginParams loginParams = client.Network.DefaultLoginParams(
                            "Juan","Perez","1234","TextureDownloader","0.1");
                    loginParams.URI = "http://192.168.1.3:9000";
                    if(!client.Network.Login(loginParams)) {
                            Console.WriteLine(client.Network.LoginMessage);
                            return;
                    }
     
                    // Evento a esperar la descarga
                    AutoResetEvent downloadEvent = new AutoResetEvent(false);
     
                    // Identificador de la textura a descargar
                    UUID textureID = UUID.Parse("12C00245-3432-4E1E-91E7-C2FD5C104E31");
     
                    // Evento de descarga de la imagen
                    client.Assets.OnImageReceived += delegate(ImageDownload image, AssetTexture asset) {
                            // Si todo funciona bien, guarde como imagen jp2
                            if(image != null &amp;&amp; image.Success)
                                    try {
                                            File.WriteAllBytes(image.ID + ".jp2",asset.AssetData);
                                    } catch(Exception e) {
                                            Console.WriteLine(e);
                                    }
                            // Dispare el evento de descarga
                            downloadEvent.Set();
                    };
     
                    // Solicite la descarga de la textura
                    client.Assets.RequestImage(textureID,ImageType.Normal,1000000.0f,0,0);
     
                    // Si nos cansamos de esperar notifique
                    if(!downloadEvent.WaitOne(120*1000,false))
                            Console.WriteLine("Time Out");
     
                    // Salir
                    client.Network.Logout();
            }
    }
  • Compilar el programa :
    gmcs -lib:. -r:System.Drawing,OpenMetaverse.dll,OpenMetaverseTypes.dll TextureDownloader.cs
  • Ejecutar el programa :
    mono TextureDownloader.exe

Esto crea un archivo con el identificador de la imagen y formato JPEG 2000, para convertirla en png para manipularla con aplicaciones graficas debemos convertirla a otro formato como por ejemplo png, para esto debemos instalar el paquete imagemagick

  • Instalar paquete
    sudo apt-get install imagemagick
  • Converti la imagen a png
    convert <UUID>.jp2 imagen.png
Tagged with:



En December 8 de 2008, Marlon J. Manrique escribió acerca de Bajando Texturas de OpenSimulator.
Dec 08

Una de las tareas que tengo que hacer es poder subir una serie de imagenes como textutras automaticamente a OpenSimulator, asi que me di a la tarea de buscar como hacerlo y hacer un pequeño programa que ilustre los pasos que se deben seguir.

Se deben tener algunas consideraciones antes de comenzar, la primera es con respecto al tamaño de las imagenes, las cuales deben tener un tamaño divisible por dos y deben ser cuadradas o rectangulares respetando ciertas reglas en la relacion del ancho y el alto, tambien se debe tener encuenta que una imagen mayor a 1024 pixeles se considera muy grande y es dificil de cargar en el cliente, se recomiendan tamaños como 256x256, 512x512.

Para mayor informacion :
http://wiki.secondlife.com/wiki/Image_System
Image Sizes for Second Life

Tambien debemos tener encuenta el formato de codificacion de la imagen, ya que el cliente utiliza imagenes JPEG-2000, si se tiene un editor de imagenes que genere este formato es ideal utilizarlo, pero la mayoria de las veces las imagenes a subir estan en formatos PNG,JPG entre otros, por lo que se debe convertir la imagen utilizando por ejemplo la libreria openjpeg.

Imagen a Subir

Imagen a Subir

La textura a utilizar como prueba tiene formato PNG y un tamaño de 512x512

Escribir el Programa :

  • Abrir una consola
  • Crear el directorio para nuestro programa
    mkdir TextureUploader
    cd TextureUploader
  • Copiar las dlls necesarias de la libreria libopenmetaverse compiladas anteriormente
    cp <directorio libopenmv>/trunk/bin/OpenMetaverse.dll .
    cp <directorio libopenmv>/trunk/bin/OpenMetaverseTypes.dll .
    cp <directorio libopenmv>/trunk/bin/OpenMetaverseTypes.dll.config .
    cp <directorio libopenmv>/trunk/bin/OpenMetaverse.StructuredData.dll .
    cp <directorio libopenmv>/trunk/bin/log4net.dll .
    cp <directorio libopenmv>/trunk/bin/openjpeg-dotnet.dll .
  • Crear el programa en C#
    vi TextureUploader.cs
    using System;
    using System.Drawing;
    using OpenMetaverse;
    using OpenMetaverse.Capabilities;
    using OpenMetaverse.Imaging;
     
    public class TexturaUploader {
    	public static void Main(string[] args) {
     
    		// Realizar el login
    		GridClient client = new GridClient();
    		LoginParams loginParams = client.Network.DefaultLoginParams(
    			"Juan","Perez","1234","ImageUploader","0.1");
    		loginParams.URI = "http://192.168.1.3:9000";
    		if(!client.Network.Login(loginParams)) {
    			Console.WriteLine(client.Network.LoginMessage);
    			return;
    		}
     
    		// Convertir imagen a JPEG-2000
    		Bitmap bitmap = (Bitmap) System.Drawing.Image.FromFile("OpenSIM_01.png");
    		byte[] data  = OpenJPEG.EncodeFromImage(bitmap,false);
     
    		// Obtener el identificador del directorio de las texturas
    		UUID folderID = client.Inventory.FindFolderForType(AssetType.Texture);
     
    		// Crear un nuevo item con los datos de la imagen, en el directorio de texturas
    		client.Inventory.RequestCreateItemFromAsset(data,"image01","Image Upload"
    			,AssetType.Texture,InventoryType.Texture,folderID
    			,delegate(CapsClient capsClient, long bytesReceived,
    				long bytesSent, long totalBytesToReceive, long totalBytesToSend) {
    				if(bytesSent &gt; 0)
                                    	Console.WriteLine(String.Format("Texture upload: {0} / {1}",
    						bytesSent,totalBytesToSend));
    			}
    			,delegate(bool success, string status, UUID itemID, UUID assetID) {
                            	Console.WriteLine(String.Format(
                                    	"RequestCreateItemFromAsset() returned: Success={0}, Status={1}, ItemID={2}, AssetID={3}",
                                    	success, status, itemID, assetID));
    			}
    		);
     
    		// Salir
    		client.Network.Logout();
    	}
    }
  • Compilar el programa :
    gmcs -lib:. -r:System.Drawing,OpenMetaverse.dll,OpenMetaverseTypes.dll TextureUploader.cs
  • Ejecutar el programa :
    mono TextureUploader.exe

Al momento de ejecutar el programa una excepcion fue lanzada :
Unhandled Exception: System.DllNotFoundException: libopenjpeg-dotnet-2.1.3.0-dotnet-1

Se debe a que no tenemos la libreria de enlace entre openjpeg y .NET, la busque en la distribucion del la libreria pero no la encontre asi que la descargue de internet al directorio.

  • wget http://opensimulator.org/svn/opensim/trunk/bin/libopenjpeg-dotnet-2.1.3.0-dotnet-1.so

Ahora podemos ejecutar el programa otra vez :

marlonj@blackbox:~/tmp/MyBot$ mono TextureUploader.exe
47 [1] INFO  - No log configuration found, defaulting to console logging
521 [2] INFO  - : Connecting to (192.168.1.3:9000)
673 [3] INFO  - : Received a region handshake for OpenSim Test (192.168.1.3:9000)
752 [4] WARN  - : Received a duplicate of packet #2, current type: ParcelOverlay
1229 [1] INFO  - : Logging out
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 4096 / 91313
Texture upload: 1201 / 91313
RequestCreateItemFromAsset() returned: Success=True, Status=, ItemID=ecd6a5e5-24b9-415b-b57d-07a87c674c65, AssetID=226c7ea3-8f57-4a87-88af-960593dc1db0
6231 [1] INFO  - : NetworkManager shutdown initiated
6232 [1] INFO  - : Caps system for OpenSim Test (192.168.1.3:9000) is aborting
Tagged with:



En December 8 de 2008, Marlon J. Manrique escribió acerca de Subiendo Texturas a OpenSimulator.
Dec 07

Despues de compilar la libreria de linopenmetaverse me dedique hacer el primer programa con la libreria, donde un avatar se autentique con el servidor y permanezca en el mundo un determinado tiempo y despues salga de este, esto con el fin de conocer el uso de la libreria y los pasos requeridos para compilar el programa.

Al principio solo dejaba al avatar cinco segundos en el mundo, pero al tratar de entrar de nuevo el servidor me sacaba diciendo que el avatar ya estaba logueado, entonces probe con 60 segundos, 30 segundos, al final me quede con 15 segundos asegurando asi que el proceso de autenticacion y loqueo se cumpla totalmente, para luego proceder a cerrar la conexion.

  • Abrir una consola
  • Crear el directorio para nuestro programa
    mkdir MyBot
    cd MyBot
  • Copiar las dlls necesarias de la libreria libopenmetaverse compiladas anteriormente
    cp <directorio libopenmv>/trunk/bin/OpenMetaverse.dll .
    cp <directorio libopenmv>/trunk/bin/OpenMetaverseTypes.dll .
    cp <directorio libopenmv>/trunk/bin/OpenMetaverse.StructuredData.dll .
    cp <directorio libopenmv>/trunk/bin/log4net.dll .
  • Crear el programa en C#
    vi MyBot.cs
    using System;
    using System.Threading;
    using OpenMetaverse; // Libreria de Acceso OpenSimulator
     
    public class MyBot
    {
            public static void Main()
            {
                    // Crear cliente
                    GridClient client = new GridClient();
     
                    // Informacion acerca del avatar y la aplicacion
                    LoginParams loginParams =
                             client.Network.DefaultLoginParams(
                                    "Juan","Perez","1234","MyBot","0.1");
     
                    // Colocamos la direccion de nuestro simulador
                    loginParams.URI = "http://192.168.1.3:9000/";
     
                    // Tratamos de entrar
                    if(client.Network.Login(loginParams))
                    {
                            // Si entramos sacamos un mensaje,
                            // esperamos 15 segundos
                            // y salimos del mundo
                            Console.WriteLine("Entrando ...");
                            Thread.Sleep(15000);
                            client.Network.Logout();
                    }
                    else
                            // Si no fue posible loguearse, mostrar error
                            Console.WriteLine(client.Network.LoginMessage);
            }
    }
  • Compilar el programa :
    gmcs -lib:. -r:OpenMetaverse.dll MyBot.cs
  • Ejecutar el programa :
    mono MyBot.exe

Para verificar que esto esta funcionando puede abrir el visor y entrar con un usuario a la zona inicial de la region, cuando ejecute el programa Juan Perez aparecera por unos momentos.

Tagged with:



En December 7 de 2008, Marlon J. Manrique escribió acerca de Creando el Primer Bot con LibOpenMetaverse.