Aug 04

Introducción.

Después de instalar OpenSim 0.7 el paso siguiente es verificar su funcionamiento.  Para esto se probaron los siguientes 4 visores compatibles con Second Life/OpenSim.

  1. Second Life Client (1.23.5.136262).
  2. Second Life Client (2.1.0.207030).
  3. SnowGlobe (2.0.2.3576).
  4. Hippo OpenSim Viewer (0.6.3).

Second Life Client v1

Second Life Client v2

SnowGlobe v2

Hippo OpenSim Viewer v0.6

Instalación y ejecución.

Todos, a excepción del Hippo, para instalarse deben simplemente descomprimirse en el directorio donde residirán finalmente.  Por el contrario, cuando se descomprime Hippo se obtiene un instalador, el cual al ejecutarse pregunta a través de diálogos la ubicación final donde se instalará el visor.

De manera similar, todos, a excepción de Hippo, se ejecutan de la siguiente manera.

$ ./<visor> -loginuri http://<host>:<port>

Donde <visor> es el archivo ejecutable (secondlife o snowglobe), <host> es el nombre o dirección IP del servidor de OpenSim y <port> es el puerto donde se está ejecutando el servicio (9000 por defecto).

Nuevamente Hippo se diferencia del resto ya que incluye desde su interfaz grafica (Edit > Preferences > Grids) la capacidad de administrar las grids a las cuales se va a realizar conexiones.

Hippo OpenSim Viewer, grid configuration

Conclusiones.

En una revisión rápida se encuentran las siguientes conclusiones.

  • Aparentemente Second Life Client v1 y Hippo OpenSim Client se encuentran basados sobre la versión del software base, mientras que les sucede lo mismo al Second Life Client v2 y al SnowGlobe.
  • Los clientes Second Life Client v2 y SnowGlobe presentan problemas para descargar y manipular el skin del avatar, así que en su defecto muestran una nube o un huevito (en gráficos con calidad menor).
  • Debe tenerse en cuenta que la prueba se realizó desde un portátil con una tarjeta gráfica de muy bajo perfil (Intel 965) y que con una mejor configuración de hardware los resultados pueden variar.

Enlaces.

Tagged with:



En August 4 de 2010, Jorge Iván Meza Martínez escribió acerca de Probar OpenSim 0.7 en GNU/Linux Ubuntu 10.04 x64.
Aug 02

Introducción.

OpenSimulator es un servidor de aplicaciones 3D que puede ser utilizado para crear ambientes o mundos virtuales los cuales pueden ser accedidos a través de una variedad de clientes y  protocolos. Permite realizar los desarrollos con las tecnologías mas habituales gracias a un diseño flexible, fácilmente extendible mediante módulos cargables para crear con ellos configuraciones completamente personalizadas.  Este software se licencia bajo la BSD License, lo que permite que sea incluído en paquetes de código abierto o comerciales.   Por defecto, OpenSimulator puede simular un entorno virtual de Second Life™ (incluyendo la compatibilidad con su cliente). Otros ambientes, protocolos y características pueden ser soportadas mediante módulos añadidos.

Tomado de http://opensimulator.org/.

Instalar Mono.

# pacman -S mono unzip

# mono --version

Mono JIT compiler version 2.6.7 (tarball Sun Jul 25 19:50:39 CEST 2010)
Copyright (C) 2002-2010 Novell, Inc and Contributors. www.mono-project.com
TLS:           __thread
GC:            Included Boehm (with typed GC and Parallel Mark)
SIGSEGV:       altstack
Notifications: epoll
Architecture:  amd64
Disabled:      none

# vi /etc/rc.conf

DAEMONS=(... mono)

Crear usuario opensim.

# /usr/sbin/useradd -m -g users -s /bin/bash -c “OpenSimulator” opensim

# passwd -l opensim

Instalar OpenSim.

# wget http://dist.opensimulator.org/opensim-0.7-bin.tar.gz

# tar zxvf opensim-0.7-bin.tar.gz

# mv opensim-0.7-bin /home/opensim/0.7

# chown -R opensim:users /home/opensim/0.7

# ln -s /home/opensim/0.7 /opt/opensim

Iniciar OpenSim.

# su -c /opt/opensim/bin/opensim-ode.sh opensim

Configurar OpenSim por primera vez.

=====================================
We are now going to ask a couple of questions about your region.

You can press ‘enter’ without typing anything to use the default

the default is displayed between [ ]: brackets.
=====================================

New region name []: Playing Region
Region UUID [18d5fc00-1452-4876-bb46-6f75c06387a6]:
Region Location [1000,1000]:
Internal IP address [0.0.0.0]:
Internal port [9000]:
Allow alternate ports [False]:
External host name [SYSTEMIP]:

Your region is not part of an estate.
Do you wish to join an existing estate? [no]:
New estate name [My Estate]: Playing Estate

The current estate has no owner set.
Estate owner first name [Test]: Master
Estate owner last name [User]: Player
Password: testing
Email []:

Enlaces.

Tagged with:



En August 2 de 2010, Jorge Iván Meza Martínez escribió acerca de Instalar OpenSim 0.7 en ArchLinux 2010.05 x64.
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.
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.
Dec 05

Instalaremos la version binaria del la libreria libsecondlife en una maquina Ubuntu 8.10, para esto necesitamos tambien instalar mono.

Instalar Mono :

  • Abrir una consola y ejecutar
    sudo apt-get install mono-runtime

Instalar Libsecondlife :

Ejecutar Cliente Consola :

  • Libsecondlife cuenta con un programa que nos permite acceder al mundo virtual a traves de consola y dar indicaciones a nuestro avatar o explorar el mundo :
  • mono TestClient.exe --first Juan --last Perez --pass 1234 --loginuri=http://192.168.1.3:9000/
    52 [1] INFO  - No log configuration found, defaulting to console logging
    424 [2] INFO  - <Juan Perez>: Connecting to (192.168.1.3:9000)
    606 [3] WARN  - <Juan Perez>: Received a duplicate of packet #2, current type: AvatarAppearance
    745 [4] INFO  - <Juan Perez>: Received a region handshake for OpenSim Test (192.168.1.3:9000)
    Logged in Juan Perez
    Type quit to exit.  Type help for a command list.
    1 avatars online> say Hola
    Said Hola
Tagged with:



En December 5 de 2008, Marlon J. Manrique escribió acerca de Instalando Libsecondlife en Ubuntu 8.10.