Here is the version 0.1 of OcamlQuake, a Quake's level renderer written
in Objective Caml. It requiers a 3dfx video card and run under Linux
using X11. This code is provided as it is, whitout any guaranty. You
can re-use it, modifiy it, copy it, doing whatever you want.

This version is still under development, there may be bugs and
inefficient stuff, and I will not be responsible of what can happen to
you and your environment if you use, read or do whatever you want with
all this...


* Requierements
***************

 - a 3dfx video card

 - Linux (with glide for the 3dfx card) under X11
   If you don't, check
       http://glide.xxedgexx.com/3DfxRPMS.html
   or
       http://www.linuxgames.com/3dfx_info.shtml

 - the ml-glide interface I began and that Alexandre Miquel
   (alexandre.Miquel@inria.fr) extended. I guess it can be said that
   he is now the main maintainer of this library.
   Until further developments, it can be found on my homepage, near of
   this distribution

 - Some bsp file of Quake. This files contains the description of the
   level. You can get freely those of the shareware version, or find
   some on the net. I don't provide any because they can be
   copyritght, and in any case they are really *big* ;-)

* Install
**********

 - First, decompress (tar xvzf) the ml-glide library. This will create
   a directory called "glide" Go in this directory and  type : make lib.
 - Then decompress (tar xvzf) the archive of OcamlQuake. It will
   create a directory "ocamlq-glide". Make sure that the directory for
   ml-glide is accessible in the parent directory (I mean that you
   must get the following directories architecture :
    +---...---+
              |
              + glide
              |
              + ocamlq-glide
  Then type "make" (or "make opt" to build the native code version
  that is really faster than the bytecode one ;-)

* Run
*****
  ./oq (./oq.opt for the native code version) followed by the file
     name of the file containing the level. An optional -m <integer>
     option is provided to specify the model you want to render in the
     bsp file (indeed bsp file contains several model, and the number
     0, that I choose by default contains the description of the world.
     So this option is for expert only ;-)

IMPORTANT: The bsp file you will try to render must have its textures
  otherwise no verification is made and the program will abort. In general
  if you use already existing bsp file you won't have any problem. It's just
  in the cas where you create yourself a bsp file and want to try it...
  (But I think that this remark is also for expert only ;-)


* Controls
**********

  - Mouse to aim and turn
  - 'c' to toggle clipping mode (needed to go through walls because of
    the collision detection). Don't be disapointed if this key sometimes
    seems not to respond. Retry. It's because of a bufferisation
    problem that cause several keypresses to be taken in account,
    hence toggling several times :-) So if you are not lucky the
    number of toggles is even and then it's identity :-))
  - 'Escape' to quit
(The following bindings correspond to the keypad above the arrows)
  - 'Home' to walk forward
  - 'End' to walk backward
  - 'Delete' to strafe left
  - 'Page down' to strafe right
(If needed)
  - '-' to go down
  - '+' to go up


* Note
******

A small program is also distributed : glreset. Its purpose si to
re-initialize the video card in case where the program would crash.
As you may know, if you exit a program using the 3dfx card without
closing the "glide-session", your programs end for sure, but your
screen is not restaured. So you can work, but you are blind.
So bad !!! So in this case, just run 'glreset' in an xterm and all
should be right. To build 'glreset', just type 'make glreset'. That's
all...


* Comments
**********
You can join me by email at Francois.Pessaux@inria.fr


Enjoy...
