Metaverso OpenSim en GNU/Linux

Tutorial con los pasos para conseguir instalar un metaverso propio en un sistema GNU/Linux.

Hace un tiempo Linden liberó el código de Second Life. Desde ese día se ha ido tejiendo alrededor del software una comunidad muy interesante de hackers que están trabajando en la creación de metaversos distribuidos. En esta entrada voy a mostrar los pasos para conseguir instalar un metaverso propio en un sistema GNU/Linux.
openslComenzamos en el wiki del proyecto opensimulator. Opensim es un programa escrito en C# (por tanto multiplataforma) capaz de servir metaversos soportando múltiples clientes y servidores. Después de instalar el servidor podremos ejecutarlo en diferentes modos, el modo autista, que permite un único visitante y el modo grid que permite la conexión de más personas al metaverso. Una vez tengamos el “grid” funcionando nos conectaremos con nuestro cliente de secondlife habitual.

¡Manos a la obra!

Primero descargarmos el código del repositorio subversion con el comando

svn co http://opensimulator.org/svn/opensim/trunk opensim

Para esto tendrás que tener instalado svn (subversion) en tu sistema. También hay versiones estables disponibles, pero no te proporcionarán ese cosquilleo en la barriga de ver tu metaverso saltar por los aires con tus amigos dentro.

A continuación construimos el software:
cd opensim
./runprebuild.sh
nant

Asegurate de que tienes el programa nant instalado.
En el wiki hay más información para activar la física ODE (Open Dynamics Engine), de la que vamos a pasar por el momento. Si algo no te ha funcionado ve a la sección de problemas de opensim e instala todos los programas de mono que ponen allí.

Un metaverso cualquiera

Ahora mismo ya podremos lanzar nuestro metaverso autista ejecutando opensim:

cd bin
mono OpenSim.exe

Y conectarnos a él mediante nuestro cliente de secondlife:

secondlife -loginuri http://localhost:9000

Aquí por algún motivo tienes que introducir tu usuario de secondlife (en el modo grid no). Bien, los seguideres de Nación Solipsista seguramente estarán más que satisfechos con esto, pero nosotros queremos más, queremos un metaverso con amigos… así que matemos el programa y vamos a configurar el modo grid.

Lo siguiente que necesitamos es un gestor de bases de datos mysql en el que crear una base de datos y almacenar la información del grid. Si necesitas ayuda para instalar mysql, en el wiki encontrarás más información.
Si no, conectate a mysql y crea una base de datos con las tablas que encontrarás en opensim/share/sql de la siguiente manera:

$ mysql -u root -p -h localhost
mysql> create database opensim;
mysql> use opensim;
mysql> source mysql-agents.sql;
mysql> source mysql-inventoryfolders.sql;
mysql> source mysql-inventoryitems.sql;
mysql> source mysql-logs.sql;
mysql> source mysql-regions.sql;
mysql> source mysql-users.sql;
mysql> quit

[Actualización 16:00 8 Diciembre]
Necesitaremos volcar también a la base de datos los ficheros UpgradeItemsTableToVersion2.sql y UpgradeFoldersTableToVersion2.sql que se encuentran en la ruta OpenSim/Framework/Data.MySQL/Resources. En posteriores revisiones/versiones no será necesario, actualmente (en la revisión 2621) sí.

Ahora editamos el fichero mysql_connection.ini

[mysqlconnection]
hostname=localhost
database=opensim
username=tu_usuario_de_mysql
password=tu_clave
pooling=false
port=3306

Ya casi está todo, ahora abre 5 consolas distintas, ejecuta en cada una los siguientes programas, en el orden que sigue y esperando para ejecutar el siguiente a que el primero te devuelva el prompt:

OpenSim.Grid.UserServer.exe devuelve el prompt OpenUser#
OpenSim.Grid.GridServer.exe devuelve el prompt OpenGrid#
OpenSim.Grid.AssetServer.exe devuelve el prompt OpenAsset#
OpenSim.Grid.InventoryServer.exe devuelve el prompt INVENTORY#
OpenSim.exe -gridmode=true

mi metaverso

Todos estos procesos te pedirán opciones, dales la que viene por defecto pulsando intro a discrección. Vete a la primera consola OpenUser# y crea un usuario para cada visitante con el comando create user, te pedirá nombre, apellido, clave y posición cartesiana, puedes asignar (1000,1000) al primero, (1050,1050) al segundo y así sucesivamente. Nos bastará crear un par de usuarios para hacer las pruebas. ¿Preparado? Conecta cada visitante (local) con tu cliente secondlife habitual, ahora el puerto de conexión es distinto:

secondlife -loginuri http://localhost:8002/

Por último si quieres que se conecten a tu servidor de metaversos desde fuera de tu red local, lo primero que tendrás que hacer es asegurarte que les proporcionas una IP correcta y que tu router está redirigiendo el tráfico de los puertos que utiliza opensim a tu equipo servidor (sé valiente y abre todos los puertos : P ). Además tendrás que editar el fichero xml de regiones opensim/bin/Regions/fichero.xml y escribir la IP externa en el campo “external_host_name”. (Yo he tenido a mi hermano estrellándose contra el portón cerrado de mi metaverso de pruebas durante un buen rato, tú no te olvides de esto).

Ya has creado tu propio metaverso. Ahora puedes seguir explorando, desde el wiki de opensimulator se accede a servidores de grids de metaversos, canales irc de la comunidad y demás. Yo te recomiendo, al igual que me recomendaron a mi, que leas Ciudad Permutación, ahí se esconde la esencia de todo esto y tal vez, por qué no Snow Crash, que explora menos las implicaciones pero es mucho más divertido.

Tags: ,

Que bien. Yo tropezaba en un par de puntos. Ya tengo faena para este finde ;-)

manolo garabullo

Hola:

Interesante artículo, ya me funciona casi todo correctamente (grid,…), pero se me plantea un problema:

- No tengo ni idea sobre esto de los SL y estoy intentando aprender un poco. Acabo de instalar Opensim (como te he comentado) y funciona todo menos la apariencia del avatar, es decir, no me deja cambiar nada (genero, ropa,…) siempre me pone un candado indicando que no puede modificar mi avatar ¿alguna idea?.

Gracias por tu tiempo.

Hola Manolo:
Si te estás iniciando en SL y OS un buen punto de partida es el foro de Irene Muni: http://www.irenemuni.com/foro/
Échale un vistazo, creo recordar que el tema del bloqueo del avatar estaba en uno de los hilos.

:)

manolo garabullo

Gracias, voy …

Un saludo