+Première étape : installation des dépendences!

Dans une console root, tapez les commandes suivantes, apt-get installera aussi pleins de choses annexes necessaires.

apt-get install -y build-essential bison gawk
apt-get install -y libglib2.0-dev
apt-get install -y libpng12-dev libx11-dev libfontconfig1-dev
apt-get install -y libfreetype6-dev libjpeg62-dev libtiff4-dev
apt-get install -y libungif4-dev libexif-dev libcairo2-dev
apt-get install -y libpango1.0-dev libgtk2.0-dev libglade2-dev
apt-get install -y libgnome2-dev libgnomecanvas2-dev libgnomeui-dev
apt-get install -y libgnomeprint2.2-dev libgnomeprintui2.2-dev
apt-get install -y libpanel-applet2-dev libgtksourceview-dev
apt-get install -y libgtkhtml3.14-dev
apt-get install -y intltool
apt-get install -y libncurses5-dev
apt-get install -y subversion
apt-get install -y phpmyadmin
apt-get install -y mysql-server-5.0
apt-get install -y unzip
apt-get install -y desktop-file-utils
apt-get install -y xserver-xorg-core
apt-get install -y ruby
apt-get install -y screen
apt-get install -y uuid-runtime
apt-get install -y php5-curl
apt-get install -y php5-xmlrpc
apt-get install -y aptitude

Dans le doute, on enlève toute installation précédente de mono (vous n'y ètes pas obligé, mais c'est préférable pour une installation propre). Toujours dans une console root tapez :

apt-get remove 'mono-*' libgdiplus

+Deuxième étape : Installation de mono 2.2 !

Petite mise à jour (04/11/2009). Pour installer mono, ajoutez ceci à votre /etc/apt/sources.list :

deb http://www.backports.org/debian lenny-backports main

puis dans une console root :

gpg --keyserver pgp.mit.edu --recv-keys EA8E8B2116BA136C
gpg --armor --export EA8E8B2116BA136C | apt-key add -
aptitude update 
aptitude -t lenny-backports install mono-complete mono-mjs mono-devel nant

+Troisième étape : Installation d'OpenSim!

