1bzw(5)                              BZFlag                              bzw(5)
2
3
4

NAME

6       bzw - BZFlag world file format
7

DESCRIPTION

9       The BZFlag world file format describes a world environment that is used
10       by the BZFlag game server, bzfs.  X BZW file format
11
12       The BZFlag world file format describes and  environment  that  includes
13       the  game  map, physical world attributes, and automatic world weapons.
14       The map may contain a variety of "obstacles" like buildings,  pyramids,
15       and  meshes.   These  obstacles make up the world that the BZFlag tanks
16       will drive around in.  Map attributes may be set to  create  worlds  of
17       various sizes, the default size is 800x800.
18
19       Here is small example world:
20
21       # simple world containing a box, pyramid, and mesh
22       world
23         name Simple World
24         size 100.0
25       end
26       box
27         position -20 -20 0
28         size 10 20 10
29       end
30       pyramid
31         position 20 20 0
32         size 10 10 20
33       end
34       mesh
35         vertex -10 0 0
36         vertex 10 0 0
37         vertex 0 10 0
38         face
39           vertices 0 1 2
40         endface
41       end
42
43       The  .bzw  file is a plain text file with a relatively simple file for‐
44       mat.  The format of this text file consists of any  number  of  objects
45       listed  in any order (except that physics, textureMatrix, dynamicColor,
46       and material must come before they are referenced)  separated  by  new‐
47       lines  and  grouped  into blocks of types. The list of world types con‐
48       sists of:
49       world
50       options
51       waterLevel
52       dynamicColor
53       textureMatrix
54       transform
55       material
56       physics
57       define
58       group
59       mesh
60       meshbox
61       meshpyr
62       arc
63       cone
64       sphere
65       tetra
66       box
67       pyramid
68       link
69       teleporter
70       base
71       weapon
72       zone
73
74       Each object is described by placing the type on one line, the word  end
75       on  a following line, and a list of attributes for that object, one per
76       line, in between. The exceptions to the rule are define and face, which
77       are concluded with enddef and endface.  Attributes may be listed in any
78       order. Attributes have default values, and if that is good enough,  the
79       attribute need not be listed.
80
81       Words are always specified in lowercase. Line comments can be specified
82       by placing a # sign at the start of the line.
83
84       For documentation purposes, you can tag each object by  adding  a  name
85       attribute. There is no set limit to the number of times you may use any
86       of the objects except for the world, options, and  waterLevel  objects,
87       they  can  only  be specified once. The options object contains command
88       line arguments that are used to configure the server's game  mode,  but
89       can not contain server specific options such as -p, -passwd, and -conf.
90
91       In the following examples, the values are the defaults.
92
93       The World object
94       Header for the world.
95
96       world
97         name example_world
98         size 400.0
99         flagHeight 10.0
100       end
101
102       The Options object
103       A world file interface for setting command line options for BZFS.
104
105       options
106         -set _tankSpeed 36
107         -j +r -ms 3
108         +f GM{5} +f SW{5}
109       end
110
111
112       The Water Level object
113       Sets how high the water is, in a matter of units.
114
115       waterLevel
116         name example_waterlevel
117         height -1.0 # anything below 0 turns it off
118       end
119
120
121       The Group Definition object
122       Defines a group, which may include other group instances
123       This  does  not place any objects into the world, a group instance must
124       be used to generate world objects from a group definition.
125
126       define <example_groupdef>
127         # You can add any object to a group definition,
128         # except for the following types:
129         #   textureMatrix
130         #   dynamicColor
131         #   material
132         #   physics
133         #   links
134         #   weapon
135         #   zone
136       enddef
137
138
139       The Group Instantiation object
140       Instantiates a group, and possibly modifies subobjects
141
142       group <example_groupdef>  # a valid group definition reference
143         shift 0 0 0          # (repeatable)
144         scale 1 1 1          # (repeatable)
145         shear 0 0 0          # (repeatable)
146         spin angle nx ny nz  # (repeatable)
147                              # angle degrees about vector n
148         team 0        # change all base colors within group
149         tint 1 1 1 1  # hierarchically tints objects within this group
150         drivethrough  # make all subobjects drivethrough
151         shootthrough  # make all subobjects shootthrough
152         phydrv example_phydrv     # reassign any valid physics drivers
153         matref example_material # set material properties
154                                   # (except for the color)
155       end
156
157
158       The Dynamic Color object
159
160       dynamicColor
161         name example_dyncol
162         # there are 4 channels that can be modified:
163         #   red, green, blue, alpha
164         # there are 5 types of commands per channel:
165         #   limits, sinusoid, clampUp, clampDown, sequence
166         # except for "limits" and "sequence", the commands are repeatable
167         # if a sequence is used, then clampUps and clampDowns have no effect
168         # sequences can use three states (0, 1, 2).
169         #   0 - equivalent to an active clampDown
170         #   1 - equivalent to no clamps
171         #   2 - equivalent to an active clampUp
172         # if both clampUp and clampDown are active, the value is (min+max)/2
173         # the sinusoid function starts at the max value
174         # the sum of a channel's sinusoids is clamped between 0 and 1
175         red limits 0 1               # min/max limits
176         green sinusoid 0.1 0 0.25    # period, offset, weight
177         blue clampUp 0.1 0 0.75      # period, offset, width
178         alpha clampDown 0.2 0.5 0.5  # period, offset, width
179         red sequence 0.0 0.0 2 0 1 1 2 0 ... # period, offset, list of states
180       end
181
182
183       The Texture Matrix object
184
185       textureMatrix
186         name example_texmat
187         scale 0.0 0.0 1.0 1.0  # u/v freqs, u/v scales
188         spin 0.0               # rotation freq
189         shift 0.0 0.0          # u/v freqs
190         center 0.5 0.5         # dynamic u/v center (for spin and scale)
191         fixedscale 0.0 0.0     # time invariant u/v scale
192         fixedspin 0.0          # time invariant rotation
193         fixedshift 0.0 0.0     # time invariant u/v shift
194       end
195
196
197       Material Properties
198
199       Material properties may be set on several types of  objects,  including
200       meshes,  mesh  faces,  arcs,  cones,  spheres, and tetras. Here are the
201       properties:
202
203       material
204         name example_material
205         resetmat                  # restore default values
206         matref material_name      # copy another material's properties
207         ambient  0.2 0.2 0.2 1.0  # ambient color
208         diffuse  1.0 1.0 1.0 1.0  # diffuse color (main color)
209         color    1.0 1.0 1.0 1.0  # synonym for 'diffuse'
210         specular 0.0 0.0 0.0 1.0  # specular color
211         emission 0.0 0.0 0.0 1.0  # emission color
212         shininess 0.0             # shininess (0.0 - 128.0)
213         texture filename     # set working texture
214         # - non-interlaced PNG
215         # - http:// or ftp:// hyperlinks can be used  (no spaces)
216         # - BZFlag default texture names can be used  (.png not required)
217         addtexture filename  # add texture
218         notextures           # specify that no textures are to be used
219         notexalpha           # don't use the texture's alpha channel
220         notexcolor           # the color is not applied to the texture
221         # if a texture is specified, but not found, the default texture
222         # will be used. if the default texture is also not available, then
223         # the color will be used (untextured)
224         spheremap            # use spherical texture coordinate mapping
225         texmat -1            # texture matrix  (-1 for none)
226         dyncol -1            # dynamic color  (-1 for none)
227         noradar              # do not display on radar  (except normal mode)
228         noshadow             # do not render shadows
229         noculling            # do not cull by face winding  (double-sided)
230         nosorting            # do not do front-to-back alpha sorting
231         nolighting           # disable lighting
232         alphathresh 0.0      # alpha thresholding value
233         groupalpha           # sort translucent faces as a group
234         occluder             # faces with this material will occlude
235       end
236
237
238       The Physics Driver object
239
240       physics
241         name example_phydrv
242         linear  0.0 0.0 0.0  # x/y/z linear velocities
243         angular 0.0 0.0 0.0  # rotation freq, x/y coordinates
244         slide 0.0            # time until max velocity  (> 0.0 enables)
245         death Message goes here.
246         # the 'death' property requires a non-blank message
247       end
248
249
250       The Mesh object
251
252       mesh
253         name example_mesh
254         # Material properties applied to a mesh apply to all faces
255         # that follow the setting. Mesh faces will alter their own
256         # properties without affecting the state of the mesh properties.
257         # The same pattern is used to apply physics drivers.
258         vertex 100 200 300  # add a vertex              (repeatable)
259         normal 1.0 0 0      # add a normal              (repeatable)
260         texcoord 0.1 0.75   # add a texture coordinate  (repeatable)
261         inside 5.5 4.5 1.2  # add an inside point       (repeatable)
262         outside 0 0 1000    # add an outside point      (repeatable)
263         shift 0 0 0           # (repeatable)
264         scale 1 1 1           # (repeatable)
265         shear 0 0 0           # (repeatable)
266         spin angle nx ny nz   # (repeatable)
267         phydrv example_phydrv # assign a physics driver
268         smoothbounce          # ricochets use normals
269         noclusters            # render each mesh face individually
270         face  # start a face   (repeatable)
271           # the front-face winding is counter-clockwise
272           vertices 1 4 0 3 5   # list of vertices (requires at least three)
273           normals 2 6 0 4 7    # list of normals              (optional)
274           texcoords 0 3 2 4 9  # list of texture coordinates  (optional)
275           phydrv example_phydrv  # assign a physics driver
276         endface  # end the face
277         #
278         #  This next element can be added to increase the rendering speed
279         #  of the mesh object. If the client is capable of using this data,
280         #  then it is used to draw the mesh instead of the face information.
281         #
282         drawInfo
283           dlist                      # display list for all material sets
284           decorative                 # older clients with not see this mesh
285           angvel <degrees/sec>       # rotation about initial Z axis
286           extents <minX> <minY> <minZ> <maxX> <maxY> <maxZ>
287           sphere <x> <y> <z> <radiusSquared>
288           corner <v> <n> <t>         (repeatable)
289           vertex 0.0 0.0 0.0         (repeatable)
290           normal 0.0 0.0 0.0         (repeatable)
291           texcoord 0.0 0.0           (repeatable)
292           lod                        (repeatable)
293             lengthPerPixel <value>
294             matref <name>            (repeatable)
295               dlist                  # display list for this material set
296               sphere <x> <y> <z> <radiusSquared>
297               points    0            (repeatable)
298               lines     0 1          (repeatable)
299               lineloop  0 1          (repeatable)
300               linestrip 0 1          (repeatable)
301               tris      0 1 2        (repeatable)
302               tristrip  0 1 2        (repeatable)
303               trifan    0 1 2        (repeatable)
304               quads     0 1 2 3      (repeatable)
305               quadstrip 0 1 2 3      (repeatable)
306               polygon   0 1 2        (repeatable)
307             end  # matref
308           end    # lod
309         end      # drawInfo
310       end        # mesh
311
312
313       The Arc object
314
315       arc
316         name example_arc
317         divisions 16   # number of subdivisions
318         flatshading    # flat shading  (smooth is default)
319         angle 360      # the sweep angle
320         ratio 1        # (outrad - inrad) / outrad
321         position 0.0 0.0 0.0
322         size 10 10 10
323         rotation 0.0
324         shift 0 0 0            # (repeatable)
325         scale 1 1 1            # (repeatable)
326         shear 0 0 0            # (repeatable)
327         spin angle nx ny nz    # (repeatable)
328         phydrv example_phydrv  # assign a physics driver
329         smoothbounce           # ricochets use normals
330       end
331
332
333       The Cone object
334
335       cone
336         name example_cone
337         divisions 16   # number of subdivisions
338         flatshading    # flat shading  (smooth is default)
339         angle 360      # the sweep angle
340         position 0.0 0.0 0.0
341         size 10 10 10
342         rotation 0.0
343         shift 0 0 0            # (repeatable)
344         scale 1 1 1            # (repeatable)
345         shear 0 0 0            # (repeatable)
346         spin angle nx ny nz    # (repeatable)
347         phydrv example_phydrv  # assign a physics driver
348         smoothbounce           # ricochets use normals
349       end
350
351
352       The Sphere object
353
354       sphere
355         name example_sphere
356         divisions 4    # number of subdivisions
357         flatshading    # flat shading  (smooth is default)
358         position 0.0 0.0 10.0
359         size 10 10 10
360         radius 10      #  sets all size values to this value
361         rotation 0.0
362         shift 0 0 0            # (repeatable)
363         scale 1 1 1            # (repeatable)
364         shear 0 0 0            # (repeatable)
365         spin angle nx ny nz    # (repeatable)
366         phydrv example_phydrv  # assign a physics driver
367         smoothbounce           # ricochets use normals
368       end
369
370
371       The Tetrahedron object
372
373       tetra
374         name example_tetra
375       # there must always be 4 vertices
376         vertex -10.0 -5.0 0.0
377         vertex +10.0 -5.0 0.0
378         vertex 0.0 10.0 0.0
379         vertex 0.0 5.0 10.0
380         shift 0 0 0            # (repeatable)
381         scale 1 1 1            # (repeatable)
382         shear 0 0 0            # (repeatable)
383         spin angle nx ny nz    # (repeatable)
384       end
385
386
387       The Box object
388       Adds a simple block.
389
390       box
391         name example_box
392         position 0.0 0.0 0.0
393         size 30.0 30.0 9.42
394         rotation 0.0
395       end
396
397
398       The Pyramid object
399       Adds a triangular shaped object.
400
401       pyramid
402         name example_pyramid
403         position 0.0 0.0 0.0
404         size 8.2 8.2 10.25
405         rotation 0.0
406       end
407
408
409       The Teleporter object
410       Adds an object that places a tank at another teleporter in a  different
411       area when ran through.
412
413       teleporter [name]
414       # the [name] tag is used for linkage
415         name example_teleporter
416         position 0.0 0.0 0.0
417         size 5.06 4.48 20.16
418         rotation 0.0
419         border 1.12
420       end
421
422
423       The Link object
424       Adds a route to teleport a tank between two teleporters.
425
426       # Teleporter names are terminated with either :f (forward)
427       # or :b (backwards). The forwards link points to 0 degrees,
428       # and the backwards link points to 180. Links are made by
429       # pattern matching the teleporter names. The '*' and '?'
430       # globbing characters can be used to make multiple matches.
431       # If there are multiple matches for the "to" link, then the
432       # destination will be selected randomly between the matches.
433       # in-game.
434
435       # NOTE: bzfs -d -d -d -d will print the linkage table.
436
437       link
438         name example_link
439       # this will link all teleporters randomly to all other teleporters
440         from *
441         to   *
442       end
443
444       #  or,  to  link   between  known  teleporters  examp_tele1(front)  and
445       examp_tele2(back)
446
447       link
448         name  example_realLink
449         from examp_tele1:f
450         to examp_tele2:b
451       end
452
453
454       The Base object
455       Creates a team base where the corresponding team's flag is stored.  The
456       oncap  option  will  fire a world weapon of the specified type when the
457       team flag for this base is captured.
458
459       base
460         name example_base
461         position 0.0 0.0 0.0
462         size 60.0 60.0 0.0
463         rotation 0.0
464         color 0
465         oncap V
466       end
467
468
469       The Weapon object
470       Creates a world weapon, or a weapon fired automatically by  the  world.
471       The  weapon  can  either  be  timed  or be event driven.  Timed weapons
472       should use the initdelay and delay fields.  Event driven  weapons  need
473       to  use  the trigger option to define what the trigger event is.  Valid
474       trigger events are; OnCap,  for  flag  capture  events.   OnSpawn,  for
475       player spawn events.  OnDie, for player death events.  If the weapon is
476       to be triggered only for a specific  team  then  the  eventteam  option
477       should  be  used  with a team number (1 to 4).  A eventteam value of -1
478       will trigger this weapon for any team.  -1  is  the  default  eventteam
479       value.
480
481       weapon
482         name example_weapon
483         position 0.0 0.0 0.0
484         rotation 0.0
485         tilt 0.0
486         initdelay 10.0
487         delay 10.0 3.0 5.0 3.0
488         type V
489         trigger flagcap
490         eventteam V
491       end
492
493
494       The Zone object
495       Specifies  a certain range in the world, and what attributes that range
496       has.
497
498       zone
499         name example_zone
500         position 0.0 0.0 0.0
501         size 1.0 1.0 1.0
502         rotation 0.0
503       # where players may spawn
504         team 0 1 2 3 4
505       # where flag may spawn
506         flag GM SW good bad
507       # dropped team flags will fly to the closest safety zone
508         safety 1 2 3 4
509       # attach a flag to this zone (always spawn in this zone)
510         zoneflag GM 3  # type, count (type can be a team flag, ex: R*)
511       end
512
513
514

