Flux multi-user server
Definition
Flux multi-user server (alis Hydra) is Open Virtual Worlds Web Server made by Media Machines. Currently in alpha/early beta - 17:51, 6 July 2007 (MEST)
Installation
Daniel K. Schneider 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).
Downlods
- Get the Hawk Network Library version 1.7 by Phil Frisbie (LGPL). You can find it in the downloads section.
- Get Hydra, Flux Multi-User
- Get MySQL development libraries
- Also install Flux Player 2.1 if you don't have it already.
Preparation of installation
- MySQL
- Install MySQL and the development libararies !
- 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
- 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
- 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
Run it
Type: hypdras
./hydras
You may see:
port is 13214 url is http://worlds.webers.org/content/testbed/ connected to database
From another terminal, type:
./hydrac
You may see:
read 4 bytes, messlen is 6 read 6 bytes, messlen is 6 hello yourid=0, mytoken=NA
... and messages if people connect
Don't forget that you need Flux 2.1 (I ran this on my Win LapTop).
Links
- Mediamachines
- Help for installation
- Experience installing, compiling and running Flux server and client by DragonMage, really useful !
- Developer Forums