
                                    bzflag 1.7c

                        Copyright 1993-1999 Chris Schoeneman

Author
======

Chris Schoeneman
475 Hawthorne Av
Palo Alto, CA 94301
crs23@bigfoot.com


Introduction
============

FIXME


bzflag Home Page
================

The bzflag home page is at:  http://www.bigfoot.com/~bzflag


Getting bzflag
==============

The home page provides access to the primary bzflag download
site.  This web site includes pages for downloading the compiled
and source code versions.  Compiled versions are distributed
as installable packages.  Source code is archived in various
formats.  After unpacking you should have the following files
in the new bzflag1.7c directory:

  README	- this file
  README.*	- platform specific details
  LICENSE	- the bzflag license
  PORTING	- a guide for porting bzflag
  Make-common	- definitions and rules for all make files
  Make-sys	- Makefile that does the real work at the top level
  Makefile	- top level Makefile
  configs/	- platform configuration files
  data/		- data files (sounds, images, etc.)
  include/	- include files for libraries
  man/		- man pages
  misc/		- miscellany
  package/	- stuff to build installable packages
  src/		- bzflag, bzfs, etc. source code
    bzflag/	  - bzflag app source code
    bzfrelay/	  - bzfrelay source code
    bzfs/	  - bzfs app source code
    common/	  - general purpose classes
    geometry/	  - geometry rendering classes
    net/	  - networking classes and functions
    obstacle/	  - collision detection stuff
    ogl/	  - OpenGL utility classes
    platform/	  - platform dependent code
    scene/	  - high level rendering algorithms
  win32/	- extra stuff for building on win32 platforms


Compiling and Installation
==========================

Building bzflag for a supported platform normally requires two
steps:

  % make <platform>
  % make

Some platforms may be different.  See the README file
appropriate to your system for more information:

  Platform			README file
  --------			-----------
  UNIX, Linux			README.UNIX
  Windows 95/98/NT		README.WIN32


After a successful build, run bzflag using:

  % ./bin/bzflag

The first make configures the build for a particular platform.
The second builds bzflag, bzfs, etc.  If you enter `make'
without having configured a platform, you'll get a list of
available platforms.

bzflag is built into ./bin;  ./bin/bzflag runs bzflag and
it will automatically look in ./data for the data files.

** IMPORTANT **
Bzflag will look for the data files in . and ./data.  If
you run bzflag from the bin directory, it will fail to
find the files and die with `cannot continue without
font fixedbr'.  Either run bzflag as indicated above
or use the `-directory <data-directory>' command line
option to explicitly name the data directory.

You can also build an installable package using:

  % make package

The package will be placed in ./dist;  the exact form of the
package depends on the platform.

There are three cleanup targets:  clean, clobber, and
pristine.  `make clean' removes intermediate files but
leaves bzflag and other programs and any man pages.  `make
clobber' removes everything clean does and also programs
and man pages.  `make pristine' removes everything clobber
does and also packages, directories created during the build,
and the platform configuration;  this should get the source
tree back to its original state.

To build bzflag for an unsupported platform, see PORTING.

The ./config file has a number of build options.  Of particular
interest are the *OPTIMIZER macros, which let you switch
between optimized and debug builds.


Mailing Lists
=============

FIXME -- user and developer mailing lists


Contributions
=============

FIXME


Bug Reports
===========

FIXME


Known Bugs
==========

See BUGS.


Future Plans
============

See FUTURE.


Contributors
============

FIXME


FIMXE -- move stuff below elsewhere
Source Tree Organization
========================

Note that include/ does not have all the include files.  If
a header is used entirely within a library (i.e. it doesn't
directly provide functionality outside the library) then
the header is found in the library's directory under src/.
An include file goes in include/ only if it's required by
another library or libraries or executables.  While this
complicates locating a header file (it can be in one of
two places instead of just one place), you can instantly
tell if a header file is (can be) used by clients of the
library.


