Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
BZW(5)				    BZFlag				BZW(5)

NAME
       bzw - BZFlag world file format

DESCRIPTION
       The BZFlag world	file format describes a	world environment that is used
       by the BZFlag game server, bzfs.	 X BZW file format

       The  BZFlag  world  file	format describes and environment that includes
       the game	map, physical world attributes,	and automatic  world  weapons.
       The  map	may contain a variety of "obstacles" like buildings, pyramids,
       and meshes.  These obstacles make up the	world that  the	 BZFlag	 tanks
       will  drive  around  in.	 Map attributes	may be set to create worlds of
       various sizes, the default size is 800x800.

       Here is small example world:

       # simple	world containing a box,	pyramid, and mesh
       world
	 name Simple World
	 size 100.0
       end
       box
	 position -20 -20 0
	 size 10 20 10
       end
       pyramid
	 position 20 20	0
	 size 10 10 20
       end
       mesh
	 vertex	-10 0 0
	 vertex	10 0 0
	 vertex	0 10 0
	 face
	   vertices 0 1	2
	 endface
       end

       The .bzw	file is	a plain	text file with a relatively simple  file  for-
       mat.   The  format  of this text	file consists of any number of objects
       listed in any order (except that	physics, textureMatrix,	 dynamicColor,
       and  material  must  come before	they are referenced) separated by new-
       lines and grouped into blocks of	types. The list	of  world  types  con-
       sists of:
       world
       options
       waterLevel
       dynamicColor
       textureMatrix
       transform
       material
       physics
       define
       group
       mesh
       meshbox
       meshpyr
       arc
       cone
       sphere
       tetra
       box
       pyramid
       link
       teleporter
       base
       weapon
       zone

       Each  object is described by placing the	type on	one line, the word end
       on a following line, and	a list of attributes for that object, one  per
       line, in	between. The exceptions	to the rule are	define and face, which
       are concluded with enddef and endface.  Attributes may be listed	in any
       order.  Attributes have default values, and if that is good enough, the
       attribute need not be listed.

       Words are always	specified in lowercase.	Line comments can be specified
       by placing a # sign at the start	of the line.

       For documentation purposes, you can tag each object by  adding  a  name
       attribute. There	is no set limit	to the number of times you may use any
       of  the	objects	except for the world, options, and waterLevel objects,
       they can	only be	specified once.	The options  object  contains  command
       line  arguments	that are used to configure the server's	game mode, but
       can not contain server specific options such as -p, -passwd, and	-conf.

       In the following	examples, the values are the defaults.

       The World object
       Header for the world.

       world
	 name example_world
	 size 400.0
	 flagHeight 10.0
       end

       The Options object
       A world file interface for setting command line options for BZFS.

       options
	 -set _tankSpeed 36
	 -j +r -ms 3
	 +f GM{5} +f SW{5}
       end

       The Water Level object
       Sets how	high the water is, in a	matter of units.

       waterLevel
	 name example_waterlevel
	 height	-1.0 # anything	below 0	turns it off
       end

       The Group Definition object
       Defines a group,	which may include other	group instances
       This does not place any objects into the	world, a group	instance  must
       be used to generate world objects from a	group definition.

       define <example_groupdef>
	 # You can add any object to a group definition,
	 # except for the following types:
	 #   textureMatrix
	 #   dynamicColor
	 #   material
	 #   physics
	 #   links
	 #   weapon
	 #   zone
       enddef

       The Group Instantiation object
       Instantiates a group, and possibly modifies subobjects

       group <example_groupdef>	 # a valid group definition reference
	 shift 0 0 0	      #	(repeatable)
	 scale 1 1 1	      #	(repeatable)
	 shear 0 0 0	      #	(repeatable)
	 spin angle nx ny nz  #	(repeatable)
			      #	angle degrees about vector n
	 team 0	       # change	all base colors	within group
	 tint 1	1 1 1  # hierarchically	tints objects within this group
	 drivethrough  # make all subobjects drivethrough
	 shootthrough  # make all subobjects shootthrough
	 ricochet      # make all subobjects ricochet
	 phydrv	example_phydrv	   # reassign any valid	physics	drivers
	 matref	example_material # set material	properties

				   # (except for the color)
	matswap	oldMat newMat #replace a given material	in the instance
       end

       The Dynamic Color object

       dynamicColor
	 name example_dyncol
	 # there are 4 channels	that can be modified:
	 #   red, green, blue, alpha
	 # there are 5 types of	commands per channel:
	 #   limits, sinusoid, clampUp,	clampDown, sequence
	 # except for "limits" and "sequence", the commands are	repeatable
	 # if a	sequence is used, then clampUps	and clampDowns have no effect
	 # sequences can use three states (0, 1, 2).
	 #   0 - equivalent to an active clampDown
	 #   1 - equivalent to no clamps
	 #   2 - equivalent to an active clampUp
	 # if both clampUp and clampDown are active, the value is (min+max)/2
	 # the sinusoid	function starts	at the max value
	 # the sum of a	channel's sinusoids is clamped between 0 and 1
	 red limits 0 1		      #	min/max	limits
	 green sinusoid	0.1 0 0.25    #	period,	offset,	weight
	 blue clampUp 0.1 0 0.75      #	period,	offset,	width
	 alpha clampDown 0.2 0.5 0.5  #	period,	offset,	width
	 red sequence 0.0 0.0 2	0 1 1 2	0 ... #	period,	offset,	list of	states
       end

       The Texture Matrix object

       textureMatrix
	 name example_texmat
	 scale 0.0 0.0 1.0 1.0	# u/v freqs, u/v scales
	 spin 0.0		# rotation freq
	 shift 0.0 0.0		# u/v freqs
	 center	0.5 0.5		# dynamic u/v center (for spin and scale)
	 fixedscale 0.0	0.0	# time invariant u/v scale
	 fixedspin 0.0		# time invariant rotation
	 fixedshift 0.0	0.0	# time invariant u/v shift
       end

       Material	Properties

       Material	 properties  may be set	on several types of objects, including
       meshes, mesh faces, arcs, cones,	spheres,  and  tetras.	Here  are  the
       properties:

       material
	 name example_material
	 resetmat		   # restore default values
	 matref	material_name	   # copy another material's properties
	 ambient  0.2 0.2 0.2 1.0  # ambient color
	 diffuse  1.0 1.0 1.0 1.0  # diffuse color (main color)
	 color	  1.0 1.0 1.0 1.0  # synonym for 'diffuse'
	 specular 0.0 0.0 0.0 1.0  # specular color
	 emission 0.0 0.0 0.0 1.0  # emission color
	 shininess 0.0		   # shininess (0.0 - 128.0)
	 texture filename     #	set working texture
	 # - non-interlaced PNG
	 # - http:// or	ftp:// hyperlinks can be used  (no spaces)
	 # - BZFlag default texture names can be used  (.png not required)
	 addtexture filename  #	add texture
	 notextures	      #	specify	that no	textures are to	be used
	 notexalpha	      #	don't use the texture's	alpha channel
	 notexcolor	      #	the color is not applied to the	texture
	 # if a	texture	is specified, but not found, the default texture
	 # will	be used. if the	default	texture	is also	not available, then
	 # the color will be used (untextured)
	 spheremap	      #	use spherical texture coordinate mapping
	 texmat	-1	      #	texture	matrix	(-1 for	none)
	 dyncol	-1	      #	dynamic	color  (-1 for none)
	 noradar	      #	do not display on radar	 (except normal	mode)
	 noshadow	      #	do not render shadows
	 noculling	      #	do not cull by face winding  (double-sided)
	 nosorting	      #	do not do front-to-back	alpha sorting
	 nolighting	      #	disable	lighting
	 alphathresh 0.0      #	alpha thresholding value
	 groupalpha	      #	sort translucent faces as a group
	 occluder	      #	faces with this	material will occlude
       end

       The Physics Driver object

       physics
	 name example_phydrv
	 linear	 0.0 0.0 0.0  #	x/y/z linear velocities
	 angular 0.0 0.0 0.0  #	rotation freq, x/y coordinates
	 slide 0.0	      #	time until max velocity	 (> 0.0	enables)
	 death Message goes here.
	 # the 'death' property	requires a non-blank message
       end

       The Mesh	object

       mesh
	 name example_mesh
	 # Material properties applied to a mesh apply to all faces
	 # that	follow the setting. Mesh faces will alter their	own
	 # properties without affecting	the state of the mesh properties.
	 # The same pattern is used to apply physics drivers.
	 vertex	100 200	300  # add a vertex		 (repeatable)
	 normal	1.0 0 0	     # add a normal		 (repeatable)
	 texcoord 0.1 0.75   # add a texture coordinate	 (repeatable)
	 inside	5.5 4.5	1.2  # add an inside point	 (repeatable)
	 outside 0 0 1000    # add an outside point	 (repeatable)
	 shift 0 0 0	       # (repeatable)
	 scale 1 1 1	       # (repeatable)
	 shear 0 0 0	       # (repeatable)
	 spin angle nx ny nz   # (repeatable)
	 phydrv	example_phydrv # assign	a physics driver
	 smoothbounce	       # ricochets use normals
	 noclusters	       # render	each mesh face individually
	 face  # start a face	(repeatable)
	   # the front-face winding is counter-clockwise
	   vertices 1 4	0 3 5	# list of vertices (requires at	least three)
	   normals 2 6 0 4 7	# list of normals	       (optional)
	   texcoords 0 3 2 4 9	# list of texture coordinates  (optional)
	   phydrv example_phydrv  # assign a physics driver
	 endface  # end	the face
	 #
	 #  This next element can be added to increase the rendering speed
	 #  of the mesh	object.	If the client is capable of using this data,
	 #  then it is used to draw the	mesh instead of	the face information.
	 #
	 drawInfo
	   dlist		      #	display	list for all material sets
	   decorative		      #	older clients with not see this	mesh
	   angvel <degrees/sec>	      #	rotation about initial Z axis
	   extents <minX> <minY> <minZ>	<maxX> <maxY> <maxZ>
	   sphere <x> <y> <z> <radiusSquared>
	   corner <v> <n> <t>	      (repeatable)
	   vertex 0.0 0.0 0.0	      (repeatable)
	   normal 0.0 0.0 0.0	      (repeatable)
	   texcoord 0.0	0.0	      (repeatable)
	   lod			      (repeatable)
	     lengthPerPixel <value>
	     matref <name>	      (repeatable)
	       dlist		      #	display	list for this material set
	       sphere <x> <y> <z> <radiusSquared>
	       points	 0	      (repeatable)
	       lines	 0 1	      (repeatable)
	       lineloop	 0 1	      (repeatable)
	       linestrip 0 1	      (repeatable)
	       tris	 0 1 2	      (repeatable)
	       tristrip	 0 1 2	      (repeatable)
	       trifan	 0 1 2	      (repeatable)
	       quads	 0 1 2 3      (repeatable)
	       quadstrip 0 1 2 3      (repeatable)
	       polygon	 0 1 2	      (repeatable)
	     end  # matref
	   end	  # lod
	 end	  # drawInfo
       end	  # mesh

       The Arc object

       arc
	 name example_arc
	 divisions 16	# number of subdivisions
	 flatshading	# flat shading	(smooth	is default)
	 angle 360	# the sweep angle
	 ratio 1	# (outrad - inrad) / outrad
	 position 0.0 0.0 0.0
	 size 10 10 10
	 rotation 0.0
	 shift 0 0 0		# (repeatable)
	 scale 1 1 1		# (repeatable)
	 shear 0 0 0		# (repeatable)
	 spin angle nx ny nz	# (repeatable)
	 phydrv	example_phydrv	# assign a physics driver
	 smoothbounce		# ricochets use	normals
       end

       The Cone	object

       cone
	 name example_cone
	 divisions 16	# number of subdivisions
	 flatshading	# flat shading	(smooth	is default)
	 angle 360	# the sweep angle
	 position 0.0 0.0 0.0
	 size 10 10 10
	 rotation 0.0
	 shift 0 0 0		# (repeatable)
	 scale 1 1 1		# (repeatable)
	 shear 0 0 0		# (repeatable)
	 spin angle nx ny nz	# (repeatable)
	 phydrv	example_phydrv	# assign a physics driver
	 smoothbounce		# ricochets use	normals
       end

       The Sphere object

       sphere
	 name example_sphere
	 divisions 4	# number of subdivisions
	 flatshading	# flat shading	(smooth	is default)
	 position 0.0 0.0 10.0
	 size 10 10 10
	 radius	10	#  sets	all size values	to this	value
	 rotation 0.0
	 shift 0 0 0		# (repeatable)
	 scale 1 1 1		# (repeatable)
	 shear 0 0 0		# (repeatable)
	 spin angle nx ny nz	# (repeatable)
	 phydrv	example_phydrv	# assign a physics driver
	 smoothbounce		# ricochets use	normals
       end

       The Tetrahedron object

       tetra
	 name example_tetra
       # there must always be 4	vertices
	 vertex	-10.0 -5.0 0.0
	 vertex	+10.0 -5.0 0.0
	 vertex	0.0 10.0 0.0
	 vertex	0.0 5.0	10.0
	 shift 0 0 0		# (repeatable)
	 scale 1 1 1		# (repeatable)
	 shear 0 0 0		# (repeatable)
	 spin angle nx ny nz	# (repeatable)
       end

       The Box object
       Adds a simple block.

       box
	 name example_box
	 position 0.0 0.0 0.0
	 size 30.0 30.0	9.42
	 rotation 0.0
       end

       The Pyramid object
       Adds a triangular shaped	object.

       pyramid
	 name example_pyramid
	 position 0.0 0.0 0.0
	 size 8.2 8.2 10.25
	 rotation 0.0
       end

       The Teleporter object
       Adds  an	object that places a tank at another teleporter	in a different
       area when ran through.

       teleporter [name]
       # the [name] tag	is used	for linkage
	 name example_teleporter
	 position 0.0 0.0 0.0
	 size 5.06 4.48	20.16
	 rotation 0.0
	 border	1.12
       end

       The Link	object
       Adds a route to teleport	a tank between two teleporters.

       # Teleporter names are terminated with either :f	(forward)
       # or :b (backwards). The	forwards link points to	0 degrees,
       # and the backwards link	points to 180. Links are made by
       # pattern matching the teleporter names.	The '*'	and '?'
       # globbing characters can be used to make multiple matches.
       # If there are multiple matches for the "to" link, then the
       # destination will be selected randomly between the matches.
       # in-game.

       # NOTE: bzfs -d -d -d -d	will print the linkage table.

       link
	 name example_link
       # this will link	all teleporters	randomly to all	other teleporters
	 from *
	 to   *
       end

       # or, to	link  between known  teleporters  examp_tele1(front)  and  ex-
       amp_tele2(back)

       link
	 name  example_realLink
	 from examp_tele1:f
	 to examp_tele2:b
       end

       The Base	object
       Creates a team base where the corresponding team's flag is stored.  The
       oncap  option  will  fire a world weapon	of the specified type when the
       team flag for this base is captured.

       base
	 name example_base
	 position 0.0 0.0 0.0
	 size 60.0 60.0	0.0
	 rotation 0.0
	 color 0
	 oncap V
       end

       The Weapon object
       Creates a world weapon, or a weapon fired automatically by  the	world.
       The  weapon  can	 either	 be  timed  or be event	driven.	 Timed weapons
       should use the initdelay	and delay fields.  Event driven	 weapons  need
       to  use	the trigger option to define what the trigger event is.	 Valid
       trigger events are; OnCap,  for	flag  capture  events.	 OnSpawn,  for
       player spawn events.  OnDie, for	player death events.  If the weapon is
       to  be  triggered  only	for  a specific	team then the eventteam	option
       should be used with a team number (1 to 4).  An eventteam value	of  -1
       will  trigger  this  weapon  for	 any team. -1 is the default eventteam
       value.

       weapon
	 name example_weapon
	 position 0.0 0.0 0.0
	 rotation 0.0
	 tilt 0.0
	 initdelay 10.0
	 delay 10.0 3.0	5.0 3.0
	 type V
	 trigger flagcap
	 eventteam V
       end

       The Zone	object
       Specifies a certain range in the	world, and what	attributes that	 range
       has.

       zone
	 name example_zone
	 position 0.0 0.0 0.0
	 size 1.0 1.0 1.0
	 rotation 0.0
       # where players may spawn
	 team 0	1 2 3 4
       # where flag may	spawn
	 flag GM SW good bad
       # dropped team flags will fly to	the closest safety zone
	 safety	1 2 3 4
       # attach	a flag to this zone (always spawn in this zone)
	 zoneflag GM 3	# type,	count (type can	be a team flag,	ex: R*)
       end