Pour cela, tapez les commandes suivantes dans une console utilisateur (pas besoin d'être root là) :

svn co http://opensimulator.org/svn/opensim/trunk opensim
cd opensim
./runprebuild.sh
nant

une fois la compilation terminée, c'est fini! voilà, bonne soirée et à bientôt pour un prochain article!

Uh ? toujours là ? vous en voulez encore ? Tant pis pour vous!

Or donc à ce stade, on peux parfaitement se satisfaire de l'état d'opensim et le faire tourner en standalone avec une base de données sqlite (mode par défaut d'opensim). En ce qui nous concerne, nous irons plus loin : la mise en place d'une micro grille s'appuyant sur mysql avec un frontend web et un loginscreen.

+Configuration de MySQL pour Opensim.

Lors de la première étape, nous avons installés apache, mysql et phpmyadmin. Nous utiliserons PhpMyAdmin car c'est plus simple et puis ça permet de valider que les composants necessaires au frontend web fonctionnent. Assurez vous que apache et mysql tournent avec :

 sudo /etc/init.d/mysql start
sudo /etc/init.d/apache2 start

Avec votre navigateur favoris, ouvrez le site http://localhost/phpmyadmin/ puis créez un utilisateur pour opensim et sa base de donnée qui vas avec. Je prendrais l'exemple tout à fait original et incongru suivant :

base de donnée : opensim
utilisateur : opensim
pass : opensim

(ouais je sais c'est impressionnant, c'est normal au début quand on as pas l'habitude).

+Configuration d'OpenSim

Nous allons créer un fichier de région, qui définira une sim. ce dernier dois être enregistré dans le dossier opensim/bin/Regions/. Nous le nomerons region.1000.1000.xml mais n'importe quel nom peux être définit :

<Root>
  <Config sim_UUID="16d071ee-16bd-4b5d-8218-ce3ca8bfd80d" sim_name="Ma Sim" sim_location_x="1000" sim_location_y="1000" internal_ip_address="0.0.0.0" internal_ip_port="9000" allow_alternate_ports="false" external_host_name="localhost" master_avatar_uuid="00000000-0000-0000-0000-000000000000" master_avatar_first="Toto" master_avatar_last="Tebo" master_avatar_pass="monmotdepass"/>
</Root>

(UUID de la sim à été créé avec uuidgen dans une console utilisateur)

A présent, voici le fichier OpenSim.ini, à mettre dans le dossier opensim/bin/ :

[Startup]                                                                                                                                                                                    
    save_crashes = false                                                                                                                                                                     
    crash_dir = "crashes"                                                                                                                                                                    
    gridmode = true                                                                                                                                                                          
    shutdown_console_commands_file = "shutdown_commands.txt"                                                                                                                                 
    EventQueue = true                                                                                                                                                                        
    clientstack_plugin="OpenSim.Region.ClientStack.LindenUDP.dll"                                                                                                                            
    region_info_source = "filesystem"                                                                                                                                                        
    DrawPrimOnMapTile = true                                                                                                                                                                 
    TextureOnMapTile = true                                                                                                                                                                  
    NonPhysicalPrimMax = 256                                                                                                                                                                 
    PhysicalPrimMax = 256                                                                                                                                                                    
    ClampPrimSize = true                                                                                                                                                                     
    AllowScriptCrossing = false                                                                                                                                                              
    TrustBinaries = false                                                                                                                                                                    
    storage_plugin="OpenSim.Data.MySQL.dll"                                                                                                                                                  
    storage_connection_string="Data Source=localhost;Database=opensim;User ID=opensim;Password=opensim;";                                                                                    
    asset_database = "grid"                                                                                                                                                                  
    MinimumTimeBeforePersistenceConsidered = 20                                                                                                                                              
    MaximumTimeBeforePersistenceConsidered = 60                                                                                                                                              
    see_into_this_sim_from_neighbor = True                                                                                                                                                   
    physical_prim = true                                                                                                                                                                     
    meshing = Meshmerizer                                                                                                                                                                     
    physics = OpenDynamicsEngine                                                                                                                                                              
    permissionmodules = "DefaultPermissionsModule"                                                                                                                                            
    serverside_object_permissions = false                                                                                                                                                     
    allow_grid_gods = false                                                                                                                                                                   
    allowed_script_creators = all                                                                                                                                                             
    allowed_script_editors = all                                                                                                                                                              
    DefaultScriptEngine = "XEngine"                                                                                                                                                           
    WorldMapModule = "WorldMap"                                                                                                                                                               
    MapImageModule = "MapImageModule"                                                                                                                                                         
                                                                                                                                                                                              
[Communications]                                                                                                                                                                              
InterregionComms = "LocalComms"                                                                                                                                                               

[StandAlone]
    accounts_authenticate = true
    welcome_message = ""        
    asset_plugin = "OpenSim.Data.MySQL.dll" ; for mysql
    asset_source = "Data Source=localhost;Database=opensim;User ID=opensim;Password=opensim;"
    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;"     
    LibrariesXMLFile="./inventory/Libraries.xml"                                                 
    AssetSetsXMLFile="./assets/AssetSets.xml"                                                    
    dump_assets_to_file = false                                                                  


[Network]
    http_listener_port = 9000
    remoting_listener_port = 8895
    default_location_x = 1000    
    default_location_y = 1000    
    http_listener_ssl = false ; Also create a SSL server
    http_listener_cn = "localhost" ; Use the cert with the common name
    http_listener_sslport = 9001 ; Use this port for SSL connections  
    http_listener_ssl_cert = "" ; Currently unused, but will be used for OSHttpServer
    grid_server_url = "http://localhost:8001"                                     
    grid_send_key = "null"                                                           
    grid_recv_key = "null"                                                           
    user_server_url = "http://localhost:8002"                                     
    user_send_key = "null"                                                           
    user_recv_key = "null"                                                           
    asset_server_url = "http://localhost:8003"                                    
    inventory_server_url = "http://localhost:8004"                                
    messaging_server_url = "http://localhost:8006"                                

[ClientStack.LindenUDP]
    client_throttle_multiplier = 2;

[Chat]
    whisper_distance = 10
    say_distance = 20    
    shout_distance = 256 

[ODEPhysicsSettings]
    world_gravityx = 0
    world_gravityy = 0
    world_gravityz = -9.8
    world_stepsize = 0.020
    world_internal_steps_without_collisions = 10
    world_hashspace_size_low = -4               
    world_hashSpace_size_high = 128             
    meters_in_small_space = 29.9                
    small_hashspace_size_low = -4               
    small_hashspace_size_high = 66              
    world_contact_surface_layer = 0.001         
    filter_collisions = true                    
    nm_terraincontact_friction = 255.0          
    nm_terraincontact_bounce = 0.1              
    nm_terraincontact_erp = 0.1025              
    m_terraincontact_friction = 75.0            
    m_terraincontact_bounce = 0.05              
    m_terrainContact_erp = 0.05025              
    m_avatarobjectcontact_friction = 75.0       
    m_avatarobjectcontact_bounce = 0.1          
    objectcontact_friction = 250.0              
    objectcontact_bounce = 0.2                  
    av_pid_derivative_linux = 2200.0            
    av_pid_proportional_linux = 900.0;          
    av_pid_derivative_win = 2200.0              
    av_pid_proportional_win = 900.0;            
    av_capsule_radius = 0.37                    
    av_capsule_standup_tensor_win = 550000      
    av_capsule_standup_tensor_linux = 550000    
    av_density = 80                             
    av_height_fudge_factor = 0.52               
    av_movement_divisor_walk = 1.3              
    av_movement_divisor_run = 0.8               
    geometry_default_density = 10.000006836     
    body_frames_auto_disable = 20               
    body_pid_derivative = 35                    
    body_pid_gain = 25                          
    geom_crossing_faiures_before_outofbounds = 5
    geom_contactpoints_start_throttling = 3     
    geom_updates_before_throttled_update = 15   
    body_motor_joint_maxforce_tensor_linux = 5  
    body_motor_joint_maxforce_tensor_win = 5    
    mesh_sculpted_prim = true                   
    mesh_lod = 32                               
    mesh_physical_lod = 16                      

[RemoteAdmin]
    enabled = false
    access_password = unknown
    region_file_template = "{0}x{1}-{2}.xml"
    enabled_methods = all                   
                                            
[RestPlugins]                               
    enabled = false                         
    god_key = SECRET                        
    prefix = /admin                         

[RestRegionPlugin]
    enabled = false

[RestHandler]
  enabled = false
  authenticate=true
  secured=true     
  extended-escape=true
  realm=OpenSim REST  
  dump-asset=false    
  path-fill=true      
  dump-line-size=32   
  flush-on-error=true 

[Voice]
    enabled = false
    account_management_server = https://www.bhr.vivox.com/api2
    sip_domain = testserver.com                               

[AsteriskVoice]
    enabled = false
    sip_domain = testserver.com
    conf_domain = testserver.com
    asterisk_frontend = http://testserver.com:49153/
    asterisk_password = bah-humbug                  
    asterisk_timeout = 3000                         
    asterisk_salt = paluempalum                     

[ScriptEngine.DotNetEngine]
    Enabled = false        
    ScriptDelayFactor = 1.0
    ScriptDistanceLimitFactor = 1.0
    RefreshConfig=0                
    NumberOfScriptThreads=2        
    ScriptThreadPriority=BelowNormal
    MaxEventExecutionTimeMs=5000    
    EnforceMaxEventExecutionTime=true
    DeactivateScriptOnTimeout=false  
    SleepTimeIfNoScriptExecutionMs=50
    ScriptsPerAppDomain=1            
    MaintenanceLoopms=50             
    MaintenanceLoopTicks_ScriptLoadUnload=1
    MaintenanceLoopTicks_Other=10          
    AllowOSFunctions = true                
    OSFunctionThreatLevel = Low            
    LoadUnloadMaxQueueSize=100             
    EventExecutionMaxQueueSize=300         
    AsyncLLCommandLoopms=50                
    WriteScriptSourceToDebugFile=true      
    DefaultCompileLanguage=lsl             
    AllowedCompilers=lsl                   
    CompileWithDebugInformation=true       
    CleanUpOldScriptsOnStartup=true        

[LL-Functions]
    AllowosConsoleCommand=false
    AllowGodFunctions = false  
    max_listens_per_script = 64

[DataSnapshot]
    index_sims = true
    data_exposure = minimum
    gridname = "Belgariade"
    default_snapshot_period = 1200
    snapshot_cache_directory = "DataSnapshot"

[Economy]
    CurrencyServer = ""
    LandServer = ""    
    ObjectCapacity = 45000
    PriceUpload = 0       
    PriceGroupCreate = 0  
    EconomyBaseAccount = 00000000-0000-0000-0000-000000000000
    UserLevelPaysFees = -1                                   
    UserStipend = 1000                                       
    IssueStipendWhenClientIsBelowAmount = 10                 
    KeepMoneyAcrossLogins = true                             
    ObjectCount = 0                                          
    PriceEnergyUnit = 100                                    
    PriceObjectClaim = 10                                    
    PricePublicObjectDecay = 4                               
    PricePublicObjectDelete = 4                              
    PriceParcelClaim = 1                                     
    PriceParcelClaimFactor = 1                               

    PriceRentLight = 5
    TeleportMinPrice = 2
    TeleportPriceExponent = 2
    EnergyEfficiency = 1     
    PriceObjectRent = 1      
    PriceObjectScaleFactor = 10
    PriceParcelRent = 1        


[SVN]
    Enabled = false
    Directory = SVNmodule\repo
    URL = "svn://your.repo.here/"
    Username = "user"            
    Password = "password"        
    ImportOnStartup = false      
    Autosave = false
    AutoSavePeriod = 15 ; Number of minutes between autosave backups


[XEngine]
    Enabled = true
    MinThreads = 2
    MaxThreads = 100
    IdleTimeout = 60
    Priority = "BelowNormal"
    MaxScriptEventQueue = 300
    ThreadStackSize = 262144
    AsyncLLCommandLoopms = 50
    WriteScriptSourceToDebugFile = false
    DefaultCompileLanguage = lsl
    AllowedCompilers=lsl
    CompileWithDebugInformation = true
    AllowOSFunctions = false
    OSFunctionThreatLevel = VeryLow
    SaveInterval = 120
    MaintenanceInterval = 10
    EventLimit = 30
    KillTimedOutScripts = false
    ScriptDelayFactor = 1.0
    ScriptDistanceLimitFactor = 1.0

[GridInfo]
    login = http://sd-11433.dedibox.fr:8002/
    gridname = "Ma Grille Qui Tue!
    gridnick = "MGQT!"
    welcome = http://localhost/loginscreen.php
    helper = http://localhost/
    economy = http://localhost/
    about = http://localhost/
    register = http://localhost/
    help = http://localhost/
    password = http://localhost/

    [OpenGridProtocol]
    ogp_enabled=false
    ogp_firstname_prefix=""
    ogp_lastname_suffix="_EXTERNAL"


[Concierge]
    enabled = false
    whoami = "jeeves"
    password = SECRET
    regions = "^MeetingSpace-"
    welcomes = /path/to/welcome/template/directory

Pour démarrer opensim, nous utiliserons le scripts suivant, que nous appellerons, par exemple, opensim.sh (changez les références des dossiers pour correspondre à votre configuration évidement) :

#! /bin/sh
ulimit -s 262144
export MONO_THREADS_PER_CPU=50
clear
echo "Veuillez patienter pendant le démarrage d'OpenSIm."
killall mono
cd /home/csurlemont/opensim/bin
sleep 5
#mode grille
echo "demarrage du serveur d'utilisateur"
screen -d -m  nice -n +19 mono OpenSim.Grid.UserServer.exe
sleep 10
echo "demarrage du serveur de messages"
screen -d -m  nice -n +19 mono OpenSim.Grid.MessagingServer.exe
sleep 10
echo "demarrage du serveur de grille"
screen -d -m nice -n +19 mono OpenSim.Grid.GridServer.exe
sleep 10
echo "demarrage du serveur d'objets"
screen -d -m nice -n +19 mono OpenSim.Grid.AssetServer.exe
sleep 10
echo "demarrage du serveur d'inventaire"
screen -d -m nice -n +19 mono OpenSim.Grid.InventoryServer.exe
sleep 10
echo "demarrage d'OpenSim"
screen -d -m nice -n +19 mono OpenSim.exe

screen -list
exit

N'oubliez pas de faire un "chmod 700 opensim.sh" pour rendre le script éxécutable. Voilà, en théorie, nous avons tout ce qu'il nout faut pour démarrer OpenSim. brulez un cierge, sacrifiez une poule un soir de pleine et priez pour que l'étape suivante se déroule bien !

+Premier démarrage d'opensim!

Dans une console utilisateur, lancez le script opensim.sh, ce qui devrais donner ceci comme résultat d'affichage :

Veuillez patienter pendant le démarrage d'OpenSIm.
demarrage du serveur d'utilisateur
demarrage du serveur de messages
demarrage du serveur de grille
demarrage du serveur d'objets
demarrage du serveur d'inventaire
demarrage d'OpenSim
There are screens on:
        23120..sd-11433 (Detached)
        23093..sd-11433 (Detached)
        23068..sd-11433 (Detached)
        23032..sd-11433 (Detached)
        22999..sd-11433 (Detached)
        22913..sd-11433 (Detached)
6 Sockets in /var/run/screen/S-csurlemont.

Donc le serveur d'utilisateur étant le premier à démarrer, il à pe PID le plus faible. Ceci etant le premier lancement d'opensim, il vous faudra configurer chaque serveur. en vous connectant à la console correspondante via un :

screen -r 22913

pour le serveur d'utilisateur, etc etc..

Répondez aux quesions et ensuite passez au serveur de messages, de grille, d'objet, d'inventaire et enfin d'opensim (Petit rappel, pour revenir à la console principale, il faut appyer sur CTRL+A+D). Certaines questions sont fastidieuse, notement pour la configuration de MySQL. Comme nous utilison un "WM userfriendly" nous avons un historique des copié-coller pour faciliter la chose, garder donc ceci en memoire :

Data Source=localhost;Database=opensim;User ID=opensim;Password=opensim;

et collez le quand on pose une question du genre "mysql connection string ? :" (pensez à modifier selon ce que vous avez choisis en base de donnée, user ou pass évidement!). Une fois ceci fait, si vous retournez dans PhpMyAdmin, vous verrez que des tables ont été crées dans la base de donnée "opensim", signe que tout se déroule bien! (d'ou l'intéret de choisir un cierge de qualité ou une poule fermière élevée en plein air). Et bien à présent, il nous faut aller récolter le fruit de notre dur labeur!

+Première connection à la sim! Pour les malchanceux qui utilisent win32 : faite une copie du raccourcis de secondlife qui se trouve sur votre bureau, ensuite, éditez ce raccourcis puis dans le champs "cible" ajoutez tout à la fin : " -loginuri http://localhost:8002/" enfin, lancez ce raccourcis et loggez vous (grace à l'utilisateur que vous avez créé lors du premier démarrage d'opensim). Pour les bienheureux libristes, dans une console tapez un simple ///secondlife -loginuri http://localhost:8002/// .

vous devriez avoir quelquechose dans ce genre : Opensim1 En fait non, vous aurez une sim vide, ce que je vous ai montré là, c'est un échantillon après quelques builds :-p

Nous voici avec une sim qui marche.. passons maintenant à la mise en place d'un frontend web et d'un loginscreen!

+Dernière étape : du oueb pour faire stylé!

Lors de la première étape, nous avons installé apache, phpmyadmin, mysql et leurs dépendance. Tout est là pour pouvoir utiliser l'Opensim Webinterface Redux. Vous pouvez la récupérer ici. Vous la décompressez dans votre répertoire /var/www . Editez /var/www/settings/config.inc.php notement les sections "database" et "system" modifiez comme il faut, pour notre exemple, ça donnerais ceci :

 ##################### System #########################
define("SYSNAME","Opensim Webinterface Redux");
define("SYSURL","http://localhost/");
define("SYSMAIL","your@email.com");

$userInventoryURI="http://localhost:8004/";
$userAssetURI="http://localhost:8003/";

##################### Database ########################
define("C_DB_TYPE","mysql");
//Your Hostname here:
define("C_DB_HOST","localhost");
//Your Databasename here:
define("C_DB_NAME","opensim");
//Your Username from Database here:
define("C_DB_USER","opensim");
//Your Database Password here:
define("C_DB_PASS","opensim");

Si ça vous fatigue de faire ça, allez voir le site : http://localhost/install/install.php et là, la question existentielle se pose : "mais pourquoi il l'a pas dit avant!!!" à laquelle je répond : "PASKEUH!!".

Ensuite, allez dans le dossier /var/www/sql_update , vous y trouverez des fichiers sql. Importez les dans votre base de donnée opensim comme ceci :

mysql -uopensim -popensim -b opensim < wi_adminsetting.sql  
mysql -uopensim -popensim -b opensim < wi_codetable.sql
mysql -uopensim -popensim -b opensim < wi_economy_transactions.sql
mysql -uopensim -popensim -b opensim < wi_startscreen_infowindow.sql
mysql -uopensim -popensim -b opensim < wi_admin.sql
mysql -uopensim -popensim -b opensim < wi_country.sql
mysql -uopensim -popensim -b opensim < wi_lastnames.sql
mysql -uopensim -popensim -b opensim < wi_startscreen_news.sql
mysql -uopensim -popensim -b opensim < wi_banned.sql
mysql -uopensim -popensim -b opensim < wi_economy_money.sql
mysql -uopensim -popensim -b opensim < wi_pagemanager.sql
mysql -uopensim -popensim -b opensim < wi_users.sql

Vous pouvez aller sur http://localhost/ pour voir la page d'acceuil. L'administration se fait via http://localhost/admin/ . L'utilisateur par défaut est "admin" et le pass par défaut est "test" . Vous vous amuserez avec plus tard! Il nous reste à bidouiller les logins screen! Sachant qu'ils sont déjà en place vu que c'est fournis par l'Opensim Webinterface Redux à cette adresse : http://localhost/loginscreen.php Avec des captures d'écrans par défaut et un état de la grille. Pour personnaliser un peux, allez dans votre sim comme précédent puis faites 4 captures d'écrans que nous appellerons login1.jpeg à login4.jpeg et que vous stockerez dans le dossier suivant : /var/www/images/login_screens/ Maintenant, voyons le résultat, démarrez secondlife comme ceci :

secondlife -loginuri http://localhost:8002/ -loginpage http://localhost/loginscreen.php

ce qui devrais vous afficher ceci : loginscreen1.jpeg

Et voilà! c'est fini!

Voici quelques petites choses à savoir. Pour pouvoir builder avec des huges prims, il vous faudra utiliser le client Hippo Opensim Viewer qui se trouve à l'adresse suivante Une fois fait, vous le lancez puis cliquez sur "grids", puis sur "add".Ensuite, vous insérez "http://localhost:8002/" dans le champ "login uri", puis vous cliquez sur "get grid info". Les autres champs vons se remplir automatiquement. Cliquez sur "apply" et vous verrez que "MGQT!" fais partie des grilles disponibles.(c'est le nom qui à été définis dans OpenSim.ini plus haut). Notez que parmis les grilles disponibles, il y à secondlife. Ceci à été fait une fois pour toute. A chaque fois que vous voudrez accéder à votre opensim, il faudra selectionner "MGQT!" dans la liste de "select a grid". Cliquez sur "ok" après avoir sélectionné "MGQT!" dans "select a grid" et enfin vous verrez votre page de login. Entrez vos identifiants et mot de passe puis cliquez sur login, puis amusez vous!. Autre chose, si votre serveur est puissant, vous pouvez créer plusieurs sim dans cette grille, Ce que nous allons faire maintenant! (sisi :-p) . Notre première sim se trouve à la position x=1000 y=1000. Nous allons créer une sim à gauche, autrement dit à la position x=999 y=1000. Ceci ce fait via la console. Commencez par générer un nouveau uuid avec uuidgen puis gardez le dans votre historique de presse papier. ensuite allez dans opensim/bin/Regions/. pour créer le fichier region.999.1000.xml (nom tout à fait arbitraire évidement) et copyez y ce qui suit dedans :

<Root>
  <Config sim_UUID="mettre_ici_votre_nouveau_uuid" sim_name="999.1000" sim_location_x="999" sim_location_y="1000" internal_ip_address="0.0.0.0" internal_ip_port="9001" allow_alternate_ports="false" external_host_name="localhost" master_avatar_uuid="00000000-0000-0000-0000-000000000000" master_avatar_first="Toto" master_avatar_last="Tebo" master_avatar_pass="monmotdepass"/>
</Root>

J'ai décidé de mettre "sim_name" à "999.1000" mais vous pouvre faire à votre convenance, TRES IMPORTNANT : changez le "internal_ip_port" en 9001 car chaque sim doit à voir un port d'accès bien à elle !!! pas deux sim avec le même sinon... ça marche pas ! (z'avez eu peur hein ? :-p) . Vous pouvez enregistrer et quitter votre éditeur. Il vous faut ensuite vous connecter à la console d'opensim pour faire entrer tout ça dans la base mysql.Tapez

screen -ls

la console d'opensim correspond à celle dont le PID est le plus fort, connectez vous y avec un

screen -r PID

puis tapez la commande :

create-region 999.1000 region.999.1000.xml

(le "999.1000" correspond au nom de la sim définit dans le fichier region.999.1000.xml). là opensim vas vous afficher pleins de trucs à la console, c'est pas très intéressant. Par contre, si vous avez eu la bonne idée d'être connecté à votre sim avec le client secondlife, vous verrez en live la deuxième sim apparaitre à gauche de la sim ou vous vous trouvez. c'est magique! (oué, c'est plus joli de voir une sim apparaitre en 3D que des ligne de log qui défielent.. enfin je pense.. chaqun sont trip :-p).

Pour vous aider à créer une grille plus consequente, voici une petite matrice de 9 sim histoire d'avoir un enbryon de continent :

999.999   1000.999   1001.999
999.1000  1000.1000  1001.1000
999.1001  1000.1001  1001.1001

Dernière chose, il faut un serveur puissant, sur ma petite dedibox à 1Go de ram, Opensim consomme sans rien faire 20% de cpu avec 4200 prims déjà été buildées. De plus il faut compter 18prims par Mo de ram, sachant qu'une opensim peux contenir jusqu'à 45000 prims,il faut compter un maximum de 2.5Go de ram par sim (sans compter les besoins de l'OS). Donc bien prévoir si vous décidez de mettre plusieurs sim par serveur.

Ce qui est bien , c'est que dans notre exercice d'aujourd'hui, on à un stallé une grille à 1 sim donc on pourra éclater facilement le serveur si la charge venait à augmenter : 1 machine par élément : mysql/opensim/inventaire/messagerie/grille/utilisateur/asset puis clusteriser tout ça dans la joie et la bonne humeur!

Voilà! bon build , si vous trouvez des inexactitudes dans cet article, ben dites le gentiement je corrigerais! Je terminerais par ma citation fétiche : "Si c'est idiot et que ça marche, alors ce n'est pas idiot!"

A la prochaine pour un nouvel article!