FILE SYNTAX

516       The symbol '?' means that the item is optional.
517
518       The notation {a..b} means that the number of  times  the  item  can  be
519       present  must  be between 'a' and 'b', where '*' mean infinity. ('?' is
520       equivalent to {0..1})
521
522       angle := <float>
523
524       2dpoint := <float> <float>
525
526       3dpoint := <float> <float> <float>
527
528       rgbColor := <float> <float> <float>
529
530       alpha := <float>
531
532       rgbaColor := rgbColor alpha? | <color_name> alpha?
533
534       channel := "red" | "green" | "blue" | "alpha"
535
536
537       (BZWReader.cxx/parseNormalObject)
538
539       allObjects :=
540                     "box"
541                   | "pyramid"
542                   | "base"
543                   | "link"
544                   | "teleporter"
545                   | "mesh"
546                   | "arc"
547                   | "meshbox"
548                   | "cone"
549                   | "meshpyr"
550                   | "sphere"
551                   | "tetra"
552                   | "weapon"
553                   | "zone"
554                   | "waterLevel"
555                   | "dynamicColor"
556                   | "textureMatrix"
557                   | "material"
558                   | "physics"
559                   | "transform"
560
561       (BZWReader.cxx/BZWReader::readWorldStream)
562              Note: Blank lines and lines starting with # are discarded.
563
564       worldStream :=
565                     "end"
566                   | allObjects
567                   | "define" <group_name>
568                   | "enddef"
569                   | "group" <group_name>
570                   | "teleporter" <name>?
571                   | "options"
572                   | "include" <filename>
573                   | "world"
574
575       (ParseMaterial.cxx/parseMaterials)
576
577       material :=
578                   object
579                   | "matref" <material_name>
580                   | "resetmat"
581                   | "dyncol" <dynamic_color_name>
582                   | "ambient" rgbaColor
583                   | ("diffuse" | "color") rgbaColor
584                   | "specular" rgbaColor
585                   | "emission" rgbaColor
586                   | "shininess" <float>
587                   | "texture <texture_name>
588                   | "notextures"
589                   | "addtexture" <texture_name>
590                   | "texmat" <matrix_name>
591                   | "notexalpha"
592                   | "notexcolor"
593                   | "spheremap"
594                   | "noradar"
595                   | "noshadow"
596                   | "noculling"
597                   | "nosorting"
598                   | "nolighting"
599                   | "alphathresh" <value>
600                   | "groupalpha"
601                   | "occluder"
602                   | "shader" <shader_name>  # NOT IMPLEMENTED
603                   | "addshader" <shader_name>  # NOT IMPLEMENTED
604                   | "noshaders"  # NOT IMPLEMENTED
605
606       (WorldFileObject:.cxx/WorldFileObject::read)
607
608       object := "name" <name>
609
610       (WorldFileLocation.cxx/readWorldFileLocation::read)
611
612       location :=
613                     ("pos" | "position") 3dpoint
614                   | "size" 3dpoint
615                   | ("rot" | "rotation") <float>
616                   | "shift" 3dpoint
617                   | "scale" 3dpoint
618                   | "shear" 3dpoint
619                   | "spin" angle 3dpoint
620                   | "xform" <transform_name>
621                   | object
622
623       (WorldFileObstacle.cxx/WorldFileObstacle::read)
624
625       obstacle :=
626                     "drivethrough"
627                   | "shootthrough"
628                   | "passable"
629                   | location
630
631       (CustomArc.cxx/CustomArc::read)
632
633       meshbox :=
634                     "divisions" <integer>
635                   | "angle" angle
636                   | "ratio" <float>
637                   | "texsize" <float> <float> <float> <float>
638                   | "phydrv" <physics_driver_name>
639                   | "smoothbounce"
640                   | "flatshading"
641                   | material
642                   | ("top" | "bottom" | "inside" | "outside" | "startside"  |
643              "endside") material
644                   | obstacle
645
646       arc :=
647                     "divisions" <integer>
648                   | "angle" angle
649                   | "ratio" <float>
650                   | "texsize" <float> <float> <float> <float>
651                   | "phydrv" <physics_driver_name>
652                   | "smoothbounce"
653                   | "flatshading"
654                   | material
655                   |  ("top" | "bottom" | "inside" | "outside" | "startside" |
656              "endside") material
657                   | obstacle
658
659       (CustomBase.cxx/CustomBase::read)
660
661       base :=
662                     "color" <integer>
663                   | obstacle
664
665       (CustomBox.cxx)
666
667       box := obstacle
668
669       (CustomCone.cxx/CustomCone::read)
670
671       meshpyr :=
672                     "divisions" <integer>
673                   | "angle" <float>
674                   | "texsize" <float> <float>
675                   | "phydrv" <physics_driver_name>
676                   | "smoothbounce"
677                   | "flatshading"
678                   | material
679                   | ("edge" | "bottom" | "startside" | "endside") material
680                   | "flipz"
681                   | obstacle
682
683       cone :=
684                     "divisions" <integer>
685                   | "angle" <float>
686                   | "texsize" <float> <float>
687                   | "phydrv" <physics_driver_name>
688                   | "smoothbounce"
689                   | "flatshading"
690                   | material
691                   | ("edge" | "bottom" | "startside" | "endside") material
692                   | obstacle
693
694       (CustomDynamicColor.cxx/CustomDynamicColor::read)
695
696       dynamicColor :=
697                     object
698                   | channel "limits" <float> <float>
699                   | channel "sinusoid" <float> <float> <float>
700                   | channel "clampup" <float> <float> <float>
701                   | channel "clampdown" <float> <float> <float>
702                   | channel "sequence" <float> <float> ("0" "1" "2"){1..*}
703
704       (CustomGate.cxx/CustomGate::read)
705
706       teleporter :=
707                     "border" <float>
708                   | "horizontal"  # NOT IMPLEMENTED
709                   | obstacle
710
711       (CustomGroup.cxx/CustomGroup::read)
712
713       group :=
714                     "team" <integer>
715                   | "tint" rgbaColor
716                   | "phydrv" <physics_driver_name>
717                   | "matref" <material_name>
718                   | obstacle
719
720       (CustomLink.cxx/CustomLink::read)
721
722       teleporter_spec :=
723                     <integer>
724                   | <teleporter_name_with_wilcards> (":f" | ":b")?
725
726       link :=
727                     "from" <teleporter_spec>
728                   | "to" <teleporter_spec>
729                   | object
730
731       (MeshDrawInfo.cxx/MeshDrawInfo::parseDrawCmd)
732
733       drawInfoCmd :=
734                     "points"    <integer>+
735                   | "lines"     <integer> <integer> <integer>{2}*
736                   | "lineloop"  <integer> <integer>+
737                   | "linestrip" <integer> <integer> <integer{2}*
738                   | "tris"      <integer> <integer> <integer> <integer>{3}*
739                   | "tristrip"  <integer> <integer> <integer>+
740                   | "trifan"    <integer> <integer> <integer>+
741                   |  "quads"      <integer>  <integer>  <integer>   <integer>
742              <integer>{4}*
743                   | "quadstrip" <integer> <integer> <integer>{2}+
744                   | "polygon"   <integer> <integer> <integer> <integer>{3}*
745
746       (MeshDrawInfo.cxx/MeshDrawInfo::parseDrawSet)
747
748       drawInfoSet :=
749                     "matref" <material_name>
750                   | "dlist"
751                   | "sphere" 3dpoint <float>
752                   | drawInfoCmd
753
754       (MeshDrawInfo.cxx/MeshDrawInfo::parseDrawLod)
755
756       drawInfoLod :=
757                     "lod"
758                   | "lengthPerPixel" <float>
759                   | drawInfoSet
760
761       (MeshDrawInfo.cxx/MeshDrawInfo::parse)
762
763       drawInfo :=
764                     "drawInfo"
765                   | "dlist"
766                   | "decorative"
767                   | "angvel" <float>
768                   | "extents" 3dpoint 3dpoint
769                   | "sphere" 3dpoint <float>
770                   | "corner" <integer> <integer> <integer>
771                   | "vertex" 3dpoint
772                   | "normal" 3dpoint
773                   | "texcoord" <float> <float>
774                   | drawInfoLod
775
776       (CustomMesh.cxx/CustomMesh::read)
777
778       mesh :=
779                     "face"
780                   | face
781                   | "endface"
782                   | "inside" 3dpoint
783                   | "outside" 3dpoint
784                   | "vertex" 3dpoint
785                   | "normal" 3dpoint
786                   | "texcoord" <float> <float>
787                   | "phydrv" <physics_driver_name>
788                   | "smoothbounce"
789                   | "noclusters"
790                   | drawInfo
791                   | material
792                   | obstacle
793
794       (CustomMeshFace.cxx/CustomMeshFace::read)
795
796       face :=
797                     "vertices" <integer>{3..*}
798                   | "normals" <integer>{3..*}
799                   | "texcoords" <integer>{3..*}
800                   | "phydrv" <physics_driver_name>
801                   | "smoothbounce"
802                   | "noclusters"
803                   | "drivethrough"
804                   | "shootthrough"
805                   | "passable"
806                   | material
807
808       (CustomMeshTransform.cxx/CustomMeshTransform::read)
809
810       transform :=
811                     "shift" 3dpoint
812                   | "scale" 3dpoint
813                   | "shear" 3dpoint
814                   | "spin" angle 3dpoint
815                   | "xform" <transform_name>
816                   | object
817
818       (CustomPhysicsDriver.cxx/CustomPhysicsDriver::read)
819
820       physics :=
821                     "linear" 3dpoint
822                   | "angular" <float> 2dpoint
823                   | "radial" <float> 2dpoint  # NOT IMPLEMENTED
824                   | "slide" <float>
825                   | "death" <string>
826                   | object
827
828       (CustomPyramid.cxx/CustomPyramid::read)
829
830       pyramid :=
831                     "flipz"
832                   | obstacle
833
834       (CustomSphere.cxx/CustomSphere::read)
835
836       sphere :=
837                     "divisions" <integer>
838                   | "radius" <float>
839                   | ("hemi" | "hemisphere")
840                   | "texsize" <float> <float>
841                   | "phydrv" <physics_driver_name>
842                   | "smoothbounce"
843                   | "flatshading"
844                   | material
845                   | ("edge" | "bottom") material
846                   | obstacle
847
848       (CustomTetra.cxx/CustomTetra::read)
849              Note: At most 4 vertices can be specified.
850              Note2: material will apply to all vertices when specified first,
851              otherwise like "normals" and "texcoords" they apply to the  pre‐
852              vious vertex.
853
854       tetra :=
855                     "vertex" 3dpoint
856                   | "normals" 3dpoint
857                   | "texcoords" 2dpoint
858                   | material
859                   | obstacle
860
861       (CustomTextureMatrix.cxx/CustomTextureMatrix::read)
862
863       textureMatrix :=
864                     "fixedshift" 2dpoint
865                   | "fixedscale" 2dpoint
866                   | "fixedspin" angle
867                   | "fixedcenter" 2dpoint
868                   | "shift" <float> <float>
869                   | "spin" <float>
870                   | "scale" <float> <float> <float> <float>
871                   | "center" 2dpoint
872                   | object
873
874       (CustomWaterLevel.cxx/CustomWaterLevel::read)
875
876       waterLevel :=
877                     "height" <float>
878                   | material
879                   | object
880
881       (CustomWeapon.cxx/CustomWeapon::read)
882
883       weapon :=
884                     "initdelay" <float>
885                   | "delay" <float>{1..*}
886                   | "type" <flag_short_name>
887                   | location
888
889       (CustomWorld.cxx/CustomWorld::read)
890
891       world :=
892                     "size" <float>
893                   | "flagHeight" <float>
894                   | object
895
896       (CustomZone.cxx/CustomZone::read)
897
898       zone :=
899                     "team" <integer>{1..*}
900                     "flag" ("good" | "bad" | <flag_short_name>){1..*}
901                   | "safety" <integer>{1..*}
902                   | "zoneflag" <flag_short_name> <integer>?
903                   | location
904
905

SEE ALSO

907       bzflag(6), bzadmin(6), bzfs(6)
908
909
910
911bzw-2.0.10                        2007-12-20                            bzw(5)
Impressum