FILE SYNTAX
       The symbol '?' means that the item is optional.

       The  notation  {a..b}  means  that  the number of times the item	can be
       present must be between 'a' and 'b', where '*' mean infinity.  ('?'  is
       equivalent to {0..1})

       angle :=	<float>

       2dpoint := <float> <float>

       3dpoint := <float> <float> <float>

       rgbColor	:= <float> <float> <float>

       alpha :=	<float>

       rgbaColor := rgbColor alpha? | <color_name> alpha?

       channel := "red"	| "green" | "blue" | "alpha"

       (BZWReader.cxx/parseNormalObject)

       allObjects :=
		     "box"
		   | "pyramid"
		   | "base"
		   | "link"
		   | "teleporter"
		   | "mesh"
		   | "arc"
		   | "meshbox"
		   | "cone"
		   | "meshpyr"
		   | "sphere"
		   | "tetra"
		   | "weapon"
		   | "zone"
		   | "waterLevel"
		   | "dynamicColor"
		   | "textureMatrix"
		   | "material"
		   | "physics"
		   | "transform"

       (BZWReader.cxx/BZWReader::readWorldStream)
	      Note: Blank lines	and lines starting with	# are discarded.

       worldStream :=
		     "end"
		   | allObjects
		   | "define" <group_name>
		   | "enddef"
		   | "group" <group_name>
		   | "teleporter" <name>?
		   | "options"
		   | "include" <filename>
		   | "world"

       (ParseMaterial.cxx/parseMaterials)

       material	:=
		   object
		   | "matref" <material_name>
		   | "resetmat"
		   | "dyncol" <dynamic_color_name>
		   | "ambient" rgbaColor
		   | ("diffuse"	| "color") rgbaColor
		   | "specular"	rgbaColor
		   | "emission"	rgbaColor
		   | "shininess" <float>
		   | "texture <texture_name>
		   | "notextures"
		   | "addtexture" <texture_name>
		   | "texmat" <matrix_name>
		   | "notexalpha"
		   | "notexcolor"
		   | "spheremap"
		   | "noradar"
		   | "noshadow"
		   | "noculling"
		   | "nosorting"
		   | "nolighting"
		   | "alphathresh" <value>
		   | "groupalpha"
		   | "occluder"
		   | "shader" <shader_name>  # NOT IMPLEMENTED
		   | "addshader" <shader_name>	# NOT IMPLEMENTED
		   | "noshaders"  # NOT	IMPLEMENTED

       (WorldFileObject:.cxx/WorldFileObject::read)

       object := "name"	<name>

       (WorldFileLocation.cxx/readWorldFileLocation::read)

       location	:=
		     ("pos" | "position") 3dpoint
		   | "size" 3dpoint
		   | ("rot" | "rotation") <float>
		   | "shift" 3dpoint
		   | "scale" 3dpoint
		   | "shear" 3dpoint
		   | "spin" angle 3dpoint
		   | "xform" <transform_name>
		   | object

       (WorldFileObstacle.cxx/WorldFileObstacle::read)

       obstacle	:=
		     "drivethrough"
		   | "shootthrough"
		   | "passable"
		   | "ricochet"
		   | location

       (CustomArc.cxx/CustomArc::read)

       meshbox :=
		     "divisions" <integer>
		   | "angle" angle
		   | "ratio" <float>
		   | "texsize" <float> <float> <float> <float>
		   | "phydrv" <physics_driver_name>
		   | "smoothbounce"
		   | "flatshading"
		   | material
		   |  ("top" | "bottom"	| "inside" | "outside" | "startside" |
	      "endside") material
		   | obstacle

       arc :=
		     "divisions" <integer>
		   | "angle" angle
		   | "ratio" <float>
		   | "texsize" <float> <float> <float> <float>
		   | "phydrv" <physics_driver_name>
		   | "smoothbounce"
		   | "flatshading"
		   | material
		   | ("top" | "bottom" | "inside" | "outside" |	"startside"  |
	      "endside") material
		   | obstacle

       (CustomBase.cxx/CustomBase::read)

       base :=
		     "color" <integer>
		   | obstacle

       (CustomBox.cxx)

       box := obstacle

       (CustomCone.cxx/CustomCone::read)

       meshpyr :=
		     "divisions" <integer>
		   | "angle" <float>
		   | "texsize" <float> <float>
		   | "phydrv" <physics_driver_name>
		   | "smoothbounce"
		   | "flatshading"
		   | material
		   | ("edge" | "bottom"	| "startside" |	"endside") material
		   | "flipz"
		   | obstacle

       cone :=
		     "divisions" <integer>
		   | "angle" <float>
		   | "texsize" <float> <float>
		   | "phydrv" <physics_driver_name>
		   | "smoothbounce"
		   | "flatshading"
		   | material
		   | ("edge" | "bottom"	| "startside" |	"endside") material
		   | obstacle

       (CustomDynamicColor.cxx/CustomDynamicColor::read)

       dynamicColor :=
		     object
		   | channel "limits" <float> <float>
		   | channel "sinusoid"	<float>	<float>	<float>
		   | channel "clampup" <float> <float> <float>
		   | channel "clampdown" <float> <float> <float>
		   | channel "sequence"	<float>	<float>	("0" "1" "2"){1..*}

       (CustomGate.cxx/CustomGate::read)

       teleporter :=
		     "border" <float>
		   | "horizontal"  # NOT IMPLEMENTED
		   | obstacle

       (CustomGroup.cxx/CustomGroup::read)

       group :=
		     "team" <integer>
		   | "tint" rgbaColor
		   | "phydrv" <physics_driver_name>
		   | "matref" <material_name>
		   | obstacle

       (CustomLink.cxx/CustomLink::read)

       teleporter_spec :=
		     <integer>
		   | <teleporter_name_with_wildcards> (":f" | ":b")?

       link :=
		     "from" <teleporter_spec>
		   | "to" <teleporter_spec>
		   | object

       (MeshDrawInfo.cxx/MeshDrawInfo::parseDrawCmd)

       drawInfoCmd :=
		     "points"	 <integer>+
		   | "lines"	 <integer> <integer> <integer>{2}*
		   | "lineloop"	 <integer> <integer>+
		   | "linestrip" <integer> <integer> <integer{2}*
		   | "tris"	 <integer> <integer> <integer> <integer>{3}*
		   | "tristrip"	 <integer> <integer> <integer>+
		   | "trifan"	 <integer> <integer> <integer>+
		   |  "quads"	  <integer> <integer> <integer>	<integer> <in-
	      teger>{4}*
		   | "quadstrip" <integer> <integer> <integer>{2}+
		   | "polygon"	 <integer> <integer> <integer> <integer>{3}*

       (MeshDrawInfo.cxx/MeshDrawInfo::parseDrawSet)

       drawInfoSet :=
		     "matref" <material_name>
		   | "dlist"
		   | "sphere" 3dpoint <float>
		   | drawInfoCmd

       (MeshDrawInfo.cxx/MeshDrawInfo::parseDrawLod)

       drawInfoLod :=
		     "lod"
		   | "lengthPerPixel" <float>
		   | drawInfoSet

       (MeshDrawInfo.cxx/MeshDrawInfo::parse)

       drawInfo	:=
		     "drawInfo"
		   | "dlist"
		   | "decorative"
		   | "angvel" <float>
		   | "extents" 3dpoint 3dpoint
		   | "sphere" 3dpoint <float>
		   | "corner" <integer>	<integer> <integer>
		   | "vertex" 3dpoint
		   | "normal" 3dpoint
		   | "texcoord"	<float>	<float>
		   | drawInfoLod

       (CustomMesh.cxx/CustomMesh::read)

       mesh :=
		     "face"
		   | face
		   | "endface"
		   | "inside" 3dpoint
		   | "outside" 3dpoint
		   | "vertex" 3dpoint
		   | "normal" 3dpoint
		   | "texcoord"	<float>	<float>
		   | "phydrv" <physics_driver_name>
		   | "smoothbounce"
		   | "noclusters"
		   | drawInfo
		   | material
		   | obstacle

       (CustomMeshFace.cxx/CustomMeshFace::read)

       face :=
		     "vertices"	<integer>{3..*}
		   | "normals" <integer>{3..*}
		   | "texcoords" <integer>{3..*}
		   | "phydrv" <physics_driver_name>
		   | "smoothbounce"
		   | "noclusters"
		   | "drivethrough"
		   | "shootthrough"
		   | "ricochet"
		   | "passable"
		   | material

       (CustomMeshTransform.cxx/CustomMeshTransform::read)

       transform :=
		     "shift" 3dpoint
		   | "scale" 3dpoint
		   | "shear" 3dpoint
		   | "spin" angle 3dpoint
		   | "xform" <transform_name>
		   | object

       (CustomPhysicsDriver.cxx/CustomPhysicsDriver::read)

       physics :=
		     "linear" 3dpoint
		   | "angular" <float> 2dpoint
		   | "radial" <float> 2dpoint  # NOT IMPLEMENTED
		   | "slide" <float>
		   | "death" <string>
		   | object

       (CustomPyramid.cxx/CustomPyramid::read)

       pyramid :=
		     "flipz"
		   | obstacle

       (CustomSphere.cxx/CustomSphere::read)

       sphere :=
		     "divisions" <integer>
		   | "radius" <float>
		   | ("hemi" | "hemisphere")
		   | "texsize" <float> <float>
		   | "phydrv" <physics_driver_name>
		   | "smoothbounce"
		   | "flatshading"
		   | material
		   | ("edge" | "bottom") material
		   | obstacle

       (CustomTetra.cxx/CustomTetra::read)
	      Note: At most 4 vertices can be specified.
	      Note2: material will apply to all	vertices when specified	first,
	      otherwise	like "normals" and "texcoords" they apply to the  pre-
	      vious vertex.

       tetra :=
		     "vertex" 3dpoint
		   | "normals" 3dpoint
		   | "texcoords" 2dpoint
		   | material
		   | obstacle

       (CustomTextureMatrix.cxx/CustomTextureMatrix::read)

       textureMatrix :=
		     "fixedshift" 2dpoint
		   | "fixedscale" 2dpoint
		   | "fixedspin" angle
		   | "fixedcenter" 2dpoint
		   | "shift" <float> <float>
		   | "spin" <float>
		   | "scale" <float> <float> <float> <float>
		   | "center" 2dpoint
		   | object

       (CustomWaterLevel.cxx/CustomWaterLevel::read)

       waterLevel :=
		     "height" <float>
		   | material
		   | object

       (CustomWeapon.cxx/CustomWeapon::read)

       weapon :=
		     "initdelay" <float>
		   | "delay" <float>{1..*}
		   | "type" <flag_short_name>
		   | location

       (CustomWorld.cxx/CustomWorld::read)

       world :=
		     "size" <float>
		   | "flagHeight" <float>
		   | object

       (CustomZone.cxx/CustomZone::read)

       zone :=
		     "team" <integer>{1..*}
		     "flag" ("good" | "bad" | <flag_short_name>){1..*}
		   | "safety" <integer>{1..*}
		   | "zoneflag"	<flag_short_name> <integer>?
		   | location

SEE ALSO
       bzflag(6), bzadmin(6), bzfs(6)

BZFlag 2.4.26			  2026-02-26				BZW(5)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=bzw&sektion=5&manpath=FreeBSD+Ports+15.0.quarterly>

home | help