
                                    bzflag 1.7d

                        Copyright 1993-1999 Chris Schoeneman

Author
======

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


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

This is the readme file for the bzflag source tree.  It includes
a manifest, simple build instructions, and other information for
bzflag development.


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 bzflag directory:

  README	- this file
  README.*	- platform specific details
  BUGS		- a list of known bugs
  LICENSE	- the bzflag license
  PORTING	- a guide for porting bzflag
  RELNOTES	- release notes for this and prior versions
  TODO		- (incomplete) list of things to do
  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 (game client)
    bzfls/	  - bzfls app source code (list of servers server)
    bzfrelay/	  - bzfrelay source code (firewall relay for servers)
    bzfs/	  - bzfs app source code (game server)
    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

The first make configures the build for the named platform.
The second make actually does the build.  Doing make without
configuring for a platform lists the available platforms.
You can also append `-debug' to a platform name to configure
a debug build.

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

  Platform			README file
  --------			-----------
  UNIX, Linux			README.UNIX
  Solaris			README.SOLARIS
  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 that you
may find interesting.


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

There are two bzflag mailing lists, a user list and a
developer's list.  The former is for general bzflag
discussion and annoucements.  The latter is for coding and
development discussion only.

To join the user list, send mail to

  bzflag-list-request@groundhog.pair.com

with `subscribe' in the *subject*.  The body of the message can
be empty;  it will be ignored.

Joining the developer's list is the same, except send the mail
to:

  bzflag-dev-list-request@groundhog.pair.com


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

Send mail to bzflag@bigfoot.com to discuss contributions to
the official bzflag source code.  Small changes can be
included in the mail itself.


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

Send bug reports to bzflag@bigfoot.com.  Please include which
version of bzflag you're using (including patch numbers) and
what platform you're running on.


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

See BUGS.


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

Bzflag was written mainly by Chris Schoeneman.  Several others
deserve mention for their contributions:

  Bjorn Augustsson
  Tamar Cohen
  Phillip Ezolt
  David Hoeferlin
  Tom Hubina
  Dan Kartch
  Jed Lengyel
  Jeff Myers
  Tim Olson
  Brian Smits
  Greg Spencer
  Andrew White
  Nafees Bin Zafar

Special thanks go to:

  Kevin Novins
  Rick Pasetto
  Adam Rosen
  Erin Shaw
  Ben Trumbore
  Don Greenberg


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.


