Flux multi-user server: Difference between revisions

The educational technology and digital learning wiki
Jump to navigation Jump to search
(live linkt o Flux Player download - existing is dead)
 
(15 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{Stub}}
{{Stub}}
<pageby/>
== Definition ==


== Definition ==
Flux multi-user server (alias Hydra) is ''Open Virtual Worlds Web Server'' made by [http://www.mediamachines.com Media Machines]. Currently as on July 2007 in late alpha/early beta.


Flux multi-user server (alis Hydra) is ''Open Virtual Worlds Web Server'' made by [http://www.mediamachines.com/ Media Machines]. Currently in alpha/early beta - 15:54, 6 July 2007 (MEST)
For the moment, this page is only of interest to ''technical'' folks. Hydra is not ready for the masses as on July 2007.


== Installation ==
== Installation ==


=== Downlods ===
[[User:Daniel K. Schneider|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 ===


# Get the [http://www.hawksoft.com/hawknl/ Hawk Network Library version 1.7 by Phil Frisbie] (LGPL). You can find it in the downloads section.
# Get the [http://www.hawksoft.com/hawknl/ Hawk Network Library version 1.7 by Phil Frisbie] (LGPL). You can find it in the downloads section.
# Get [http://www.mediamachines.com/hydra/ Hydra], Flux Multi-User
# Get [http://www.mediamachines.com/hydra/ Hydra], Flux Multi-User.
# Also install [http://www.mediamachines.com/make.php Flux Player 2.1] if you don't have it already.
# Get MySQL development libraries and MySQL is you don't have these (see below).
# Also install [http://mediamachines.wordpress.com/flux-player-and-flux-studio/ Flux Player 2.1] if you don't have it already.


=== Preparation of installation ===
=== Preparation of installation ===


Currently (July 2007) you have to compile it yourself.  
; 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)
; Hydras (files)
Currently (July 2007) you have to compile Hydras and HawkNL it yourself.


* unzip into a folder, e.g. I used
* unzip into a folder, e.g. I used
  /usr/local/flux/hydra
  /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
; HawkNL
Line 27: Line 60:
  /usr/local/flux/HawkNL
  /usr/local/flux/HawkNL


  unzip HawkNL17b1src.zip [-d "flux directory"]
unzip HawkNL17b1src.zip [-d "flux directory"]
  cd "flux directory"
cd "flux directory"
  ln -s HawkNL1.70 HawkNL
ln -s HawkNL1.70 HawkNL


; Result is something like this
; Result is something like this


  /usr/local/flux
  /usr/local/flux
  lrwxrwxrwx 1 root root   10 2007-07-06 15:28 HawkNL -> HawkNL1.70
  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 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:40 hydra
  drwxr-xr-x 2 root root 4096 2007-07-06 15:39 src
  drwxr-xr-x 2 root root 4096 2007-07-06 15:39 src


=== Compilation ===
=== Compilation ===
Line 43: Line 76:
; HawNL
; HawNL


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


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


; Hydras
; Hydras


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


  cd hydra
  cd hydra
  make
  make


Then read forums and stuff on the web ... will try later to finish this install - [[User:Daniel K. Schneider|Daniel K. Schneider]] 15:54, 6 July 2007 (MEST)
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 ===
 
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 <code>hydra</code>
 
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 ===
 
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 ===
 
To test, get the [http://www.mediamachines.com/source/fluxmutests.zip Flux Multi-user test files] from [http://www.mediamachines.com/hydra/ 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 ===
 
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 ==
 
* [[Flux single-user client]]


== Links ==
== Links ==


; Mediamachines
; Mediamachines
* http://www.mediamachines.com/
* http://www.mediamachines.com
* [http://www.mediamachines.com/hydra/ Flux Multi-User] ('''essential''' reading)


; Help for installation
; Help for installation


* [http://planet-earth.org/smam/fluxServerInstallRun.html Experience installing, compiling and running Flux server and client]
* [http://planet-earth.org/smam/fluxServerInstallRun.html Experience installing, compiling and running Flux server and client] by DragonMage, really useful !
* [http://community.mediamachines.com/categories.php Developer Forums]
* [http://community.mediamachines.com/categories.php Developer Forums]


[[Category: Technologies]]
[[Category: Virtual environments]]
[[Category: Virtual environments]]

Latest revision as of 17:22, 22 July 2011

Draft

<pageby/>

Definition

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

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

  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

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

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

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

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

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

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

Links

Mediamachines
Help for installation