Table of Contents Categories
  • Virtual environments
  •   Encyclosphere.org ENCYCLOREADER
      supported by EncyclosphereKSF

    Flux multi-user server

    From Edutechwiki - Reading time: 5 min

    Draft

    <pageby/>

    Definition[edit | edit source]

    Flux multi-user server (alias Hydra) is Open Virtual Worlds Web Server made by Media Machines. Currently as on July 2007 in late alpha/early beta.

    For the moment, this page is only of interest to technical folks. Hydra is not ready for the masses as on July 2007.

    Installation[edit | edit source]

    Daniel K. Schneider tried on his personal Linux Desktop (Ubuntu 6.10). Disclaimer: I am not a programmer nor a sysadmin. Also, I use root to do command-line installations (can't get myself to type sudo in repetition).

    In progress so to speak ...

    Downloads[edit | edit source]

    1. Get the Hawk Network Library version 1.7 by Phil Frisbie (LGPL). You can find it in the downloads section.
    2. Get Hydra, Flux Multi-User.
    3. Get MySQL development libraries and MySQL is you don't have these (see below).
    4. Also install Flux Player 2.1 if you don't have it already.

    Preparation of installation[edit | edit source]

    MySQL
    • Install MySQL and the development libraries!
    • Use Synaptic Package Manger or apt-get and install these

    I took:

    mysql-server
    libmysqlclient15-dev
    

    If don't want to type command-lines to mysql, you also may want to install a mysql administration client. I tried (but then only used it to change the root password of the mysql server).

    mysqladmin
    

    This tool then will show up under Applications/Systems tools. First time you connect you can use 'root' without password.

    Then, open a terminal and become root:

    su
    
    Hydras (files)

    Currently (July 2007) you have to compile Hydras and HawkNL it yourself.

    • unzip into a folder, e.g. I used
    /usr/local/flux/hydra
    
    Modify some source code
    • I suggest to make a change to scenemodel.c (else you will have to use database, user and password for MySQL... Change line 51 from:
    (&hydra_db, "localhost", "user", "password", "database", 0, NULL, 0) != NULL);
    

    to:

    (&hydra_db, "localhost", "hydrausr", "SECRET", "hydra", 0, NULL, 0) != NULL);
    
    • Edit hydras.c, i.e. replace
    char *url = "http://worlds.webers.org/content/testbed/";
    

    by something of your own

    HawkNL
    • Put it in a folder named "HawkNL" at the same level as the folder containing the Hydra sources. E.g. I used
    /usr/local/flux/HawkNL
    
    unzip HawkNL17b1src.zip [-d "flux directory"]
    cd "flux directory"
    ln -s HawkNL1.70 HawkNL
    
    Result is something like this
    /usr/local/flux
    lrwxrwxrwx 1 root root 10 2007-07-06 15:28 HawkNL -> HawkNL1.70
    drwxr-xr-x 7 root root 4096 2007-07-06 15:27 HawkNL1.70
    drwxr-xr-x 2 root root 4096 2007-07-06 15:40 hydra
    drwxr-xr-x 2 root root 4096 2007-07-06 15:39 src
    

    Compilation[edit | edit source]

    HawNL
    cd HawkNL
    make -f makefile.linux
    make -f makefile.linux install
    

    It will also copy the libraries in /usr/local/lib and header to /usr/local/include/nl.h

    Hydras
    • On Windows, load the hydras.sln or hydrac.sln solution files into MSVC 2003 or later (not tested).
    • On Linux (I used Ubuntu) run make on the Makefile with gcc installed.
    cd hydra
    make
    

    Result:

    gcc -I/usr/include/mysql -DUSE_MYSQL -c scenemodel.c
    gcc -I/usr/include/mysql -DUSE_MYSQL -c netcontroller.c
    gcc -c netview.c
    gcc -c -ggdb swamp.c
    gcc -o hydras -pthread hydras.o clients.o scenemodel.o netcontroller.o netview.o swamp.o ../HawkNL/src/libNL.a -I/usr/include/mysql -L/usr/lib/mysql -lmysqlclient
    gcc -c -ggdb hydrac.c
    gcc -o hydrac -pthread hydrac.o swamp.o ../HawkNL/src/libNL.a
    hydrac.o: In function `printErrorExit':
    /usr/local/flux/hydra/hydrac.c:76: warning: the `gets' function is dangerous and should not be used.
    make: *** No rule to make target `hydrabot', needed by `all'. Stop.
    

    This doesn't seem to be harmful (for the moment) since hydras (the server) is built.

    MySQL database[edit | edit source]

    I presuppose that both MySQL and your Hydra will run on the same machine.

    Create a hydra database and a user (same as in scenemodel.c)

    (I used the command line since I couldn't figure out how to use the GUI.)

    mysql -p
    
    • You have to create a hydra_db databse called hydra
    mysql> create database hydra;
    
    • Then create the user called hydrausr (change secret of course)
    mysql> create user hydrausr identified by 'secret';
    
    • Then give it rights to the hydra database
    mysql > GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON hydra.* TO 'hydrausr'@'localhost';
    
    • Then reload the privileges
    mysql > flush privileges;
    
    Create a User table

    This is needed for avatars, else you get something like:

    Client connected with yourid=1, mytoken=/MM-6-12345678, uid=6
    SELECT login_name,avatar FROM users WHERE uid=6
    wrote 61 bytes to 1
    Segmentation fault (core dumped)
    

    So you go:

    mysql -p
    use hydra
    

    Copy/paste this:

    CREATE TABLE `users` (
    `login_name` varchar(32) default NULL,
    `password_hash` varchar(128) default NULL,
    `uid` int(10) unsigned NOT NULL auto_increment,
    `avatar` varchar(128) default NULL,
    `email` varchar(255) default NULL,
    `iconurl` varchar(255) default '/users/media/defaulticon.jpg',
    terms smallint unsigned default 0, /* signifies which terms user agreed to, should always be > 0 */
    mailings smallint unsigned default 0, /* signifies the level of mailings user agreed to, 0 is only essential */
    PRIMARY KEY (`uid`)
    );
    

    To check it:

    mysqlshow hydra -p
    Enter password: 
    Database: hydra
    +--------+
    | Tables |
    +--------+
    | users  |
    +--------+
    
    mysqlshow hydra users -p
    .....
    
    

    Run it to test if it may work[edit | edit source]

    Type: hypdras

    ./hydras
    

    You may see:

    port is 13214
    url is http://tecfa.unige.ch/guides/x3d/ex/hydra/testbed.html
    connected to database
    Listening on 13214
    

    Note: if you didn't edit the *.c files as told above, you will get

    url is http://worlds.webers.org/content/testbed/
    

    From another terminal you also may launch a text client.

    ./hydrac -d
    

    You may see:

    read 4 bytes, messlen is 6
    read 6 bytes, messlen is 6
    hello yourid=0, mytoken=NA
    

    ... though I can't figure out how one could use this to test other things.

    Run it with your own stuff[edit | edit source]

    To test, get the Flux Multi-user test files from media machines and dezip on some webserver.

    Then edit files localplane.x3d and testbed.x3d etc. and change from:

    url="'swmp://localhost:13214/MM-6-12345678'"/>
    

    to the URL of your Hydra server (not the webserver !)

    The try with a Flux Player. E.g. enter a URL like

    http://tecfa.unige.ch/guides/x3d/ex/hydra/localplane.html
    http://tecfa.unige.ch/guides/x3d/ex/hydra/testbed.html
    

    Note: The hydra URL runs on my desktop and will be mostly down ... So don't bet on the files / server I installed.

    If you correctly created the MySQL users table you'll see something like:

    ./hydras -d
    port is 13214
    url is http://tecfa.unige.ch/guides/x3d/ex/hydra/testbed.html
    connected to database
    Listening on 13214
    Client connected from 129.194.112.101:1032 on socket 1
    read 18 bytes from 1
    wrote 6 bytes to 1
    Client connected with yourid=1, mytoken=/MM-6-12345678, uid=6
    SELECT login_name,avatar FROM users WHERE uid=6
    wrote 61 bytes to 1
    read 35 bytes from 1
    read 35 bytes from 1
    read 35 bytes from 1
    .....
    

    Conclusion[edit | edit source]

    I think I got it working somewhat. But the test scene has missing files and is sluggish (even on a good Dell XPS II laptop). I seem to wake up in the middle of an avatar etc. At some point I think I have seen 2 avatars, but it may have been a fatamorgana.

    Maybe something to do with client stuff like avatars being identical from 2 different machines or so .... will look at it again at some point. Maybe something not correctly installed.

    See also[edit | edit source]

    Links[edit | edit source]

    Mediamachines
    Help for installation
    This article is licensed under CC BY-SA 3.0.
    Original source: https://edutechwiki.unige.ch/en/Flux multi-user server
    Status: article is cached
    Encyclosphere.org EncycloReader is supported by the EncyclosphereKSF