An open source 3D virtual world for Linux and OpenGL
WARNING - UNSUPPORTED CODE
OBSIDIAN is now a parked project, and no further work will be done on it.
Feel free to use this code and study the thinking behind it, but
we do NOT advise using it as the basis for any virtual world
projects you may have in mind.
OBSIDIAN is an extensible virtual world system with a fullblown multiplayer client-server architecture. It is NOT a VRML2 world system (there are fundamental computer graphics reasons why VRML worlds will always be slow), though there are plans to include VRML2 as a world data format.
Features
Multiplayer Client-Server architecture
Generic TCP/IP hence works natively across the Internet
Full 3D headsup with texture mapping
Runs acceptably on a 486, screams on a Pentium
Editable worlds and textures
Supports some forms of IMPOSSIBLE ARCHITECTURE (eg. rooms that are
bigger inside than out, corridors that curve back on themselves)
Inter-player communications
Projectile weapons (rudimentary, anybody is
welcome to add more spectacular violence if they can)
We have decided to make the source code available for those who
are interested in compiling it up and having a play with it. Feel free to send
in any improvements, patches, or bugfixes you may make.
Remember that for all Obsidian's sophistication, this is Alpha code. It is not yet an RPM or other standard install, though we are trying to make it as nice at this stage as possible.
You'll need a linux machine with svgalib (see below for other platforms) and the "dialog" utility to get
it up and running, and many linux distributions have these (or else they are quick to obtain). We used RedHat 4.1 (Vanderbilt)
Linux on our development machines.
Click here for REDHAT 5.x PATCH (1k).
This patch, the work of Richard Lyons, will be incorporated into the archive at some point. This patch makes the tree more "generic" and may help people compiling under various Linux distributions.
I tried building Obsidian on my Slackware 3.something box, and found a
clash with the GTK/Gimp glib.h.
It first appeared while compiling glib/graphics.c
The easiest solution was
This is alpha code, it may crash. We take NO responsibility for
it. Just like any other software producer. We have tried to make it run
as nicely as possible, but it is using svgalib calls so if it does lock
you could lose the console.
The "obsidian" script that starts the
client in an easy to use manner requires the "dialog" program to be installed,
which comes with the standard RedHat distribution. If you can't find "dialog", inspect
the contents of the "obsidian" script to see how to run the client from the command line (its easy!).
We have included the source code to the
TYPHOON database engine, by Thomas B. Pedersen, which is required to compile Obsidian.
Absolutely great OpenGL conversion done by Shane Arnott
The raw source to this is now available.
The OpenGL source and SGI binaries have now been separated.
The OpenGL archives are divided into several parts: the Obsidian system using OpenGL,
and also the GLUT tree we
ended up with.
We used GLUT 3.3. GLUT is generic, and you should be able to find
and compile it for your system, otherwise try ours. GLUT needs to be installed once
compiled in /usr/lib (or whatever suits your flavour) so that Obsidian can compile.
The binaries in gmud/test/, along with the database stored under there,
should run IMMEDIATELY on a silicon graphics machine.
The BSP-tree - BSP trees are a very "modern" way of achieving fast rendering speeds on
limited hardware (such as PC's) but at a considerable cost in flexibility. If you
are prepared to put up with the limitations of BSP trees, you can lever some neat
advantages out of them. Quake, Jedi etc all those games use BSP-tree worlds.
STL - The C++ Standard Template Library - I just put this here because people are starting to make noises about
bringing current 3D programming into line with current distributed OOD stuff like
ORBs (Object Request Brokers) and so on