<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.bzflag.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ClayOgre</id>
	<title>BZFlagWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.bzflag.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=ClayOgre"/>
	<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/Special:Contributions/ClayOgre"/>
	<updated>2026-04-29T05:35:45Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7369</id>
		<title>Map making by hand</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7369"/>
		<updated>2010-11-06T02:35:17Z</updated>

		<summary type="html">&lt;p&gt;ClayOgre: /* Transformations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoDoc|Major re-organization, transform away from &amp;quot;chat&amp;quot; style. Need to reference pages elsewhere on the wiki in place of much of the content which appears to be building up here.  Create them if necessary, or see the list [[Special:Allpages|here]].}}&lt;br /&gt;
Although there are a number of GUI options for creating maps such as BZ-Edit, 3D modelers, many map-makers use a basic text-editor.  There are many times when it is necessary to make small changes to a map, such as including objects that are unavailable in GUI map-maker, but there are also some who enjoy the challenge of creating a map entirely from scratch with a text-editor.&lt;br /&gt;
&lt;br /&gt;
==Text Editors==&lt;br /&gt;
Most text-editors designed for coding/programming are more than sufficient for editing bzw files.  Although word-processing programs such as Microsoft Word can be used, there are many cheaper (free) and more efficient programs designed specifically for coding. If you are interested in syntax highlighting, look at the [http://my.bzflag.org/bb/viewtopic.php?f=24&amp;amp;t=16037&amp;amp;p=148953 forum topic].&lt;br /&gt;
===Windows===&lt;br /&gt;
*Notepad&lt;br /&gt;
*PSPad&lt;br /&gt;
*NoteTab&lt;br /&gt;
*[http://notepad-plus-plus.org/ Notepad ++] - a tabbed editor based on Scite.&lt;br /&gt;
&lt;br /&gt;
===Mac===&lt;br /&gt;
*TextWrangler&lt;br /&gt;
*TextEdit&lt;br /&gt;
===Linux===&lt;br /&gt;
*Command-line editors such as nano, emacs, pico, vim, or ed.&lt;br /&gt;
*GEdit&lt;br /&gt;
*Kate&lt;br /&gt;
*Scite&lt;br /&gt;
&lt;br /&gt;
==Editing existing maps==&lt;br /&gt;
Beginning mapmakers should spend some time studying and making small changes in existing maps to see how things work.  In the client, maps can be saved for editing by joining the desired server and choosing: Options&amp;gt;Save World.  Maps can also be saved by issuing the /saveworld command.  The map should be a simple map when getting started.  One may find it easier to create a file in BZEdit and open the resulting file in the text-editor.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
If you have created a box in BZEdit you may see:&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
 world &lt;br /&gt;
   size 400 &lt;br /&gt;
 end &lt;br /&gt;
 options &lt;br /&gt;
   +r &lt;br /&gt;
   -j &lt;br /&gt;
   -set _tankSpeed 25 &lt;br /&gt;
   -ms 5 &lt;br /&gt;
   -mp 0,2,0,2,0,2 &lt;br /&gt;
 end &lt;br /&gt;
 box &lt;br /&gt;
   name box1 &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
 end &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===What that means===&lt;br /&gt;
&amp;quot;There are set variables that define various things such as how fast your tank is, how fast the bullets are, or if it&#039;s raining or foggy.  Put those in the options setting with &amp;quot;-set(space) &amp;quot; in front of it. You can also make those changes as an admin by using /set _variable (notice there is a space between the set and the _).  A full list of these settings can be found on the [[Server Variables]] page.  Other options, such as how many times a flag can be grabbed before it resets or if flags can land on buildings are explained [http://my.bzflag.org/bb/files/antigrav4teamconf_114.txt in this forum post]&lt;br /&gt;
Optionally, the variables can be placed in a separate configuration file and referenced when the server is started.&amp;quot;&lt;br /&gt;
&#039;&#039;&#039;old&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, it says:&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
(Note: the # sign is used for comments.)&lt;br /&gt;
&lt;br /&gt;
This is the text added by the application initially, kind of like advertising. This will be the first thing anyone sees when they look at the map.&lt;br /&gt;
&lt;br /&gt;
The next thing is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
world &lt;br /&gt;
  size 400 # Sets the world size to 400 (800 x 800 total)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is rather self-explanatory. It&#039;s the &amp;lt;size&amp;gt; of the &amp;lt;world&amp;gt; (The BZFlag arena).&lt;br /&gt;
&lt;br /&gt;
Next is an &amp;lt;options&amp;gt; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options &lt;br /&gt;
  +r   # Enable Ricochet&lt;br /&gt;
  -j   # Enable Jumping&lt;br /&gt;
  -set _tankSpeed 25  # Sets the tank speed to 25 bzunits/second&lt;br /&gt;
  -ms 5  # Sets the maximum shots (per tank) to 5&lt;br /&gt;
  -mp 0,2,0,2,0,2  # Maximum of 2 Red Players, 2 Blue Players, and 2 Observers&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This allows you to define in the map file certain options that are also available from the command line when you start the bzfs server, or in the optional server config file.  Options embedded into a world file will override those input on the command line or in a config file.&lt;br /&gt;
&lt;br /&gt;
The commands listed here are:&lt;br /&gt;
Ricochet, Jumping, Tank speed, Max Shots, and Max Players.&lt;br /&gt;
These are rather self explanatory, except for Max Players. Each number represents how many of each of the following team players are allowed in the game (in the order listed): Rogue, Red, Green, Blue, Purple, Observer. Each number defines the max number of players per category.&lt;br /&gt;
&lt;br /&gt;
For more, see [[Options_(object)|Options Object]].&lt;br /&gt;
&lt;br /&gt;
We now come to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
box &lt;br /&gt;
  name box1      # Generally unused&lt;br /&gt;
  position 0 0 0 # X Y Z Position&lt;br /&gt;
  size 10 10 10  # X Y Z Size (bzunits from the position of the box)&lt;br /&gt;
  rotation 0     # Rotation (in degrees)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is a &amp;lt;box&amp;gt; with a &amp;lt;name&amp;gt; of &amp;lt;box1&amp;gt;.&lt;br /&gt;
The &amp;lt;position&amp;gt; is 0,0,0 in R3[http://en.wikipedia.org/wiki/R3].&lt;br /&gt;
The rest is pretty self explanatory.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; EVERY STATEMENT MUST HAVE AN END.&lt;br /&gt;
&lt;br /&gt;
===Basic Definitions===&lt;br /&gt;
;Objects&lt;br /&gt;
:Objects are the basic building blocks of the bzw file.  Objects begin with a line declaring the object, some fields describing that object, and a line that closes the object (usually with &amp;quot;end&amp;quot;).  Each of these sections of the object is important.&lt;br /&gt;
;Comments&lt;br /&gt;
:BZFS ignores anything in a line following the #; the line has been &amp;quot;commented out.&amp;quot;  It is highly recommended that comments be used often, both for the mapmaker and for others that may see the map.&lt;br /&gt;
;3D Cartesian Coordinate System&lt;br /&gt;
:In most objects, you will see three numbers after position and size. These numbers are coordinates on a graph. The first number is the x coordinate (left and right) the middle number is the y coordinate (forward and backward) and the third number is the z coordinate (height and depth). Another way of thinking of it is: x = width, y = depth, z = height. (Those accustomed to the Y axis determining height will have to slightly adjust their thinking.) &lt;br /&gt;
&lt;br /&gt;
==Sample Objects==&lt;br /&gt;
===The Box===&lt;br /&gt;
Perhaps the simplest object is the box.  There is actually nothing special you can do to it (but in versions of BZFlag from 2.0.8 up, you can do a lot more to it).  Here is an example of a box:&lt;br /&gt;
&lt;br /&gt;
 box&lt;br /&gt;
   name box1             # Optional, but good to include&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   rotation 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the first line, notice the word &amp;quot;box&amp;quot;.  It simply says the next object is a box.  The next line is the name of the object.  It is defined with the syntax &amp;quot;&amp;lt;tt&amp;gt;name &#039;&#039;objectName&#039;&#039;&amp;lt;/tt&amp;gt;&amp;quot;.  It is not required, but is good to include (if you have a LOT of boxes, how do you know which is which?  Naming them--as well as other objects--helps you keep track).  The third line defines the position of the center of the bottom of the object.  The three arguments of &amp;lt;tt&amp;gt;position&amp;lt;/tt&amp;gt; are the x, y, and z coordinates of the box, respectively.  The x and y coordinates can be positive or negative, but the z coordinate should just be positive or zero.  On the fourth line, the size of the box is defined.  The arguments of &amp;lt;tt&amp;gt;size&amp;lt;/tt&amp;gt; are the x, y, and z sizes of the object, respectively.  The x and y arguments make the box that wide on both sides of it&#039;s position.  However, the z argument makes the object exactly the number of units tall as defined.  In other words, the box shown above, with a size of &#039;10 10 10&#039; is actually 20 units by 20 units by 10 units high, so if you want a box that is a perfect cube, you would need to make the height, or Z dimension, &#039;20&#039;. The next line just says how much the object is rotated.  This number is the number of degrees of rotation, and can be negative or positive.  The last line just tells BZFlag the object is done, and a new one can be defined.  Be sure to &#039;&#039;&#039;always&#039;&#039;&#039; use this.&lt;br /&gt;
&lt;br /&gt;
Below is an image of a box with a size of 5 5 10.&lt;br /&gt;
&lt;br /&gt;
[[Image:box.jpg]]&lt;br /&gt;
&lt;br /&gt;
===The Cone===&lt;br /&gt;
Most objects have similar parameters as the basic box.  For instance, the code for a cone may look something like this:&lt;br /&gt;
&lt;br /&gt;
 cone&lt;br /&gt;
   name cone1&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 20&lt;br /&gt;
   divisions 128&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Divisions basically decide how smooth the cone is.  The higher the divisions the more smooth the cone is.  A division of 4 would look like a pyramid.  Another parameter that can be added to the cone object is angle. If you say angle 180, that would make 1/2 of a cone, 90 would make 1/4 of a cone, and so on. &lt;br /&gt;
&lt;br /&gt;
===The Arc===&lt;br /&gt;
&lt;br /&gt;
An arc is basically a cylinder. However it doesn’t have to be a perfect cylinder depending on certain options you select. For an arc the only required options are divisions, position and size. Just like the cone divisions have the same effect, position and size are all the same. Once again you can have an oval shaped cylinder type thing. Now, you WILL find more options to an arc than to a cone, for example the ratio option. The ratio options let you basically put a hole in the cylinder. So if you have the option: ratio 1 you would have a full cylinder. If you say for example ratio .3 or any number less than 1 you will get a hole in the cylinder. The bigger the number, the smaller the hole. Angle allows you to do a semicircle. Rotation, once again, isn&#039;t really needed, unless you need a semicircle that has a certain specific orientation in your map. all the options like spin and shear are the same for this object too! phydrv and matref I’ll show later. &lt;br /&gt;
&lt;br /&gt;
The screenshot below shows three arcs.  The only difference between them is the inner radius number.  The first is set to 1, the second to .5, and the third to .1.  Notice how the texture on the top surface of the arc becomes &amp;quot;stretched&amp;quot; when the radius is less than one.&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0015.png]]&lt;br /&gt;
&lt;br /&gt;
Here is the code for the arc with the .1 ratio:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
arc&lt;br /&gt;
	divisions 16 # number of subdivisions&lt;br /&gt;
	angle 360 # the sweep angle&lt;br /&gt;
	ratio .1 # (outrad - inrad) / outrad&lt;br /&gt;
	position 0.0 -42 0.0&lt;br /&gt;
	size 10 10 1&lt;br /&gt;
	rotation 0.0&lt;br /&gt;
	shift 0 0 0 # (repeatable)&lt;br /&gt;
	scale 1 1 1 # (repeatable)&lt;br /&gt;
	shear 0 0 0 # (repeatable)&lt;br /&gt;
	smoothbounce # ricochets use normals&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now lets see what happens if we change the angle value.  The ones below use 60, 120, and 240.  This is where you would need to use rotate to get the arc oriented the way you want.&lt;br /&gt;
&lt;br /&gt;
[[Image:Arcs.jpg]]&lt;br /&gt;
&lt;br /&gt;
Here is the code for the 60 degree arc:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
arc&lt;br /&gt;
	divisions 16 # number of subdivisions&lt;br /&gt;
	angle 60 # the sweep angle&lt;br /&gt;
	ratio .5 # (outrad - inrad) / outrad&lt;br /&gt;
	position 0.0 0.0 0.0&lt;br /&gt;
	size 10 10 1&lt;br /&gt;
	rotation 0.0&lt;br /&gt;
	shift 0 0 0 # (repeatable)&lt;br /&gt;
	scale 1 1 1 # (repeatable)&lt;br /&gt;
	shear 0 0 0 # (repeatable)&lt;br /&gt;
	smoothbounce # ricochets use normals&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let’s move to the sphere:&lt;br /&gt;
&lt;br /&gt;
===The Sphere===&lt;br /&gt;
&lt;br /&gt;
The only options required to make a sphere are position, size, and divisions. &lt;br /&gt;
All these options do the same thing as they did in the objects above.  You may also have an oval like sphere.  You make an oval like sphere simply by making the x and y&#039;s different sizes just like in the cone and arc.  The radius option is just a substitute for size.  You can write size 10 10 10 or radius 10.  Both do the same thing. However if you want an oval shaped sphere you have to use size.  Rotation wouldn&#039;t really have an effect and the shear and spin works the same for this object.&lt;br /&gt;
&lt;br /&gt;
==Getting more help==&lt;br /&gt;
*The links at the bottom of the [[:Category:Map Making|Map Making]] page.&lt;br /&gt;
*The original creator of this page is flight, you can email him at dirtbikerdude_91@yahoo.com and he will be happy to answer any questions that he is capable of answering.&lt;br /&gt;
&lt;br /&gt;
==Special Objects==&lt;br /&gt;
There are certain objects that are often coded by hand because it is simpler or it is impossible to do with graphical map creation tools.  &lt;br /&gt;
&lt;br /&gt;
===Materials ===&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_bolt.png &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
Material is letting the computer know that a material is about to be explained to it.  You name it so that way you can reference it with the matref.  The name can be any thing you want as long as it does not have any spaces.  You type in &amp;lt;tt&amp;gt;addtexture&amp;lt;/tt&amp;gt; and you state a texture name.  Now, how do you know what texture names there are to use?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Linux&#039;&#039;&#039;: Running &amp;lt;tt&amp;gt;ls /usr/share/bzflag/*.png&amp;lt;/tt&amp;gt; in a terminal will show the list of pictures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Mac&#039;&#039;&#039;: If you control click (right click) on the bzflag icon, click show package contents, click contents, and click resources, those are the pictures you may use. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Windows&#039;&#039;&#039;: The default path is &amp;lt;tt&amp;gt;C:\Program Files\BZFlag\data\*.png&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What you will find are images that are used in every day games.  The top of a base, the wall of a base. A bullet which is blue_bolt.png (as was used above).  The full path to the texture needs to be used if the texture is not found in that directory.  Any customized textures should be uploaded to the [http://images.bzflag.org/submitimages/ BZFlag Image Submission System] before the map is hosted publicly.&lt;br /&gt;
&lt;br /&gt;
Servers running bzfs 2.0.8 and earlier will require &amp;quot;meshbox&amp;quot; and &amp;quot;meshpyr&amp;quot; in order to apply textures and physics to these objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instead of creating a new texture, many interesting and creative things can be done with the &amp;quot;diffuse&amp;quot; parameter in the material object.  You can add the diffuse command and it will look like this diffuse 1 1 1 1.  The first number is the amount of red that will be in the meshobject.  The second number is the amount of green, the third is the amount of blue.  So you can mix those colors to make more colors.  You may use a range from 0-1.  For example diffuse .3 .5 .26 1.  The fourth number determines the opacity or transparency (the see-throughability).  0 is invisible, .5 is half invisible, and 1 is normal. &lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   diffuse .5 .25 .1 .6 &lt;br /&gt;
   addtexture mesh.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Physics===&lt;br /&gt;
&lt;br /&gt;
The format of the physics driver is like this:&lt;br /&gt;
(note that not all the commands are used concurrently, there is no point in using a death driver with a linear driver, etc.)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
physics&lt;br /&gt;
  name example_phydrv&lt;br /&gt;
  linear 0.0 0.0 0.0 # x/y/z linear velocities&lt;br /&gt;
  angular 0.0 0.0 0.0 # rotation freq, x/y coordinates&lt;br /&gt;
  slide 0.0 # time until max velocity (&amp;gt; 0.0 enables)&lt;br /&gt;
  death Message goes here.&lt;br /&gt;
  # the &#039;death&#039; property requires a non-blank message&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Physics drivers subject your tank to external forces.  If you have ever played laser mania by Louman then you may have encountered on the outskirts of the map an object that you can jump on and you go really fast, that is a physics driver. Physics and materials are both similar in that you must first define them, and then apply them to an object.  When you define a mesh object (regular BXFlag objects, such as boxes can&#039;t use physics drivers) you can reference that physics driver by using the phydrv command just like you would use the matref command for materials.  There are different physics commands: Linear, Angular, Slide and Death.  The physics driver used in the Louman map mentioned above is a linear driver.  Linear physics makes your tank move in a line.  The numbers after a linear command are how much &amp;quot;force&amp;quot; is applied in a given axis x y z, and you can have force applied in more than one axis. The direction is NOT along the axis of the object you apply the physics driver to, but along the major world axis, so if your object is rotated 45 degrees, you would need to put values for both x and y in your physics driver.  45 degrees is fairly easy, but other angles would require figuring out the proportions needed to move the tank along an object rotated to a given angle, it can get a bit tricky.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   linear 50 0 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive x direction you may use -50 and it will make it go the other way.&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy2 &lt;br /&gt;
   linear 0 50 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive y direction:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy3 &lt;br /&gt;
   linear 0 0 50 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank jump (bounce) at a speed of 50:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy4 &lt;br /&gt;
   slide 5 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank basically feel like it&#039;s on ice.  Whichever way the tank is moving it will keep moving that way. &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy5 &lt;br /&gt;
   death haha! you died &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make the tank die when it touches the object that refers to this and the message haha! you died will be displayed to that person. &lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   death I like you better dead! &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   phydrv phy1                       # Or what ever you named the physics.&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is applied to an object in a manner similar to that of a material.  Both physics and materials must be created in the map file before they are referenced.  The example below illustrates incorrectly placing a material definition after it is referenced by the meshbox:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_team.png &lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
A group is cluster of objects that can be &amp;quot;gathered together&amp;quot; and treated as if they were a single object.  Certain things cannot be included in groups:&lt;br /&gt;
&lt;br /&gt;
*textureMatrix&lt;br /&gt;
&lt;br /&gt;
*dynamicColor&lt;br /&gt;
&lt;br /&gt;
*material&lt;br /&gt;
&lt;br /&gt;
*physics&lt;br /&gt;
&lt;br /&gt;
*links&lt;br /&gt;
&lt;br /&gt;
*weapon&lt;br /&gt;
&lt;br /&gt;
*zone&lt;br /&gt;
&lt;br /&gt;
Notice that while teleporters aren&#039;t excluded from groups, you can&#039;t create links to teleporters within a group, except for purely random ones using &amp;quot;*&amp;quot;(asterisk) for the link. (this may not be entirely accurate, Trepan at one point hinted that there is a way around this...)&lt;br /&gt;
&lt;br /&gt;
Groups can be nested (you can have a group that is included in another group).&lt;br /&gt;
&lt;br /&gt;
For example if a map editor is making a forest, and each tree contains 2 objects, the editor doesn&#039;t want to type up the code for each tree over and over again. What he can do is tell BZFS that these objects = tree. And then whenever he wants to make a tree he just calls that group, as shown below.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
First define a group of obects as a tree...&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  define tree&lt;br /&gt;
  &lt;br /&gt;
  box&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  size 2 2 4&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  pyramid&lt;br /&gt;
  position 0 0 3&lt;br /&gt;
  size 5 5 10&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  enddef&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...then, to call the &amp;quot;tree&amp;quot; group, just:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  group tree&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Transformations==&lt;br /&gt;
[[Category:Map Making]]&lt;br /&gt;
Transformations are simple ways of modifying objects so that maps have some variety. These can get complicated so I will only give you a sample of what they can do. There are 3 transformations shift, spin, and shear. You can find a more in depth page here:&lt;br /&gt;
[[3d Transformations]]&lt;br /&gt;
&lt;br /&gt;
====Shift====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shift&#039;&#039;&#039; moves an object by the amount of units that you specify from its present position.&lt;br /&gt;
the object..&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at place 10 10 0&lt;br /&gt;
&lt;br /&gt;
while the object..&lt;br /&gt;
&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  shift 0 0 10&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at position 10 10 10.&lt;br /&gt;
&lt;br /&gt;
====Spin====&lt;br /&gt;
Spinning an object is just like rotating an object but can be on a different axis. (y and x)&lt;br /&gt;
When you rotate it is around the center of the object.&lt;br /&gt;
Remember: Only spin-able objects can be spun.&lt;br /&gt;
Here is what the code looks like:&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
 end&lt;br /&gt;
The meshbox will now be tilted 45 degrees on its y axis.&lt;br /&gt;
Spin code has four numbers, the first one is how many degrees to spin.&lt;br /&gt;
The last three are for which axis&#039;s to spin, by placing a value of more than 0.&lt;br /&gt;
Spin can be a bit tricky and unintuitive to use.  It is not exactly like rotate, because it is possible to &amp;quot;spin&amp;quot; something so that it ends up &amp;quot;underneath&amp;quot; the BZFlag playing field.&lt;br /&gt;
&lt;br /&gt;
Spin is often best used with shift.  Think of the center of your map as a sort of &amp;quot;construction yard&amp;quot;.  You position objects at location 0 0 0, then spin and shift them to the location you want.&lt;br /&gt;
&lt;br /&gt;
Here is what you get if you use the above code in a map:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0012.png]]&lt;br /&gt;
&lt;br /&gt;
Looks fairly normal in this screenshot, doesn&#039;t it.  But if you drive around, the box will behave oddly, and appear to &amp;quot;float&amp;quot; in front of your HUD.  What has happened is that the box hasn&#039;t rotated around it&#039;s own axis, but around the world axis for the whole BZFlag arena!  But if we add some code to shift the box up above the z plane, it will look normal in-game.&lt;br /&gt;
&lt;br /&gt;
So if we make a simple change to the above code and add a shift statement and shift the box up in z (this is not the z axis of the box, but the world axis of our game arena):&lt;br /&gt;
&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
   shift 0 0 10&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
...we get this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0013.png]]&lt;br /&gt;
&lt;br /&gt;
... and the box doesn&#039;t do the weird &amp;quot;float&amp;quot; thing any more.  This &amp;quot;construction yard&amp;quot; technique is really handy, you just &amp;quot;build&amp;quot; your stuff smack in the middle of your map, then spin and shift it to where you want it (in the example above, it could have been shifted in x and y as well.  Just don&#039;t shift and then spin, or you will be back to having things &amp;quot;float&amp;quot; again.&lt;br /&gt;
&lt;br /&gt;
With shift and spin you can also work with groups and make a &amp;quot;master&amp;quot; group in the middle of your map, then shift and spin multiple copies to other locations on your map.&lt;/div&gt;</summary>
		<author><name>ClayOgre</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7368</id>
		<title>Map making by hand</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7368"/>
		<updated>2010-11-06T02:34:49Z</updated>

		<summary type="html">&lt;p&gt;ClayOgre: /* Transformations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoDoc|Major re-organization, transform away from &amp;quot;chat&amp;quot; style. Need to reference pages elsewhere on the wiki in place of much of the content which appears to be building up here.  Create them if necessary, or see the list [[Special:Allpages|here]].}}&lt;br /&gt;
Although there are a number of GUI options for creating maps such as BZ-Edit, 3D modelers, many map-makers use a basic text-editor.  There are many times when it is necessary to make small changes to a map, such as including objects that are unavailable in GUI map-maker, but there are also some who enjoy the challenge of creating a map entirely from scratch with a text-editor.&lt;br /&gt;
&lt;br /&gt;
==Text Editors==&lt;br /&gt;
Most text-editors designed for coding/programming are more than sufficient for editing bzw files.  Although word-processing programs such as Microsoft Word can be used, there are many cheaper (free) and more efficient programs designed specifically for coding. If you are interested in syntax highlighting, look at the [http://my.bzflag.org/bb/viewtopic.php?f=24&amp;amp;t=16037&amp;amp;p=148953 forum topic].&lt;br /&gt;
===Windows===&lt;br /&gt;
*Notepad&lt;br /&gt;
*PSPad&lt;br /&gt;
*NoteTab&lt;br /&gt;
*[http://notepad-plus-plus.org/ Notepad ++] - a tabbed editor based on Scite.&lt;br /&gt;
&lt;br /&gt;
===Mac===&lt;br /&gt;
*TextWrangler&lt;br /&gt;
*TextEdit&lt;br /&gt;
===Linux===&lt;br /&gt;
*Command-line editors such as nano, emacs, pico, vim, or ed.&lt;br /&gt;
*GEdit&lt;br /&gt;
*Kate&lt;br /&gt;
*Scite&lt;br /&gt;
&lt;br /&gt;
==Editing existing maps==&lt;br /&gt;
Beginning mapmakers should spend some time studying and making small changes in existing maps to see how things work.  In the client, maps can be saved for editing by joining the desired server and choosing: Options&amp;gt;Save World.  Maps can also be saved by issuing the /saveworld command.  The map should be a simple map when getting started.  One may find it easier to create a file in BZEdit and open the resulting file in the text-editor.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
If you have created a box in BZEdit you may see:&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
 world &lt;br /&gt;
   size 400 &lt;br /&gt;
 end &lt;br /&gt;
 options &lt;br /&gt;
   +r &lt;br /&gt;
   -j &lt;br /&gt;
   -set _tankSpeed 25 &lt;br /&gt;
   -ms 5 &lt;br /&gt;
   -mp 0,2,0,2,0,2 &lt;br /&gt;
 end &lt;br /&gt;
 box &lt;br /&gt;
   name box1 &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
 end &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===What that means===&lt;br /&gt;
&amp;quot;There are set variables that define various things such as how fast your tank is, how fast the bullets are, or if it&#039;s raining or foggy.  Put those in the options setting with &amp;quot;-set(space) &amp;quot; in front of it. You can also make those changes as an admin by using /set _variable (notice there is a space between the set and the _).  A full list of these settings can be found on the [[Server Variables]] page.  Other options, such as how many times a flag can be grabbed before it resets or if flags can land on buildings are explained [http://my.bzflag.org/bb/files/antigrav4teamconf_114.txt in this forum post]&lt;br /&gt;
Optionally, the variables can be placed in a separate configuration file and referenced when the server is started.&amp;quot;&lt;br /&gt;
&#039;&#039;&#039;old&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, it says:&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
(Note: the # sign is used for comments.)&lt;br /&gt;
&lt;br /&gt;
This is the text added by the application initially, kind of like advertising. This will be the first thing anyone sees when they look at the map.&lt;br /&gt;
&lt;br /&gt;
The next thing is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
world &lt;br /&gt;
  size 400 # Sets the world size to 400 (800 x 800 total)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is rather self-explanatory. It&#039;s the &amp;lt;size&amp;gt; of the &amp;lt;world&amp;gt; (The BZFlag arena).&lt;br /&gt;
&lt;br /&gt;
Next is an &amp;lt;options&amp;gt; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options &lt;br /&gt;
  +r   # Enable Ricochet&lt;br /&gt;
  -j   # Enable Jumping&lt;br /&gt;
  -set _tankSpeed 25  # Sets the tank speed to 25 bzunits/second&lt;br /&gt;
  -ms 5  # Sets the maximum shots (per tank) to 5&lt;br /&gt;
  -mp 0,2,0,2,0,2  # Maximum of 2 Red Players, 2 Blue Players, and 2 Observers&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This allows you to define in the map file certain options that are also available from the command line when you start the bzfs server, or in the optional server config file.  Options embedded into a world file will override those input on the command line or in a config file.&lt;br /&gt;
&lt;br /&gt;
The commands listed here are:&lt;br /&gt;
Ricochet, Jumping, Tank speed, Max Shots, and Max Players.&lt;br /&gt;
These are rather self explanatory, except for Max Players. Each number represents how many of each of the following team players are allowed in the game (in the order listed): Rogue, Red, Green, Blue, Purple, Observer. Each number defines the max number of players per category.&lt;br /&gt;
&lt;br /&gt;
For more, see [[Options_(object)|Options Object]].&lt;br /&gt;
&lt;br /&gt;
We now come to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
box &lt;br /&gt;
  name box1      # Generally unused&lt;br /&gt;
  position 0 0 0 # X Y Z Position&lt;br /&gt;
  size 10 10 10  # X Y Z Size (bzunits from the position of the box)&lt;br /&gt;
  rotation 0     # Rotation (in degrees)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is a &amp;lt;box&amp;gt; with a &amp;lt;name&amp;gt; of &amp;lt;box1&amp;gt;.&lt;br /&gt;
The &amp;lt;position&amp;gt; is 0,0,0 in R3[http://en.wikipedia.org/wiki/R3].&lt;br /&gt;
The rest is pretty self explanatory.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; EVERY STATEMENT MUST HAVE AN END.&lt;br /&gt;
&lt;br /&gt;
===Basic Definitions===&lt;br /&gt;
;Objects&lt;br /&gt;
:Objects are the basic building blocks of the bzw file.  Objects begin with a line declaring the object, some fields describing that object, and a line that closes the object (usually with &amp;quot;end&amp;quot;).  Each of these sections of the object is important.&lt;br /&gt;
;Comments&lt;br /&gt;
:BZFS ignores anything in a line following the #; the line has been &amp;quot;commented out.&amp;quot;  It is highly recommended that comments be used often, both for the mapmaker and for others that may see the map.&lt;br /&gt;
;3D Cartesian Coordinate System&lt;br /&gt;
:In most objects, you will see three numbers after position and size. These numbers are coordinates on a graph. The first number is the x coordinate (left and right) the middle number is the y coordinate (forward and backward) and the third number is the z coordinate (height and depth). Another way of thinking of it is: x = width, y = depth, z = height. (Those accustomed to the Y axis determining height will have to slightly adjust their thinking.) &lt;br /&gt;
&lt;br /&gt;
==Sample Objects==&lt;br /&gt;
===The Box===&lt;br /&gt;
Perhaps the simplest object is the box.  There is actually nothing special you can do to it (but in versions of BZFlag from 2.0.8 up, you can do a lot more to it).  Here is an example of a box:&lt;br /&gt;
&lt;br /&gt;
 box&lt;br /&gt;
   name box1             # Optional, but good to include&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   rotation 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the first line, notice the word &amp;quot;box&amp;quot;.  It simply says the next object is a box.  The next line is the name of the object.  It is defined with the syntax &amp;quot;&amp;lt;tt&amp;gt;name &#039;&#039;objectName&#039;&#039;&amp;lt;/tt&amp;gt;&amp;quot;.  It is not required, but is good to include (if you have a LOT of boxes, how do you know which is which?  Naming them--as well as other objects--helps you keep track).  The third line defines the position of the center of the bottom of the object.  The three arguments of &amp;lt;tt&amp;gt;position&amp;lt;/tt&amp;gt; are the x, y, and z coordinates of the box, respectively.  The x and y coordinates can be positive or negative, but the z coordinate should just be positive or zero.  On the fourth line, the size of the box is defined.  The arguments of &amp;lt;tt&amp;gt;size&amp;lt;/tt&amp;gt; are the x, y, and z sizes of the object, respectively.  The x and y arguments make the box that wide on both sides of it&#039;s position.  However, the z argument makes the object exactly the number of units tall as defined.  In other words, the box shown above, with a size of &#039;10 10 10&#039; is actually 20 units by 20 units by 10 units high, so if you want a box that is a perfect cube, you would need to make the height, or Z dimension, &#039;20&#039;. The next line just says how much the object is rotated.  This number is the number of degrees of rotation, and can be negative or positive.  The last line just tells BZFlag the object is done, and a new one can be defined.  Be sure to &#039;&#039;&#039;always&#039;&#039;&#039; use this.&lt;br /&gt;
&lt;br /&gt;
Below is an image of a box with a size of 5 5 10.&lt;br /&gt;
&lt;br /&gt;
[[Image:box.jpg]]&lt;br /&gt;
&lt;br /&gt;
===The Cone===&lt;br /&gt;
Most objects have similar parameters as the basic box.  For instance, the code for a cone may look something like this:&lt;br /&gt;
&lt;br /&gt;
 cone&lt;br /&gt;
   name cone1&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 20&lt;br /&gt;
   divisions 128&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Divisions basically decide how smooth the cone is.  The higher the divisions the more smooth the cone is.  A division of 4 would look like a pyramid.  Another parameter that can be added to the cone object is angle. If you say angle 180, that would make 1/2 of a cone, 90 would make 1/4 of a cone, and so on. &lt;br /&gt;
&lt;br /&gt;
===The Arc===&lt;br /&gt;
&lt;br /&gt;
An arc is basically a cylinder. However it doesn’t have to be a perfect cylinder depending on certain options you select. For an arc the only required options are divisions, position and size. Just like the cone divisions have the same effect, position and size are all the same. Once again you can have an oval shaped cylinder type thing. Now, you WILL find more options to an arc than to a cone, for example the ratio option. The ratio options let you basically put a hole in the cylinder. So if you have the option: ratio 1 you would have a full cylinder. If you say for example ratio .3 or any number less than 1 you will get a hole in the cylinder. The bigger the number, the smaller the hole. Angle allows you to do a semicircle. Rotation, once again, isn&#039;t really needed, unless you need a semicircle that has a certain specific orientation in your map. all the options like spin and shear are the same for this object too! phydrv and matref I’ll show later. &lt;br /&gt;
&lt;br /&gt;
The screenshot below shows three arcs.  The only difference between them is the inner radius number.  The first is set to 1, the second to .5, and the third to .1.  Notice how the texture on the top surface of the arc becomes &amp;quot;stretched&amp;quot; when the radius is less than one.&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0015.png]]&lt;br /&gt;
&lt;br /&gt;
Here is the code for the arc with the .1 ratio:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
arc&lt;br /&gt;
	divisions 16 # number of subdivisions&lt;br /&gt;
	angle 360 # the sweep angle&lt;br /&gt;
	ratio .1 # (outrad - inrad) / outrad&lt;br /&gt;
	position 0.0 -42 0.0&lt;br /&gt;
	size 10 10 1&lt;br /&gt;
	rotation 0.0&lt;br /&gt;
	shift 0 0 0 # (repeatable)&lt;br /&gt;
	scale 1 1 1 # (repeatable)&lt;br /&gt;
	shear 0 0 0 # (repeatable)&lt;br /&gt;
	smoothbounce # ricochets use normals&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now lets see what happens if we change the angle value.  The ones below use 60, 120, and 240.  This is where you would need to use rotate to get the arc oriented the way you want.&lt;br /&gt;
&lt;br /&gt;
[[Image:Arcs.jpg]]&lt;br /&gt;
&lt;br /&gt;
Here is the code for the 60 degree arc:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
arc&lt;br /&gt;
	divisions 16 # number of subdivisions&lt;br /&gt;
	angle 60 # the sweep angle&lt;br /&gt;
	ratio .5 # (outrad - inrad) / outrad&lt;br /&gt;
	position 0.0 0.0 0.0&lt;br /&gt;
	size 10 10 1&lt;br /&gt;
	rotation 0.0&lt;br /&gt;
	shift 0 0 0 # (repeatable)&lt;br /&gt;
	scale 1 1 1 # (repeatable)&lt;br /&gt;
	shear 0 0 0 # (repeatable)&lt;br /&gt;
	smoothbounce # ricochets use normals&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let’s move to the sphere:&lt;br /&gt;
&lt;br /&gt;
===The Sphere===&lt;br /&gt;
&lt;br /&gt;
The only options required to make a sphere are position, size, and divisions. &lt;br /&gt;
All these options do the same thing as they did in the objects above.  You may also have an oval like sphere.  You make an oval like sphere simply by making the x and y&#039;s different sizes just like in the cone and arc.  The radius option is just a substitute for size.  You can write size 10 10 10 or radius 10.  Both do the same thing. However if you want an oval shaped sphere you have to use size.  Rotation wouldn&#039;t really have an effect and the shear and spin works the same for this object.&lt;br /&gt;
&lt;br /&gt;
==Getting more help==&lt;br /&gt;
*The links at the bottom of the [[:Category:Map Making|Map Making]] page.&lt;br /&gt;
*The original creator of this page is flight, you can email him at dirtbikerdude_91@yahoo.com and he will be happy to answer any questions that he is capable of answering.&lt;br /&gt;
&lt;br /&gt;
==Special Objects==&lt;br /&gt;
There are certain objects that are often coded by hand because it is simpler or it is impossible to do with graphical map creation tools.  &lt;br /&gt;
&lt;br /&gt;
===Materials ===&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_bolt.png &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
Material is letting the computer know that a material is about to be explained to it.  You name it so that way you can reference it with the matref.  The name can be any thing you want as long as it does not have any spaces.  You type in &amp;lt;tt&amp;gt;addtexture&amp;lt;/tt&amp;gt; and you state a texture name.  Now, how do you know what texture names there are to use?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Linux&#039;&#039;&#039;: Running &amp;lt;tt&amp;gt;ls /usr/share/bzflag/*.png&amp;lt;/tt&amp;gt; in a terminal will show the list of pictures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Mac&#039;&#039;&#039;: If you control click (right click) on the bzflag icon, click show package contents, click contents, and click resources, those are the pictures you may use. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Windows&#039;&#039;&#039;: The default path is &amp;lt;tt&amp;gt;C:\Program Files\BZFlag\data\*.png&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What you will find are images that are used in every day games.  The top of a base, the wall of a base. A bullet which is blue_bolt.png (as was used above).  The full path to the texture needs to be used if the texture is not found in that directory.  Any customized textures should be uploaded to the [http://images.bzflag.org/submitimages/ BZFlag Image Submission System] before the map is hosted publicly.&lt;br /&gt;
&lt;br /&gt;
Servers running bzfs 2.0.8 and earlier will require &amp;quot;meshbox&amp;quot; and &amp;quot;meshpyr&amp;quot; in order to apply textures and physics to these objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instead of creating a new texture, many interesting and creative things can be done with the &amp;quot;diffuse&amp;quot; parameter in the material object.  You can add the diffuse command and it will look like this diffuse 1 1 1 1.  The first number is the amount of red that will be in the meshobject.  The second number is the amount of green, the third is the amount of blue.  So you can mix those colors to make more colors.  You may use a range from 0-1.  For example diffuse .3 .5 .26 1.  The fourth number determines the opacity or transparency (the see-throughability).  0 is invisible, .5 is half invisible, and 1 is normal. &lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   diffuse .5 .25 .1 .6 &lt;br /&gt;
   addtexture mesh.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Physics===&lt;br /&gt;
&lt;br /&gt;
The format of the physics driver is like this:&lt;br /&gt;
(note that not all the commands are used concurrently, there is no point in using a death driver with a linear driver, etc.)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
physics&lt;br /&gt;
  name example_phydrv&lt;br /&gt;
  linear 0.0 0.0 0.0 # x/y/z linear velocities&lt;br /&gt;
  angular 0.0 0.0 0.0 # rotation freq, x/y coordinates&lt;br /&gt;
  slide 0.0 # time until max velocity (&amp;gt; 0.0 enables)&lt;br /&gt;
  death Message goes here.&lt;br /&gt;
  # the &#039;death&#039; property requires a non-blank message&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Physics drivers subject your tank to external forces.  If you have ever played laser mania by Louman then you may have encountered on the outskirts of the map an object that you can jump on and you go really fast, that is a physics driver. Physics and materials are both similar in that you must first define them, and then apply them to an object.  When you define a mesh object (regular BXFlag objects, such as boxes can&#039;t use physics drivers) you can reference that physics driver by using the phydrv command just like you would use the matref command for materials.  There are different physics commands: Linear, Angular, Slide and Death.  The physics driver used in the Louman map mentioned above is a linear driver.  Linear physics makes your tank move in a line.  The numbers after a linear command are how much &amp;quot;force&amp;quot; is applied in a given axis x y z, and you can have force applied in more than one axis. The direction is NOT along the axis of the object you apply the physics driver to, but along the major world axis, so if your object is rotated 45 degrees, you would need to put values for both x and y in your physics driver.  45 degrees is fairly easy, but other angles would require figuring out the proportions needed to move the tank along an object rotated to a given angle, it can get a bit tricky.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   linear 50 0 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive x direction you may use -50 and it will make it go the other way.&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy2 &lt;br /&gt;
   linear 0 50 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive y direction:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy3 &lt;br /&gt;
   linear 0 0 50 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank jump (bounce) at a speed of 50:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy4 &lt;br /&gt;
   slide 5 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank basically feel like it&#039;s on ice.  Whichever way the tank is moving it will keep moving that way. &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy5 &lt;br /&gt;
   death haha! you died &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make the tank die when it touches the object that refers to this and the message haha! you died will be displayed to that person. &lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   death I like you better dead! &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   phydrv phy1                       # Or what ever you named the physics.&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is applied to an object in a manner similar to that of a material.  Both physics and materials must be created in the map file before they are referenced.  The example below illustrates incorrectly placing a material definition after it is referenced by the meshbox:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_team.png &lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
A group is cluster of objects that can be &amp;quot;gathered together&amp;quot; and treated as if they were a single object.  Certain things cannot be included in groups:&lt;br /&gt;
&lt;br /&gt;
*textureMatrix&lt;br /&gt;
&lt;br /&gt;
*dynamicColor&lt;br /&gt;
&lt;br /&gt;
*material&lt;br /&gt;
&lt;br /&gt;
*physics&lt;br /&gt;
&lt;br /&gt;
*links&lt;br /&gt;
&lt;br /&gt;
*weapon&lt;br /&gt;
&lt;br /&gt;
*zone&lt;br /&gt;
&lt;br /&gt;
Notice that while teleporters aren&#039;t excluded from groups, you can&#039;t create links to teleporters within a group, except for purely random ones using &amp;quot;*&amp;quot;(asterisk) for the link. (this may not be entirely accurate, Trepan at one point hinted that there is a way around this...)&lt;br /&gt;
&lt;br /&gt;
Groups can be nested (you can have a group that is included in another group).&lt;br /&gt;
&lt;br /&gt;
For example if a map editor is making a forest, and each tree contains 2 objects, the editor doesn&#039;t want to type up the code for each tree over and over again. What he can do is tell BZFS that these objects = tree. And then whenever he wants to make a tree he just calls that group, as shown below.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
First define a group of obects as a tree...&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  define tree&lt;br /&gt;
  &lt;br /&gt;
  box&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  size 2 2 4&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  pyramid&lt;br /&gt;
  position 0 0 3&lt;br /&gt;
  size 5 5 10&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  enddef&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...then, to call the &amp;quot;tree&amp;quot; group, just:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  group tree&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Transformations==&lt;br /&gt;
[[Category:Map Making]]&lt;br /&gt;
Transformations are simple ways of modifying objects so that maps have some variety. These can get complicated so I will only give you a sample of what they can do. There are 3 transformations shift, spin, and shear. You can find a more in depth page here: [[3d Transformations]]&lt;br /&gt;
&lt;br /&gt;
====Shift====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shift&#039;&#039;&#039; moves an object by the amount of units that you specify from its present position.&lt;br /&gt;
the object..&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at place 10 10 0&lt;br /&gt;
&lt;br /&gt;
while the object..&lt;br /&gt;
&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  shift 0 0 10&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at position 10 10 10.&lt;br /&gt;
&lt;br /&gt;
====Spin====&lt;br /&gt;
Spinning an object is just like rotating an object but can be on a different axis. (y and x)&lt;br /&gt;
When you rotate it is around the center of the object.&lt;br /&gt;
Remember: Only spin-able objects can be spun.&lt;br /&gt;
Here is what the code looks like:&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
 end&lt;br /&gt;
The meshbox will now be tilted 45 degrees on its y axis.&lt;br /&gt;
Spin code has four numbers, the first one is how many degrees to spin.&lt;br /&gt;
The last three are for which axis&#039;s to spin, by placing a value of more than 0.&lt;br /&gt;
Spin can be a bit tricky and unintuitive to use.  It is not exactly like rotate, because it is possible to &amp;quot;spin&amp;quot; something so that it ends up &amp;quot;underneath&amp;quot; the BZFlag playing field.&lt;br /&gt;
&lt;br /&gt;
Spin is often best used with shift.  Think of the center of your map as a sort of &amp;quot;construction yard&amp;quot;.  You position objects at location 0 0 0, then spin and shift them to the location you want.&lt;br /&gt;
&lt;br /&gt;
Here is what you get if you use the above code in a map:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0012.png]]&lt;br /&gt;
&lt;br /&gt;
Looks fairly normal in this screenshot, doesn&#039;t it.  But if you drive around, the box will behave oddly, and appear to &amp;quot;float&amp;quot; in front of your HUD.  What has happened is that the box hasn&#039;t rotated around it&#039;s own axis, but around the world axis for the whole BZFlag arena!  But if we add some code to shift the box up above the z plane, it will look normal in-game.&lt;br /&gt;
&lt;br /&gt;
So if we make a simple change to the above code and add a shift statement and shift the box up in z (this is not the z axis of the box, but the world axis of our game arena):&lt;br /&gt;
&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
   shift 0 0 10&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
...we get this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0013.png]]&lt;br /&gt;
&lt;br /&gt;
... and the box doesn&#039;t do the weird &amp;quot;float&amp;quot; thing any more.  This &amp;quot;construction yard&amp;quot; technique is really handy, you just &amp;quot;build&amp;quot; your stuff smack in the middle of your map, then spin and shift it to where you want it (in the example above, it could have been shifted in x and y as well.  Just don&#039;t shift and then spin, or you will be back to having things &amp;quot;float&amp;quot; again.&lt;br /&gt;
&lt;br /&gt;
With shift and spin you can also work with groups and make a &amp;quot;master&amp;quot; group in the middle of your map, then shift and spin multiple copies to other locations on your map.&lt;/div&gt;</summary>
		<author><name>ClayOgre</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7367</id>
		<title>Map making by hand</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7367"/>
		<updated>2010-11-06T02:33:49Z</updated>

		<summary type="html">&lt;p&gt;ClayOgre: /* Groups */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoDoc|Major re-organization, transform away from &amp;quot;chat&amp;quot; style. Need to reference pages elsewhere on the wiki in place of much of the content which appears to be building up here.  Create them if necessary, or see the list [[Special:Allpages|here]].}}&lt;br /&gt;
Although there are a number of GUI options for creating maps such as BZ-Edit, 3D modelers, many map-makers use a basic text-editor.  There are many times when it is necessary to make small changes to a map, such as including objects that are unavailable in GUI map-maker, but there are also some who enjoy the challenge of creating a map entirely from scratch with a text-editor.&lt;br /&gt;
&lt;br /&gt;
==Text Editors==&lt;br /&gt;
Most text-editors designed for coding/programming are more than sufficient for editing bzw files.  Although word-processing programs such as Microsoft Word can be used, there are many cheaper (free) and more efficient programs designed specifically for coding. If you are interested in syntax highlighting, look at the [http://my.bzflag.org/bb/viewtopic.php?f=24&amp;amp;t=16037&amp;amp;p=148953 forum topic].&lt;br /&gt;
===Windows===&lt;br /&gt;
*Notepad&lt;br /&gt;
*PSPad&lt;br /&gt;
*NoteTab&lt;br /&gt;
*[http://notepad-plus-plus.org/ Notepad ++] - a tabbed editor based on Scite.&lt;br /&gt;
&lt;br /&gt;
===Mac===&lt;br /&gt;
*TextWrangler&lt;br /&gt;
*TextEdit&lt;br /&gt;
===Linux===&lt;br /&gt;
*Command-line editors such as nano, emacs, pico, vim, or ed.&lt;br /&gt;
*GEdit&lt;br /&gt;
*Kate&lt;br /&gt;
*Scite&lt;br /&gt;
&lt;br /&gt;
==Editing existing maps==&lt;br /&gt;
Beginning mapmakers should spend some time studying and making small changes in existing maps to see how things work.  In the client, maps can be saved for editing by joining the desired server and choosing: Options&amp;gt;Save World.  Maps can also be saved by issuing the /saveworld command.  The map should be a simple map when getting started.  One may find it easier to create a file in BZEdit and open the resulting file in the text-editor.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
If you have created a box in BZEdit you may see:&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
 world &lt;br /&gt;
   size 400 &lt;br /&gt;
 end &lt;br /&gt;
 options &lt;br /&gt;
   +r &lt;br /&gt;
   -j &lt;br /&gt;
   -set _tankSpeed 25 &lt;br /&gt;
   -ms 5 &lt;br /&gt;
   -mp 0,2,0,2,0,2 &lt;br /&gt;
 end &lt;br /&gt;
 box &lt;br /&gt;
   name box1 &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
 end &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===What that means===&lt;br /&gt;
&amp;quot;There are set variables that define various things such as how fast your tank is, how fast the bullets are, or if it&#039;s raining or foggy.  Put those in the options setting with &amp;quot;-set(space) &amp;quot; in front of it. You can also make those changes as an admin by using /set _variable (notice there is a space between the set and the _).  A full list of these settings can be found on the [[Server Variables]] page.  Other options, such as how many times a flag can be grabbed before it resets or if flags can land on buildings are explained [http://my.bzflag.org/bb/files/antigrav4teamconf_114.txt in this forum post]&lt;br /&gt;
Optionally, the variables can be placed in a separate configuration file and referenced when the server is started.&amp;quot;&lt;br /&gt;
&#039;&#039;&#039;old&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, it says:&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
(Note: the # sign is used for comments.)&lt;br /&gt;
&lt;br /&gt;
This is the text added by the application initially, kind of like advertising. This will be the first thing anyone sees when they look at the map.&lt;br /&gt;
&lt;br /&gt;
The next thing is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
world &lt;br /&gt;
  size 400 # Sets the world size to 400 (800 x 800 total)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is rather self-explanatory. It&#039;s the &amp;lt;size&amp;gt; of the &amp;lt;world&amp;gt; (The BZFlag arena).&lt;br /&gt;
&lt;br /&gt;
Next is an &amp;lt;options&amp;gt; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options &lt;br /&gt;
  +r   # Enable Ricochet&lt;br /&gt;
  -j   # Enable Jumping&lt;br /&gt;
  -set _tankSpeed 25  # Sets the tank speed to 25 bzunits/second&lt;br /&gt;
  -ms 5  # Sets the maximum shots (per tank) to 5&lt;br /&gt;
  -mp 0,2,0,2,0,2  # Maximum of 2 Red Players, 2 Blue Players, and 2 Observers&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This allows you to define in the map file certain options that are also available from the command line when you start the bzfs server, or in the optional server config file.  Options embedded into a world file will override those input on the command line or in a config file.&lt;br /&gt;
&lt;br /&gt;
The commands listed here are:&lt;br /&gt;
Ricochet, Jumping, Tank speed, Max Shots, and Max Players.&lt;br /&gt;
These are rather self explanatory, except for Max Players. Each number represents how many of each of the following team players are allowed in the game (in the order listed): Rogue, Red, Green, Blue, Purple, Observer. Each number defines the max number of players per category.&lt;br /&gt;
&lt;br /&gt;
For more, see [[Options_(object)|Options Object]].&lt;br /&gt;
&lt;br /&gt;
We now come to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
box &lt;br /&gt;
  name box1      # Generally unused&lt;br /&gt;
  position 0 0 0 # X Y Z Position&lt;br /&gt;
  size 10 10 10  # X Y Z Size (bzunits from the position of the box)&lt;br /&gt;
  rotation 0     # Rotation (in degrees)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is a &amp;lt;box&amp;gt; with a &amp;lt;name&amp;gt; of &amp;lt;box1&amp;gt;.&lt;br /&gt;
The &amp;lt;position&amp;gt; is 0,0,0 in R3[http://en.wikipedia.org/wiki/R3].&lt;br /&gt;
The rest is pretty self explanatory.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; EVERY STATEMENT MUST HAVE AN END.&lt;br /&gt;
&lt;br /&gt;
===Basic Definitions===&lt;br /&gt;
;Objects&lt;br /&gt;
:Objects are the basic building blocks of the bzw file.  Objects begin with a line declaring the object, some fields describing that object, and a line that closes the object (usually with &amp;quot;end&amp;quot;).  Each of these sections of the object is important.&lt;br /&gt;
;Comments&lt;br /&gt;
:BZFS ignores anything in a line following the #; the line has been &amp;quot;commented out.&amp;quot;  It is highly recommended that comments be used often, both for the mapmaker and for others that may see the map.&lt;br /&gt;
;3D Cartesian Coordinate System&lt;br /&gt;
:In most objects, you will see three numbers after position and size. These numbers are coordinates on a graph. The first number is the x coordinate (left and right) the middle number is the y coordinate (forward and backward) and the third number is the z coordinate (height and depth). Another way of thinking of it is: x = width, y = depth, z = height. (Those accustomed to the Y axis determining height will have to slightly adjust their thinking.) &lt;br /&gt;
&lt;br /&gt;
==Sample Objects==&lt;br /&gt;
===The Box===&lt;br /&gt;
Perhaps the simplest object is the box.  There is actually nothing special you can do to it (but in versions of BZFlag from 2.0.8 up, you can do a lot more to it).  Here is an example of a box:&lt;br /&gt;
&lt;br /&gt;
 box&lt;br /&gt;
   name box1             # Optional, but good to include&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   rotation 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the first line, notice the word &amp;quot;box&amp;quot;.  It simply says the next object is a box.  The next line is the name of the object.  It is defined with the syntax &amp;quot;&amp;lt;tt&amp;gt;name &#039;&#039;objectName&#039;&#039;&amp;lt;/tt&amp;gt;&amp;quot;.  It is not required, but is good to include (if you have a LOT of boxes, how do you know which is which?  Naming them--as well as other objects--helps you keep track).  The third line defines the position of the center of the bottom of the object.  The three arguments of &amp;lt;tt&amp;gt;position&amp;lt;/tt&amp;gt; are the x, y, and z coordinates of the box, respectively.  The x and y coordinates can be positive or negative, but the z coordinate should just be positive or zero.  On the fourth line, the size of the box is defined.  The arguments of &amp;lt;tt&amp;gt;size&amp;lt;/tt&amp;gt; are the x, y, and z sizes of the object, respectively.  The x and y arguments make the box that wide on both sides of it&#039;s position.  However, the z argument makes the object exactly the number of units tall as defined.  In other words, the box shown above, with a size of &#039;10 10 10&#039; is actually 20 units by 20 units by 10 units high, so if you want a box that is a perfect cube, you would need to make the height, or Z dimension, &#039;20&#039;. The next line just says how much the object is rotated.  This number is the number of degrees of rotation, and can be negative or positive.  The last line just tells BZFlag the object is done, and a new one can be defined.  Be sure to &#039;&#039;&#039;always&#039;&#039;&#039; use this.&lt;br /&gt;
&lt;br /&gt;
Below is an image of a box with a size of 5 5 10.&lt;br /&gt;
&lt;br /&gt;
[[Image:box.jpg]]&lt;br /&gt;
&lt;br /&gt;
===The Cone===&lt;br /&gt;
Most objects have similar parameters as the basic box.  For instance, the code for a cone may look something like this:&lt;br /&gt;
&lt;br /&gt;
 cone&lt;br /&gt;
   name cone1&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 20&lt;br /&gt;
   divisions 128&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Divisions basically decide how smooth the cone is.  The higher the divisions the more smooth the cone is.  A division of 4 would look like a pyramid.  Another parameter that can be added to the cone object is angle. If you say angle 180, that would make 1/2 of a cone, 90 would make 1/4 of a cone, and so on. &lt;br /&gt;
&lt;br /&gt;
===The Arc===&lt;br /&gt;
&lt;br /&gt;
An arc is basically a cylinder. However it doesn’t have to be a perfect cylinder depending on certain options you select. For an arc the only required options are divisions, position and size. Just like the cone divisions have the same effect, position and size are all the same. Once again you can have an oval shaped cylinder type thing. Now, you WILL find more options to an arc than to a cone, for example the ratio option. The ratio options let you basically put a hole in the cylinder. So if you have the option: ratio 1 you would have a full cylinder. If you say for example ratio .3 or any number less than 1 you will get a hole in the cylinder. The bigger the number, the smaller the hole. Angle allows you to do a semicircle. Rotation, once again, isn&#039;t really needed, unless you need a semicircle that has a certain specific orientation in your map. all the options like spin and shear are the same for this object too! phydrv and matref I’ll show later. &lt;br /&gt;
&lt;br /&gt;
The screenshot below shows three arcs.  The only difference between them is the inner radius number.  The first is set to 1, the second to .5, and the third to .1.  Notice how the texture on the top surface of the arc becomes &amp;quot;stretched&amp;quot; when the radius is less than one.&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0015.png]]&lt;br /&gt;
&lt;br /&gt;
Here is the code for the arc with the .1 ratio:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
arc&lt;br /&gt;
	divisions 16 # number of subdivisions&lt;br /&gt;
	angle 360 # the sweep angle&lt;br /&gt;
	ratio .1 # (outrad - inrad) / outrad&lt;br /&gt;
	position 0.0 -42 0.0&lt;br /&gt;
	size 10 10 1&lt;br /&gt;
	rotation 0.0&lt;br /&gt;
	shift 0 0 0 # (repeatable)&lt;br /&gt;
	scale 1 1 1 # (repeatable)&lt;br /&gt;
	shear 0 0 0 # (repeatable)&lt;br /&gt;
	smoothbounce # ricochets use normals&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now lets see what happens if we change the angle value.  The ones below use 60, 120, and 240.  This is where you would need to use rotate to get the arc oriented the way you want.&lt;br /&gt;
&lt;br /&gt;
[[Image:Arcs.jpg]]&lt;br /&gt;
&lt;br /&gt;
Here is the code for the 60 degree arc:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
arc&lt;br /&gt;
	divisions 16 # number of subdivisions&lt;br /&gt;
	angle 60 # the sweep angle&lt;br /&gt;
	ratio .5 # (outrad - inrad) / outrad&lt;br /&gt;
	position 0.0 0.0 0.0&lt;br /&gt;
	size 10 10 1&lt;br /&gt;
	rotation 0.0&lt;br /&gt;
	shift 0 0 0 # (repeatable)&lt;br /&gt;
	scale 1 1 1 # (repeatable)&lt;br /&gt;
	shear 0 0 0 # (repeatable)&lt;br /&gt;
	smoothbounce # ricochets use normals&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let’s move to the sphere:&lt;br /&gt;
&lt;br /&gt;
===The Sphere===&lt;br /&gt;
&lt;br /&gt;
The only options required to make a sphere are position, size, and divisions. &lt;br /&gt;
All these options do the same thing as they did in the objects above.  You may also have an oval like sphere.  You make an oval like sphere simply by making the x and y&#039;s different sizes just like in the cone and arc.  The radius option is just a substitute for size.  You can write size 10 10 10 or radius 10.  Both do the same thing. However if you want an oval shaped sphere you have to use size.  Rotation wouldn&#039;t really have an effect and the shear and spin works the same for this object.&lt;br /&gt;
&lt;br /&gt;
==Getting more help==&lt;br /&gt;
*The links at the bottom of the [[:Category:Map Making|Map Making]] page.&lt;br /&gt;
*The original creator of this page is flight, you can email him at dirtbikerdude_91@yahoo.com and he will be happy to answer any questions that he is capable of answering.&lt;br /&gt;
&lt;br /&gt;
==Special Objects==&lt;br /&gt;
There are certain objects that are often coded by hand because it is simpler or it is impossible to do with graphical map creation tools.  &lt;br /&gt;
&lt;br /&gt;
===Materials ===&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_bolt.png &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
Material is letting the computer know that a material is about to be explained to it.  You name it so that way you can reference it with the matref.  The name can be any thing you want as long as it does not have any spaces.  You type in &amp;lt;tt&amp;gt;addtexture&amp;lt;/tt&amp;gt; and you state a texture name.  Now, how do you know what texture names there are to use?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Linux&#039;&#039;&#039;: Running &amp;lt;tt&amp;gt;ls /usr/share/bzflag/*.png&amp;lt;/tt&amp;gt; in a terminal will show the list of pictures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Mac&#039;&#039;&#039;: If you control click (right click) on the bzflag icon, click show package contents, click contents, and click resources, those are the pictures you may use. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Windows&#039;&#039;&#039;: The default path is &amp;lt;tt&amp;gt;C:\Program Files\BZFlag\data\*.png&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What you will find are images that are used in every day games.  The top of a base, the wall of a base. A bullet which is blue_bolt.png (as was used above).  The full path to the texture needs to be used if the texture is not found in that directory.  Any customized textures should be uploaded to the [http://images.bzflag.org/submitimages/ BZFlag Image Submission System] before the map is hosted publicly.&lt;br /&gt;
&lt;br /&gt;
Servers running bzfs 2.0.8 and earlier will require &amp;quot;meshbox&amp;quot; and &amp;quot;meshpyr&amp;quot; in order to apply textures and physics to these objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instead of creating a new texture, many interesting and creative things can be done with the &amp;quot;diffuse&amp;quot; parameter in the material object.  You can add the diffuse command and it will look like this diffuse 1 1 1 1.  The first number is the amount of red that will be in the meshobject.  The second number is the amount of green, the third is the amount of blue.  So you can mix those colors to make more colors.  You may use a range from 0-1.  For example diffuse .3 .5 .26 1.  The fourth number determines the opacity or transparency (the see-throughability).  0 is invisible, .5 is half invisible, and 1 is normal. &lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   diffuse .5 .25 .1 .6 &lt;br /&gt;
   addtexture mesh.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Physics===&lt;br /&gt;
&lt;br /&gt;
The format of the physics driver is like this:&lt;br /&gt;
(note that not all the commands are used concurrently, there is no point in using a death driver with a linear driver, etc.)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
physics&lt;br /&gt;
  name example_phydrv&lt;br /&gt;
  linear 0.0 0.0 0.0 # x/y/z linear velocities&lt;br /&gt;
  angular 0.0 0.0 0.0 # rotation freq, x/y coordinates&lt;br /&gt;
  slide 0.0 # time until max velocity (&amp;gt; 0.0 enables)&lt;br /&gt;
  death Message goes here.&lt;br /&gt;
  # the &#039;death&#039; property requires a non-blank message&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Physics drivers subject your tank to external forces.  If you have ever played laser mania by Louman then you may have encountered on the outskirts of the map an object that you can jump on and you go really fast, that is a physics driver. Physics and materials are both similar in that you must first define them, and then apply them to an object.  When you define a mesh object (regular BXFlag objects, such as boxes can&#039;t use physics drivers) you can reference that physics driver by using the phydrv command just like you would use the matref command for materials.  There are different physics commands: Linear, Angular, Slide and Death.  The physics driver used in the Louman map mentioned above is a linear driver.  Linear physics makes your tank move in a line.  The numbers after a linear command are how much &amp;quot;force&amp;quot; is applied in a given axis x y z, and you can have force applied in more than one axis. The direction is NOT along the axis of the object you apply the physics driver to, but along the major world axis, so if your object is rotated 45 degrees, you would need to put values for both x and y in your physics driver.  45 degrees is fairly easy, but other angles would require figuring out the proportions needed to move the tank along an object rotated to a given angle, it can get a bit tricky.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   linear 50 0 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive x direction you may use -50 and it will make it go the other way.&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy2 &lt;br /&gt;
   linear 0 50 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive y direction:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy3 &lt;br /&gt;
   linear 0 0 50 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank jump (bounce) at a speed of 50:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy4 &lt;br /&gt;
   slide 5 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank basically feel like it&#039;s on ice.  Whichever way the tank is moving it will keep moving that way. &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy5 &lt;br /&gt;
   death haha! you died &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make the tank die when it touches the object that refers to this and the message haha! you died will be displayed to that person. &lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   death I like you better dead! &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   phydrv phy1                       # Or what ever you named the physics.&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is applied to an object in a manner similar to that of a material.  Both physics and materials must be created in the map file before they are referenced.  The example below illustrates incorrectly placing a material definition after it is referenced by the meshbox:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_team.png &lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
A group is cluster of objects that can be &amp;quot;gathered together&amp;quot; and treated as if they were a single object.  Certain things cannot be included in groups:&lt;br /&gt;
&lt;br /&gt;
*textureMatrix&lt;br /&gt;
&lt;br /&gt;
*dynamicColor&lt;br /&gt;
&lt;br /&gt;
*material&lt;br /&gt;
&lt;br /&gt;
*physics&lt;br /&gt;
&lt;br /&gt;
*links&lt;br /&gt;
&lt;br /&gt;
*weapon&lt;br /&gt;
&lt;br /&gt;
*zone&lt;br /&gt;
&lt;br /&gt;
Notice that while teleporters aren&#039;t excluded from groups, you can&#039;t create links to teleporters within a group, except for purely random ones using &amp;quot;*&amp;quot;(asterisk) for the link. (this may not be entirely accurate, Trepan at one point hinted that there is a way around this...)&lt;br /&gt;
&lt;br /&gt;
Groups can be nested (you can have a group that is included in another group).&lt;br /&gt;
&lt;br /&gt;
For example if a map editor is making a forest, and each tree contains 2 objects, the editor doesn&#039;t want to type up the code for each tree over and over again. What he can do is tell BZFS that these objects = tree. And then whenever he wants to make a tree he just calls that group, as shown below.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
First define a group of obects as a tree...&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  define tree&lt;br /&gt;
  &lt;br /&gt;
  box&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  size 2 2 4&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  pyramid&lt;br /&gt;
  position 0 0 3&lt;br /&gt;
  size 5 5 10&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  enddef&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...then, to call the &amp;quot;tree&amp;quot; group, just:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  group tree&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Transformations==&lt;br /&gt;
[[Category:Map Making]]&lt;br /&gt;
Transformations are simple ways of modifying objects so that maps have some variety. These can get complicated so I will only give you a sample of what they can do. There are 3 transformations shift, spin, and shear. You can find a different also helpful page here [[3d Transformations]]&lt;br /&gt;
&lt;br /&gt;
====Shift====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shift&#039;&#039;&#039; moves an object by the amount of units that you specify from its present position.&lt;br /&gt;
the object..&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at place 10 10 0&lt;br /&gt;
&lt;br /&gt;
while the object..&lt;br /&gt;
&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  shift 0 0 10&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at position 10 10 10.&lt;br /&gt;
&lt;br /&gt;
====Spin====&lt;br /&gt;
Spinning an object is just like rotating an object but can be on a different axis. (y and x)&lt;br /&gt;
When you rotate it is around the center of the object.&lt;br /&gt;
Remember: Only spin-able objects can be spun.&lt;br /&gt;
Here is what the code looks like:&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
 end&lt;br /&gt;
The meshbox will now be tilted 45 degrees on its y axis.&lt;br /&gt;
Spin code has four numbers, the first one is how many degrees to spin.&lt;br /&gt;
The last three are for which axis&#039;s to spin, by placing a value of more than 0.&lt;br /&gt;
Spin can be a bit tricky and unintuitive to use.  It is not exactly like rotate, because it is possible to &amp;quot;spin&amp;quot; something so that it ends up &amp;quot;underneath&amp;quot; the BZFlag playing field.&lt;br /&gt;
&lt;br /&gt;
Spin is often best used with shift.  Think of the center of your map as a sort of &amp;quot;construction yard&amp;quot;.  You position objects at location 0 0 0, then spin and shift them to the location you want.&lt;br /&gt;
&lt;br /&gt;
Here is what you get if you use the above code in a map:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0012.png]]&lt;br /&gt;
&lt;br /&gt;
Looks fairly normal in this screenshot, doesn&#039;t it.  But if you drive around, the box will behave oddly, and appear to &amp;quot;float&amp;quot; in front of your HUD.  What has happened is that the box hasn&#039;t rotated around it&#039;s own axis, but around the world axis for the whole BZFlag arena!  But if we add some code to shift the box up above the z plane, it will look normal in-game.&lt;br /&gt;
&lt;br /&gt;
So if we make a simple change to the above code and add a shift statement and shift the box up in z (this is not the z axis of the box, but the world axis of our game arena):&lt;br /&gt;
&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
   shift 0 0 10&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
...we get this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0013.png]]&lt;br /&gt;
&lt;br /&gt;
... and the box doesn&#039;t do the weird &amp;quot;float&amp;quot; thing any more.  This &amp;quot;construction yard&amp;quot; technique is really handy, you just &amp;quot;build&amp;quot; your stuff smack in the middle of your map, then spin and shift it to where you want it (in the example above, it could have been shifted in x and y as well.  Just don&#039;t shift and then spin, or you will be back to having things &amp;quot;float&amp;quot; again.&lt;br /&gt;
&lt;br /&gt;
With shift and spin you can also work with groups and make a &amp;quot;master&amp;quot; group in the middle of your map, then shift and spin multiple copies to other locations on your map.&lt;/div&gt;</summary>
		<author><name>ClayOgre</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7366</id>
		<title>Map making by hand</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7366"/>
		<updated>2010-11-06T02:32:45Z</updated>

		<summary type="html">&lt;p&gt;ClayOgre: /* Physics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoDoc|Major re-organization, transform away from &amp;quot;chat&amp;quot; style. Need to reference pages elsewhere on the wiki in place of much of the content which appears to be building up here.  Create them if necessary, or see the list [[Special:Allpages|here]].}}&lt;br /&gt;
Although there are a number of GUI options for creating maps such as BZ-Edit, 3D modelers, many map-makers use a basic text-editor.  There are many times when it is necessary to make small changes to a map, such as including objects that are unavailable in GUI map-maker, but there are also some who enjoy the challenge of creating a map entirely from scratch with a text-editor.&lt;br /&gt;
&lt;br /&gt;
==Text Editors==&lt;br /&gt;
Most text-editors designed for coding/programming are more than sufficient for editing bzw files.  Although word-processing programs such as Microsoft Word can be used, there are many cheaper (free) and more efficient programs designed specifically for coding. If you are interested in syntax highlighting, look at the [http://my.bzflag.org/bb/viewtopic.php?f=24&amp;amp;t=16037&amp;amp;p=148953 forum topic].&lt;br /&gt;
===Windows===&lt;br /&gt;
*Notepad&lt;br /&gt;
*PSPad&lt;br /&gt;
*NoteTab&lt;br /&gt;
*[http://notepad-plus-plus.org/ Notepad ++] - a tabbed editor based on Scite.&lt;br /&gt;
&lt;br /&gt;
===Mac===&lt;br /&gt;
*TextWrangler&lt;br /&gt;
*TextEdit&lt;br /&gt;
===Linux===&lt;br /&gt;
*Command-line editors such as nano, emacs, pico, vim, or ed.&lt;br /&gt;
*GEdit&lt;br /&gt;
*Kate&lt;br /&gt;
*Scite&lt;br /&gt;
&lt;br /&gt;
==Editing existing maps==&lt;br /&gt;
Beginning mapmakers should spend some time studying and making small changes in existing maps to see how things work.  In the client, maps can be saved for editing by joining the desired server and choosing: Options&amp;gt;Save World.  Maps can also be saved by issuing the /saveworld command.  The map should be a simple map when getting started.  One may find it easier to create a file in BZEdit and open the resulting file in the text-editor.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
If you have created a box in BZEdit you may see:&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
 world &lt;br /&gt;
   size 400 &lt;br /&gt;
 end &lt;br /&gt;
 options &lt;br /&gt;
   +r &lt;br /&gt;
   -j &lt;br /&gt;
   -set _tankSpeed 25 &lt;br /&gt;
   -ms 5 &lt;br /&gt;
   -mp 0,2,0,2,0,2 &lt;br /&gt;
 end &lt;br /&gt;
 box &lt;br /&gt;
   name box1 &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
 end &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===What that means===&lt;br /&gt;
&amp;quot;There are set variables that define various things such as how fast your tank is, how fast the bullets are, or if it&#039;s raining or foggy.  Put those in the options setting with &amp;quot;-set(space) &amp;quot; in front of it. You can also make those changes as an admin by using /set _variable (notice there is a space between the set and the _).  A full list of these settings can be found on the [[Server Variables]] page.  Other options, such as how many times a flag can be grabbed before it resets or if flags can land on buildings are explained [http://my.bzflag.org/bb/files/antigrav4teamconf_114.txt in this forum post]&lt;br /&gt;
Optionally, the variables can be placed in a separate configuration file and referenced when the server is started.&amp;quot;&lt;br /&gt;
&#039;&#039;&#039;old&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, it says:&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
(Note: the # sign is used for comments.)&lt;br /&gt;
&lt;br /&gt;
This is the text added by the application initially, kind of like advertising. This will be the first thing anyone sees when they look at the map.&lt;br /&gt;
&lt;br /&gt;
The next thing is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
world &lt;br /&gt;
  size 400 # Sets the world size to 400 (800 x 800 total)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is rather self-explanatory. It&#039;s the &amp;lt;size&amp;gt; of the &amp;lt;world&amp;gt; (The BZFlag arena).&lt;br /&gt;
&lt;br /&gt;
Next is an &amp;lt;options&amp;gt; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options &lt;br /&gt;
  +r   # Enable Ricochet&lt;br /&gt;
  -j   # Enable Jumping&lt;br /&gt;
  -set _tankSpeed 25  # Sets the tank speed to 25 bzunits/second&lt;br /&gt;
  -ms 5  # Sets the maximum shots (per tank) to 5&lt;br /&gt;
  -mp 0,2,0,2,0,2  # Maximum of 2 Red Players, 2 Blue Players, and 2 Observers&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This allows you to define in the map file certain options that are also available from the command line when you start the bzfs server, or in the optional server config file.  Options embedded into a world file will override those input on the command line or in a config file.&lt;br /&gt;
&lt;br /&gt;
The commands listed here are:&lt;br /&gt;
Ricochet, Jumping, Tank speed, Max Shots, and Max Players.&lt;br /&gt;
These are rather self explanatory, except for Max Players. Each number represents how many of each of the following team players are allowed in the game (in the order listed): Rogue, Red, Green, Blue, Purple, Observer. Each number defines the max number of players per category.&lt;br /&gt;
&lt;br /&gt;
For more, see [[Options_(object)|Options Object]].&lt;br /&gt;
&lt;br /&gt;
We now come to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
box &lt;br /&gt;
  name box1      # Generally unused&lt;br /&gt;
  position 0 0 0 # X Y Z Position&lt;br /&gt;
  size 10 10 10  # X Y Z Size (bzunits from the position of the box)&lt;br /&gt;
  rotation 0     # Rotation (in degrees)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is a &amp;lt;box&amp;gt; with a &amp;lt;name&amp;gt; of &amp;lt;box1&amp;gt;.&lt;br /&gt;
The &amp;lt;position&amp;gt; is 0,0,0 in R3[http://en.wikipedia.org/wiki/R3].&lt;br /&gt;
The rest is pretty self explanatory.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; EVERY STATEMENT MUST HAVE AN END.&lt;br /&gt;
&lt;br /&gt;
===Basic Definitions===&lt;br /&gt;
;Objects&lt;br /&gt;
:Objects are the basic building blocks of the bzw file.  Objects begin with a line declaring the object, some fields describing that object, and a line that closes the object (usually with &amp;quot;end&amp;quot;).  Each of these sections of the object is important.&lt;br /&gt;
;Comments&lt;br /&gt;
:BZFS ignores anything in a line following the #; the line has been &amp;quot;commented out.&amp;quot;  It is highly recommended that comments be used often, both for the mapmaker and for others that may see the map.&lt;br /&gt;
;3D Cartesian Coordinate System&lt;br /&gt;
:In most objects, you will see three numbers after position and size. These numbers are coordinates on a graph. The first number is the x coordinate (left and right) the middle number is the y coordinate (forward and backward) and the third number is the z coordinate (height and depth). Another way of thinking of it is: x = width, y = depth, z = height. (Those accustomed to the Y axis determining height will have to slightly adjust their thinking.) &lt;br /&gt;
&lt;br /&gt;
==Sample Objects==&lt;br /&gt;
===The Box===&lt;br /&gt;
Perhaps the simplest object is the box.  There is actually nothing special you can do to it (but in versions of BZFlag from 2.0.8 up, you can do a lot more to it).  Here is an example of a box:&lt;br /&gt;
&lt;br /&gt;
 box&lt;br /&gt;
   name box1             # Optional, but good to include&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   rotation 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the first line, notice the word &amp;quot;box&amp;quot;.  It simply says the next object is a box.  The next line is the name of the object.  It is defined with the syntax &amp;quot;&amp;lt;tt&amp;gt;name &#039;&#039;objectName&#039;&#039;&amp;lt;/tt&amp;gt;&amp;quot;.  It is not required, but is good to include (if you have a LOT of boxes, how do you know which is which?  Naming them--as well as other objects--helps you keep track).  The third line defines the position of the center of the bottom of the object.  The three arguments of &amp;lt;tt&amp;gt;position&amp;lt;/tt&amp;gt; are the x, y, and z coordinates of the box, respectively.  The x and y coordinates can be positive or negative, but the z coordinate should just be positive or zero.  On the fourth line, the size of the box is defined.  The arguments of &amp;lt;tt&amp;gt;size&amp;lt;/tt&amp;gt; are the x, y, and z sizes of the object, respectively.  The x and y arguments make the box that wide on both sides of it&#039;s position.  However, the z argument makes the object exactly the number of units tall as defined.  In other words, the box shown above, with a size of &#039;10 10 10&#039; is actually 20 units by 20 units by 10 units high, so if you want a box that is a perfect cube, you would need to make the height, or Z dimension, &#039;20&#039;. The next line just says how much the object is rotated.  This number is the number of degrees of rotation, and can be negative or positive.  The last line just tells BZFlag the object is done, and a new one can be defined.  Be sure to &#039;&#039;&#039;always&#039;&#039;&#039; use this.&lt;br /&gt;
&lt;br /&gt;
Below is an image of a box with a size of 5 5 10.&lt;br /&gt;
&lt;br /&gt;
[[Image:box.jpg]]&lt;br /&gt;
&lt;br /&gt;
===The Cone===&lt;br /&gt;
Most objects have similar parameters as the basic box.  For instance, the code for a cone may look something like this:&lt;br /&gt;
&lt;br /&gt;
 cone&lt;br /&gt;
   name cone1&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 20&lt;br /&gt;
   divisions 128&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Divisions basically decide how smooth the cone is.  The higher the divisions the more smooth the cone is.  A division of 4 would look like a pyramid.  Another parameter that can be added to the cone object is angle. If you say angle 180, that would make 1/2 of a cone, 90 would make 1/4 of a cone, and so on. &lt;br /&gt;
&lt;br /&gt;
===The Arc===&lt;br /&gt;
&lt;br /&gt;
An arc is basically a cylinder. However it doesn’t have to be a perfect cylinder depending on certain options you select. For an arc the only required options are divisions, position and size. Just like the cone divisions have the same effect, position and size are all the same. Once again you can have an oval shaped cylinder type thing. Now, you WILL find more options to an arc than to a cone, for example the ratio option. The ratio options let you basically put a hole in the cylinder. So if you have the option: ratio 1 you would have a full cylinder. If you say for example ratio .3 or any number less than 1 you will get a hole in the cylinder. The bigger the number, the smaller the hole. Angle allows you to do a semicircle. Rotation, once again, isn&#039;t really needed, unless you need a semicircle that has a certain specific orientation in your map. all the options like spin and shear are the same for this object too! phydrv and matref I’ll show later. &lt;br /&gt;
&lt;br /&gt;
The screenshot below shows three arcs.  The only difference between them is the inner radius number.  The first is set to 1, the second to .5, and the third to .1.  Notice how the texture on the top surface of the arc becomes &amp;quot;stretched&amp;quot; when the radius is less than one.&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0015.png]]&lt;br /&gt;
&lt;br /&gt;
Here is the code for the arc with the .1 ratio:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
arc&lt;br /&gt;
	divisions 16 # number of subdivisions&lt;br /&gt;
	angle 360 # the sweep angle&lt;br /&gt;
	ratio .1 # (outrad - inrad) / outrad&lt;br /&gt;
	position 0.0 -42 0.0&lt;br /&gt;
	size 10 10 1&lt;br /&gt;
	rotation 0.0&lt;br /&gt;
	shift 0 0 0 # (repeatable)&lt;br /&gt;
	scale 1 1 1 # (repeatable)&lt;br /&gt;
	shear 0 0 0 # (repeatable)&lt;br /&gt;
	smoothbounce # ricochets use normals&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now lets see what happens if we change the angle value.  The ones below use 60, 120, and 240.  This is where you would need to use rotate to get the arc oriented the way you want.&lt;br /&gt;
&lt;br /&gt;
[[Image:Arcs.jpg]]&lt;br /&gt;
&lt;br /&gt;
Here is the code for the 60 degree arc:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
arc&lt;br /&gt;
	divisions 16 # number of subdivisions&lt;br /&gt;
	angle 60 # the sweep angle&lt;br /&gt;
	ratio .5 # (outrad - inrad) / outrad&lt;br /&gt;
	position 0.0 0.0 0.0&lt;br /&gt;
	size 10 10 1&lt;br /&gt;
	rotation 0.0&lt;br /&gt;
	shift 0 0 0 # (repeatable)&lt;br /&gt;
	scale 1 1 1 # (repeatable)&lt;br /&gt;
	shear 0 0 0 # (repeatable)&lt;br /&gt;
	smoothbounce # ricochets use normals&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let’s move to the sphere:&lt;br /&gt;
&lt;br /&gt;
===The Sphere===&lt;br /&gt;
&lt;br /&gt;
The only options required to make a sphere are position, size, and divisions. &lt;br /&gt;
All these options do the same thing as they did in the objects above.  You may also have an oval like sphere.  You make an oval like sphere simply by making the x and y&#039;s different sizes just like in the cone and arc.  The radius option is just a substitute for size.  You can write size 10 10 10 or radius 10.  Both do the same thing. However if you want an oval shaped sphere you have to use size.  Rotation wouldn&#039;t really have an effect and the shear and spin works the same for this object.&lt;br /&gt;
&lt;br /&gt;
==Getting more help==&lt;br /&gt;
*The links at the bottom of the [[:Category:Map Making|Map Making]] page.&lt;br /&gt;
*The original creator of this page is flight, you can email him at dirtbikerdude_91@yahoo.com and he will be happy to answer any questions that he is capable of answering.&lt;br /&gt;
&lt;br /&gt;
==Special Objects==&lt;br /&gt;
There are certain objects that are often coded by hand because it is simpler or it is impossible to do with graphical map creation tools.  &lt;br /&gt;
&lt;br /&gt;
===Materials ===&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_bolt.png &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
Material is letting the computer know that a material is about to be explained to it.  You name it so that way you can reference it with the matref.  The name can be any thing you want as long as it does not have any spaces.  You type in &amp;lt;tt&amp;gt;addtexture&amp;lt;/tt&amp;gt; and you state a texture name.  Now, how do you know what texture names there are to use?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Linux&#039;&#039;&#039;: Running &amp;lt;tt&amp;gt;ls /usr/share/bzflag/*.png&amp;lt;/tt&amp;gt; in a terminal will show the list of pictures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Mac&#039;&#039;&#039;: If you control click (right click) on the bzflag icon, click show package contents, click contents, and click resources, those are the pictures you may use. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Windows&#039;&#039;&#039;: The default path is &amp;lt;tt&amp;gt;C:\Program Files\BZFlag\data\*.png&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What you will find are images that are used in every day games.  The top of a base, the wall of a base. A bullet which is blue_bolt.png (as was used above).  The full path to the texture needs to be used if the texture is not found in that directory.  Any customized textures should be uploaded to the [http://images.bzflag.org/submitimages/ BZFlag Image Submission System] before the map is hosted publicly.&lt;br /&gt;
&lt;br /&gt;
Servers running bzfs 2.0.8 and earlier will require &amp;quot;meshbox&amp;quot; and &amp;quot;meshpyr&amp;quot; in order to apply textures and physics to these objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instead of creating a new texture, many interesting and creative things can be done with the &amp;quot;diffuse&amp;quot; parameter in the material object.  You can add the diffuse command and it will look like this diffuse 1 1 1 1.  The first number is the amount of red that will be in the meshobject.  The second number is the amount of green, the third is the amount of blue.  So you can mix those colors to make more colors.  You may use a range from 0-1.  For example diffuse .3 .5 .26 1.  The fourth number determines the opacity or transparency (the see-throughability).  0 is invisible, .5 is half invisible, and 1 is normal. &lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   diffuse .5 .25 .1 .6 &lt;br /&gt;
   addtexture mesh.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Physics===&lt;br /&gt;
&lt;br /&gt;
The format of the physics driver is like this:&lt;br /&gt;
(note that not all the commands are used concurrently, there is no point in using a death driver with a linear driver, etc.)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
physics&lt;br /&gt;
  name example_phydrv&lt;br /&gt;
  linear 0.0 0.0 0.0 # x/y/z linear velocities&lt;br /&gt;
  angular 0.0 0.0 0.0 # rotation freq, x/y coordinates&lt;br /&gt;
  slide 0.0 # time until max velocity (&amp;gt; 0.0 enables)&lt;br /&gt;
  death Message goes here.&lt;br /&gt;
  # the &#039;death&#039; property requires a non-blank message&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Physics drivers subject your tank to external forces.  If you have ever played laser mania by Louman then you may have encountered on the outskirts of the map an object that you can jump on and you go really fast, that is a physics driver. Physics and materials are both similar in that you must first define them, and then apply them to an object.  When you define a mesh object (regular BXFlag objects, such as boxes can&#039;t use physics drivers) you can reference that physics driver by using the phydrv command just like you would use the matref command for materials.  There are different physics commands: Linear, Angular, Slide and Death.  The physics driver used in the Louman map mentioned above is a linear driver.  Linear physics makes your tank move in a line.  The numbers after a linear command are how much &amp;quot;force&amp;quot; is applied in a given axis x y z, and you can have force applied in more than one axis. The direction is NOT along the axis of the object you apply the physics driver to, but along the major world axis, so if your object is rotated 45 degrees, you would need to put values for both x and y in your physics driver.  45 degrees is fairly easy, but other angles would require figuring out the proportions needed to move the tank along an object rotated to a given angle, it can get a bit tricky.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   linear 50 0 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive x direction you may use -50 and it will make it go the other way.&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy2 &lt;br /&gt;
   linear 0 50 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive y direction:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy3 &lt;br /&gt;
   linear 0 0 50 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank jump (bounce) at a speed of 50:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy4 &lt;br /&gt;
   slide 5 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank basically feel like it&#039;s on ice.  Whichever way the tank is moving it will keep moving that way. &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy5 &lt;br /&gt;
   death haha! you died &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make the tank die when it touches the object that refers to this and the message haha! you died will be displayed to that person. &lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   death I like you better dead! &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   phydrv phy1                       # Or what ever you named the physics.&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is applied to an object in a manner similar to that of a material.  Both physics and materials must be created in the map file before they are referenced.  The example below illustrates incorrectly placing a material definition after it is referenced by the meshbox:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_team.png &lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
A group is cluster of objects that can be &amp;quot;gathered together&amp;quot; and treated as if they were a single object.  Certain things cannot be included in groups:&lt;br /&gt;
&lt;br /&gt;
*textureMatrix&lt;br /&gt;
&lt;br /&gt;
*dynamicColor&lt;br /&gt;
&lt;br /&gt;
*material&lt;br /&gt;
&lt;br /&gt;
*physics&lt;br /&gt;
&lt;br /&gt;
*links&lt;br /&gt;
&lt;br /&gt;
*weapon&lt;br /&gt;
&lt;br /&gt;
*zone&lt;br /&gt;
&lt;br /&gt;
Notice that while teleporters aren&#039;t excluded from groups, you can&#039;t create links to teleporters within a group, except for purely random ones using &amp;quot;*&amp;quot;(asterisk) for the link. (this may not be entirely accurate, Trepan at one point hinted that there is a way around this...)&lt;br /&gt;
&lt;br /&gt;
Groups can be nested (you can have a group that is included in another group).&lt;br /&gt;
&lt;br /&gt;
For example if a map editor is making a forest, and each tree contains 2 objects, the editor doesn&#039;t want to type up the code for each tree over and over again. What he can do is tell BZFS that these objects = tree. And then whenever he wants to make a tree he just calls that group, as shown below.&lt;br /&gt;
&lt;br /&gt;
Example-----------&lt;br /&gt;
&lt;br /&gt;
first define a group of obects as a tree &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  define tree&lt;br /&gt;
  &lt;br /&gt;
  box&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  size 2 2 4&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  pyramid&lt;br /&gt;
  position 0 0 3&lt;br /&gt;
  size 5 5 10&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  enddef&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
...then, to call the &amp;quot;tree&amp;quot; group, just:&lt;br /&gt;
&lt;br /&gt;
  group tree&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
==Transformations==&lt;br /&gt;
[[Category:Map Making]]&lt;br /&gt;
Transformations are simple ways of modifying objects so that maps have some variety. These can get complicated so I will only give you a sample of what they can do. There are 3 transformations shift, spin, and shear. You can find a different also helpful page here [[3d Transformations]]&lt;br /&gt;
&lt;br /&gt;
====Shift====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shift&#039;&#039;&#039; moves an object by the amount of units that you specify from its present position.&lt;br /&gt;
the object..&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at place 10 10 0&lt;br /&gt;
&lt;br /&gt;
while the object..&lt;br /&gt;
&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  shift 0 0 10&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at position 10 10 10.&lt;br /&gt;
&lt;br /&gt;
====Spin====&lt;br /&gt;
Spinning an object is just like rotating an object but can be on a different axis. (y and x)&lt;br /&gt;
When you rotate it is around the center of the object.&lt;br /&gt;
Remember: Only spin-able objects can be spun.&lt;br /&gt;
Here is what the code looks like:&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
 end&lt;br /&gt;
The meshbox will now be tilted 45 degrees on its y axis.&lt;br /&gt;
Spin code has four numbers, the first one is how many degrees to spin.&lt;br /&gt;
The last three are for which axis&#039;s to spin, by placing a value of more than 0.&lt;br /&gt;
Spin can be a bit tricky and unintuitive to use.  It is not exactly like rotate, because it is possible to &amp;quot;spin&amp;quot; something so that it ends up &amp;quot;underneath&amp;quot; the BZFlag playing field.&lt;br /&gt;
&lt;br /&gt;
Spin is often best used with shift.  Think of the center of your map as a sort of &amp;quot;construction yard&amp;quot;.  You position objects at location 0 0 0, then spin and shift them to the location you want.&lt;br /&gt;
&lt;br /&gt;
Here is what you get if you use the above code in a map:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0012.png]]&lt;br /&gt;
&lt;br /&gt;
Looks fairly normal in this screenshot, doesn&#039;t it.  But if you drive around, the box will behave oddly, and appear to &amp;quot;float&amp;quot; in front of your HUD.  What has happened is that the box hasn&#039;t rotated around it&#039;s own axis, but around the world axis for the whole BZFlag arena!  But if we add some code to shift the box up above the z plane, it will look normal in-game.&lt;br /&gt;
&lt;br /&gt;
So if we make a simple change to the above code and add a shift statement and shift the box up in z (this is not the z axis of the box, but the world axis of our game arena):&lt;br /&gt;
&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
   shift 0 0 10&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
...we get this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0013.png]]&lt;br /&gt;
&lt;br /&gt;
... and the box doesn&#039;t do the weird &amp;quot;float&amp;quot; thing any more.  This &amp;quot;construction yard&amp;quot; technique is really handy, you just &amp;quot;build&amp;quot; your stuff smack in the middle of your map, then spin and shift it to where you want it (in the example above, it could have been shifted in x and y as well.  Just don&#039;t shift and then spin, or you will be back to having things &amp;quot;float&amp;quot; again.&lt;br /&gt;
&lt;br /&gt;
With shift and spin you can also work with groups and make a &amp;quot;master&amp;quot; group in the middle of your map, then shift and spin multiple copies to other locations on your map.&lt;/div&gt;</summary>
		<author><name>ClayOgre</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7365</id>
		<title>Map making by hand</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7365"/>
		<updated>2010-11-06T02:30:51Z</updated>

		<summary type="html">&lt;p&gt;ClayOgre: /* Physics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoDoc|Major re-organization, transform away from &amp;quot;chat&amp;quot; style. Need to reference pages elsewhere on the wiki in place of much of the content which appears to be building up here.  Create them if necessary, or see the list [[Special:Allpages|here]].}}&lt;br /&gt;
Although there are a number of GUI options for creating maps such as BZ-Edit, 3D modelers, many map-makers use a basic text-editor.  There are many times when it is necessary to make small changes to a map, such as including objects that are unavailable in GUI map-maker, but there are also some who enjoy the challenge of creating a map entirely from scratch with a text-editor.&lt;br /&gt;
&lt;br /&gt;
==Text Editors==&lt;br /&gt;
Most text-editors designed for coding/programming are more than sufficient for editing bzw files.  Although word-processing programs such as Microsoft Word can be used, there are many cheaper (free) and more efficient programs designed specifically for coding. If you are interested in syntax highlighting, look at the [http://my.bzflag.org/bb/viewtopic.php?f=24&amp;amp;t=16037&amp;amp;p=148953 forum topic].&lt;br /&gt;
===Windows===&lt;br /&gt;
*Notepad&lt;br /&gt;
*PSPad&lt;br /&gt;
*NoteTab&lt;br /&gt;
*[http://notepad-plus-plus.org/ Notepad ++] - a tabbed editor based on Scite.&lt;br /&gt;
&lt;br /&gt;
===Mac===&lt;br /&gt;
*TextWrangler&lt;br /&gt;
*TextEdit&lt;br /&gt;
===Linux===&lt;br /&gt;
*Command-line editors such as nano, emacs, pico, vim, or ed.&lt;br /&gt;
*GEdit&lt;br /&gt;
*Kate&lt;br /&gt;
*Scite&lt;br /&gt;
&lt;br /&gt;
==Editing existing maps==&lt;br /&gt;
Beginning mapmakers should spend some time studying and making small changes in existing maps to see how things work.  In the client, maps can be saved for editing by joining the desired server and choosing: Options&amp;gt;Save World.  Maps can also be saved by issuing the /saveworld command.  The map should be a simple map when getting started.  One may find it easier to create a file in BZEdit and open the resulting file in the text-editor.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
If you have created a box in BZEdit you may see:&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
 world &lt;br /&gt;
   size 400 &lt;br /&gt;
 end &lt;br /&gt;
 options &lt;br /&gt;
   +r &lt;br /&gt;
   -j &lt;br /&gt;
   -set _tankSpeed 25 &lt;br /&gt;
   -ms 5 &lt;br /&gt;
   -mp 0,2,0,2,0,2 &lt;br /&gt;
 end &lt;br /&gt;
 box &lt;br /&gt;
   name box1 &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
 end &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===What that means===&lt;br /&gt;
&amp;quot;There are set variables that define various things such as how fast your tank is, how fast the bullets are, or if it&#039;s raining or foggy.  Put those in the options setting with &amp;quot;-set(space) &amp;quot; in front of it. You can also make those changes as an admin by using /set _variable (notice there is a space between the set and the _).  A full list of these settings can be found on the [[Server Variables]] page.  Other options, such as how many times a flag can be grabbed before it resets or if flags can land on buildings are explained [http://my.bzflag.org/bb/files/antigrav4teamconf_114.txt in this forum post]&lt;br /&gt;
Optionally, the variables can be placed in a separate configuration file and referenced when the server is started.&amp;quot;&lt;br /&gt;
&#039;&#039;&#039;old&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, it says:&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
(Note: the # sign is used for comments.)&lt;br /&gt;
&lt;br /&gt;
This is the text added by the application initially, kind of like advertising. This will be the first thing anyone sees when they look at the map.&lt;br /&gt;
&lt;br /&gt;
The next thing is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
world &lt;br /&gt;
  size 400 # Sets the world size to 400 (800 x 800 total)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is rather self-explanatory. It&#039;s the &amp;lt;size&amp;gt; of the &amp;lt;world&amp;gt; (The BZFlag arena).&lt;br /&gt;
&lt;br /&gt;
Next is an &amp;lt;options&amp;gt; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options &lt;br /&gt;
  +r   # Enable Ricochet&lt;br /&gt;
  -j   # Enable Jumping&lt;br /&gt;
  -set _tankSpeed 25  # Sets the tank speed to 25 bzunits/second&lt;br /&gt;
  -ms 5  # Sets the maximum shots (per tank) to 5&lt;br /&gt;
  -mp 0,2,0,2,0,2  # Maximum of 2 Red Players, 2 Blue Players, and 2 Observers&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This allows you to define in the map file certain options that are also available from the command line when you start the bzfs server, or in the optional server config file.  Options embedded into a world file will override those input on the command line or in a config file.&lt;br /&gt;
&lt;br /&gt;
The commands listed here are:&lt;br /&gt;
Ricochet, Jumping, Tank speed, Max Shots, and Max Players.&lt;br /&gt;
These are rather self explanatory, except for Max Players. Each number represents how many of each of the following team players are allowed in the game (in the order listed): Rogue, Red, Green, Blue, Purple, Observer. Each number defines the max number of players per category.&lt;br /&gt;
&lt;br /&gt;
For more, see [[Options_(object)|Options Object]].&lt;br /&gt;
&lt;br /&gt;
We now come to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
box &lt;br /&gt;
  name box1      # Generally unused&lt;br /&gt;
  position 0 0 0 # X Y Z Position&lt;br /&gt;
  size 10 10 10  # X Y Z Size (bzunits from the position of the box)&lt;br /&gt;
  rotation 0     # Rotation (in degrees)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is a &amp;lt;box&amp;gt; with a &amp;lt;name&amp;gt; of &amp;lt;box1&amp;gt;.&lt;br /&gt;
The &amp;lt;position&amp;gt; is 0,0,0 in R3[http://en.wikipedia.org/wiki/R3].&lt;br /&gt;
The rest is pretty self explanatory.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; EVERY STATEMENT MUST HAVE AN END.&lt;br /&gt;
&lt;br /&gt;
===Basic Definitions===&lt;br /&gt;
;Objects&lt;br /&gt;
:Objects are the basic building blocks of the bzw file.  Objects begin with a line declaring the object, some fields describing that object, and a line that closes the object (usually with &amp;quot;end&amp;quot;).  Each of these sections of the object is important.&lt;br /&gt;
;Comments&lt;br /&gt;
:BZFS ignores anything in a line following the #; the line has been &amp;quot;commented out.&amp;quot;  It is highly recommended that comments be used often, both for the mapmaker and for others that may see the map.&lt;br /&gt;
;3D Cartesian Coordinate System&lt;br /&gt;
:In most objects, you will see three numbers after position and size. These numbers are coordinates on a graph. The first number is the x coordinate (left and right) the middle number is the y coordinate (forward and backward) and the third number is the z coordinate (height and depth). Another way of thinking of it is: x = width, y = depth, z = height. (Those accustomed to the Y axis determining height will have to slightly adjust their thinking.) &lt;br /&gt;
&lt;br /&gt;
==Sample Objects==&lt;br /&gt;
===The Box===&lt;br /&gt;
Perhaps the simplest object is the box.  There is actually nothing special you can do to it (but in versions of BZFlag from 2.0.8 up, you can do a lot more to it).  Here is an example of a box:&lt;br /&gt;
&lt;br /&gt;
 box&lt;br /&gt;
   name box1             # Optional, but good to include&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   rotation 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the first line, notice the word &amp;quot;box&amp;quot;.  It simply says the next object is a box.  The next line is the name of the object.  It is defined with the syntax &amp;quot;&amp;lt;tt&amp;gt;name &#039;&#039;objectName&#039;&#039;&amp;lt;/tt&amp;gt;&amp;quot;.  It is not required, but is good to include (if you have a LOT of boxes, how do you know which is which?  Naming them--as well as other objects--helps you keep track).  The third line defines the position of the center of the bottom of the object.  The three arguments of &amp;lt;tt&amp;gt;position&amp;lt;/tt&amp;gt; are the x, y, and z coordinates of the box, respectively.  The x and y coordinates can be positive or negative, but the z coordinate should just be positive or zero.  On the fourth line, the size of the box is defined.  The arguments of &amp;lt;tt&amp;gt;size&amp;lt;/tt&amp;gt; are the x, y, and z sizes of the object, respectively.  The x and y arguments make the box that wide on both sides of it&#039;s position.  However, the z argument makes the object exactly the number of units tall as defined.  In other words, the box shown above, with a size of &#039;10 10 10&#039; is actually 20 units by 20 units by 10 units high, so if you want a box that is a perfect cube, you would need to make the height, or Z dimension, &#039;20&#039;. The next line just says how much the object is rotated.  This number is the number of degrees of rotation, and can be negative or positive.  The last line just tells BZFlag the object is done, and a new one can be defined.  Be sure to &#039;&#039;&#039;always&#039;&#039;&#039; use this.&lt;br /&gt;
&lt;br /&gt;
Below is an image of a box with a size of 5 5 10.&lt;br /&gt;
&lt;br /&gt;
[[Image:box.jpg]]&lt;br /&gt;
&lt;br /&gt;
===The Cone===&lt;br /&gt;
Most objects have similar parameters as the basic box.  For instance, the code for a cone may look something like this:&lt;br /&gt;
&lt;br /&gt;
 cone&lt;br /&gt;
   name cone1&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 20&lt;br /&gt;
   divisions 128&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Divisions basically decide how smooth the cone is.  The higher the divisions the more smooth the cone is.  A division of 4 would look like a pyramid.  Another parameter that can be added to the cone object is angle. If you say angle 180, that would make 1/2 of a cone, 90 would make 1/4 of a cone, and so on. &lt;br /&gt;
&lt;br /&gt;
===The Arc===&lt;br /&gt;
&lt;br /&gt;
An arc is basically a cylinder. However it doesn’t have to be a perfect cylinder depending on certain options you select. For an arc the only required options are divisions, position and size. Just like the cone divisions have the same effect, position and size are all the same. Once again you can have an oval shaped cylinder type thing. Now, you WILL find more options to an arc than to a cone, for example the ratio option. The ratio options let you basically put a hole in the cylinder. So if you have the option: ratio 1 you would have a full cylinder. If you say for example ratio .3 or any number less than 1 you will get a hole in the cylinder. The bigger the number, the smaller the hole. Angle allows you to do a semicircle. Rotation, once again, isn&#039;t really needed, unless you need a semicircle that has a certain specific orientation in your map. all the options like spin and shear are the same for this object too! phydrv and matref I’ll show later. &lt;br /&gt;
&lt;br /&gt;
The screenshot below shows three arcs.  The only difference between them is the inner radius number.  The first is set to 1, the second to .5, and the third to .1.  Notice how the texture on the top surface of the arc becomes &amp;quot;stretched&amp;quot; when the radius is less than one.&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0015.png]]&lt;br /&gt;
&lt;br /&gt;
Here is the code for the arc with the .1 ratio:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
arc&lt;br /&gt;
	divisions 16 # number of subdivisions&lt;br /&gt;
	angle 360 # the sweep angle&lt;br /&gt;
	ratio .1 # (outrad - inrad) / outrad&lt;br /&gt;
	position 0.0 -42 0.0&lt;br /&gt;
	size 10 10 1&lt;br /&gt;
	rotation 0.0&lt;br /&gt;
	shift 0 0 0 # (repeatable)&lt;br /&gt;
	scale 1 1 1 # (repeatable)&lt;br /&gt;
	shear 0 0 0 # (repeatable)&lt;br /&gt;
	smoothbounce # ricochets use normals&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now lets see what happens if we change the angle value.  The ones below use 60, 120, and 240.  This is where you would need to use rotate to get the arc oriented the way you want.&lt;br /&gt;
&lt;br /&gt;
[[Image:Arcs.jpg]]&lt;br /&gt;
&lt;br /&gt;
Here is the code for the 60 degree arc:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
arc&lt;br /&gt;
	divisions 16 # number of subdivisions&lt;br /&gt;
	angle 60 # the sweep angle&lt;br /&gt;
	ratio .5 # (outrad - inrad) / outrad&lt;br /&gt;
	position 0.0 0.0 0.0&lt;br /&gt;
	size 10 10 1&lt;br /&gt;
	rotation 0.0&lt;br /&gt;
	shift 0 0 0 # (repeatable)&lt;br /&gt;
	scale 1 1 1 # (repeatable)&lt;br /&gt;
	shear 0 0 0 # (repeatable)&lt;br /&gt;
	smoothbounce # ricochets use normals&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let’s move to the sphere:&lt;br /&gt;
&lt;br /&gt;
===The Sphere===&lt;br /&gt;
&lt;br /&gt;
The only options required to make a sphere are position, size, and divisions. &lt;br /&gt;
All these options do the same thing as they did in the objects above.  You may also have an oval like sphere.  You make an oval like sphere simply by making the x and y&#039;s different sizes just like in the cone and arc.  The radius option is just a substitute for size.  You can write size 10 10 10 or radius 10.  Both do the same thing. However if you want an oval shaped sphere you have to use size.  Rotation wouldn&#039;t really have an effect and the shear and spin works the same for this object.&lt;br /&gt;
&lt;br /&gt;
==Getting more help==&lt;br /&gt;
*The links at the bottom of the [[:Category:Map Making|Map Making]] page.&lt;br /&gt;
*The original creator of this page is flight, you can email him at dirtbikerdude_91@yahoo.com and he will be happy to answer any questions that he is capable of answering.&lt;br /&gt;
&lt;br /&gt;
==Special Objects==&lt;br /&gt;
There are certain objects that are often coded by hand because it is simpler or it is impossible to do with graphical map creation tools.  &lt;br /&gt;
&lt;br /&gt;
===Materials ===&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_bolt.png &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
Material is letting the computer know that a material is about to be explained to it.  You name it so that way you can reference it with the matref.  The name can be any thing you want as long as it does not have any spaces.  You type in &amp;lt;tt&amp;gt;addtexture&amp;lt;/tt&amp;gt; and you state a texture name.  Now, how do you know what texture names there are to use?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Linux&#039;&#039;&#039;: Running &amp;lt;tt&amp;gt;ls /usr/share/bzflag/*.png&amp;lt;/tt&amp;gt; in a terminal will show the list of pictures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Mac&#039;&#039;&#039;: If you control click (right click) on the bzflag icon, click show package contents, click contents, and click resources, those are the pictures you may use. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Windows&#039;&#039;&#039;: The default path is &amp;lt;tt&amp;gt;C:\Program Files\BZFlag\data\*.png&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What you will find are images that are used in every day games.  The top of a base, the wall of a base. A bullet which is blue_bolt.png (as was used above).  The full path to the texture needs to be used if the texture is not found in that directory.  Any customized textures should be uploaded to the [http://images.bzflag.org/submitimages/ BZFlag Image Submission System] before the map is hosted publicly.&lt;br /&gt;
&lt;br /&gt;
Servers running bzfs 2.0.8 and earlier will require &amp;quot;meshbox&amp;quot; and &amp;quot;meshpyr&amp;quot; in order to apply textures and physics to these objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instead of creating a new texture, many interesting and creative things can be done with the &amp;quot;diffuse&amp;quot; parameter in the material object.  You can add the diffuse command and it will look like this diffuse 1 1 1 1.  The first number is the amount of red that will be in the meshobject.  The second number is the amount of green, the third is the amount of blue.  So you can mix those colors to make more colors.  You may use a range from 0-1.  For example diffuse .3 .5 .26 1.  The fourth number determines the opacity or transparency (the see-throughability).  0 is invisible, .5 is half invisible, and 1 is normal. &lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   diffuse .5 .25 .1 .6 &lt;br /&gt;
   addtexture mesh.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Physics===&lt;br /&gt;
&lt;br /&gt;
The format of the physics driver is like this:&lt;br /&gt;
(note that not all the commands are used concurrently, there is no point in using a death driver with a linear driver, etc.)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
physics&lt;br /&gt;
  name example_phydrv&lt;br /&gt;
  linear 0.0 0.0 0.0 # x/y/z linear velocities&lt;br /&gt;
  angular 0.0 0.0 0.0 # rotation freq, x/y coordinates&lt;br /&gt;
  slide 0.0 # time until max velocity (&amp;gt; 0.0 enables)&lt;br /&gt;
  death Message goes here.&lt;br /&gt;
  # the &#039;death&#039; property requires a non-blank message&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Physics drivers subject your tank to external forces.  If you have ever played laser mania by Louman then you may have encountered on the outskirts of the map an object that you can jump on and you go really fast, that is a physics driver. Physics and materials are both similar in that you must first define them, and then apply them to an object.  When you define a mesh object (regular BXFlag objects, such as boxes can&#039;t use physics drivers) you can reference that physics driver by using the phydrv command just like you would use the matref command for materials.  There are different physics commands: Linear, Angular, Slide and Death.  The physics driver used in the Louman map mentioned above is a linear driver.  Linear physics makes your tank move in a line.  The numbers after a linear command are how much &amp;quot;force&amp;quot; is applied in a given axis x y z, and you can have force applied in more than one axis. The direction is NOT along the axis of the object you apply the physics driver to, but along the major world axis, so if your object is rotated 45 degrees, you would need to put values for both x and y in your physics driver.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   linear 50 0 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive x direction you may use -50 and it will make it go the other way.&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy2 &lt;br /&gt;
   linear 0 50 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive y direction:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy3 &lt;br /&gt;
   linear 0 0 50 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank jump (bounce) at a speed of 50:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy4 &lt;br /&gt;
   slide 5 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank basically feel like it&#039;s on ice.  Whichever way the tank is moving it will keep moving that way. &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy5 &lt;br /&gt;
   death haha! you died &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make the tank die when it touches the object that refers to this and the message haha! you died will be displayed to that person. &lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   death I like you better dead! &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   phydrv phy1                       # Or what ever you named the physics.&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is applied to an object in a manner similar to that of a material.  Both physics and materials must be created in the map file before they are referenced.  The example below illustrates incorrectly placing a material definition after it is referenced by the meshbox:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_team.png &lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
A group is cluster of objects that can be &amp;quot;gathered together&amp;quot; and treated as if they were a single object.  Certain things cannot be included in groups:&lt;br /&gt;
&lt;br /&gt;
*textureMatrix&lt;br /&gt;
&lt;br /&gt;
*dynamicColor&lt;br /&gt;
&lt;br /&gt;
*material&lt;br /&gt;
&lt;br /&gt;
*physics&lt;br /&gt;
&lt;br /&gt;
*links&lt;br /&gt;
&lt;br /&gt;
*weapon&lt;br /&gt;
&lt;br /&gt;
*zone&lt;br /&gt;
&lt;br /&gt;
Notice that while teleporters aren&#039;t excluded from groups, you can&#039;t create links to teleporters within a group, except for purely random ones using &amp;quot;*&amp;quot;(asterisk) for the link. (this may not be entirely accurate, Trepan at one point hinted that there is a way around this...)&lt;br /&gt;
&lt;br /&gt;
Groups can be nested (you can have a group that is included in another group).&lt;br /&gt;
&lt;br /&gt;
For example if a map editor is making a forest, and each tree contains 2 objects, the editor doesn&#039;t want to type up the code for each tree over and over again. What he can do is tell BZFS that these objects = tree. And then whenever he wants to make a tree he just calls that group, as shown below.&lt;br /&gt;
&lt;br /&gt;
Example-----------&lt;br /&gt;
&lt;br /&gt;
first define a group of obects as a tree &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  define tree&lt;br /&gt;
  &lt;br /&gt;
  box&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  size 2 2 4&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  pyramid&lt;br /&gt;
  position 0 0 3&lt;br /&gt;
  size 5 5 10&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  enddef&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
...then, to call the &amp;quot;tree&amp;quot; group, just:&lt;br /&gt;
&lt;br /&gt;
  group tree&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
==Transformations==&lt;br /&gt;
[[Category:Map Making]]&lt;br /&gt;
Transformations are simple ways of modifying objects so that maps have some variety. These can get complicated so I will only give you a sample of what they can do. There are 3 transformations shift, spin, and shear. You can find a different also helpful page here [[3d Transformations]]&lt;br /&gt;
&lt;br /&gt;
====Shift====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shift&#039;&#039;&#039; moves an object by the amount of units that you specify from its present position.&lt;br /&gt;
the object..&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at place 10 10 0&lt;br /&gt;
&lt;br /&gt;
while the object..&lt;br /&gt;
&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  shift 0 0 10&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at position 10 10 10.&lt;br /&gt;
&lt;br /&gt;
====Spin====&lt;br /&gt;
Spinning an object is just like rotating an object but can be on a different axis. (y and x)&lt;br /&gt;
When you rotate it is around the center of the object.&lt;br /&gt;
Remember: Only spin-able objects can be spun.&lt;br /&gt;
Here is what the code looks like:&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
 end&lt;br /&gt;
The meshbox will now be tilted 45 degrees on its y axis.&lt;br /&gt;
Spin code has four numbers, the first one is how many degrees to spin.&lt;br /&gt;
The last three are for which axis&#039;s to spin, by placing a value of more than 0.&lt;br /&gt;
Spin can be a bit tricky and unintuitive to use.  It is not exactly like rotate, because it is possible to &amp;quot;spin&amp;quot; something so that it ends up &amp;quot;underneath&amp;quot; the BZFlag playing field.&lt;br /&gt;
&lt;br /&gt;
Spin is often best used with shift.  Think of the center of your map as a sort of &amp;quot;construction yard&amp;quot;.  You position objects at location 0 0 0, then spin and shift them to the location you want.&lt;br /&gt;
&lt;br /&gt;
Here is what you get if you use the above code in a map:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0012.png]]&lt;br /&gt;
&lt;br /&gt;
Looks fairly normal in this screenshot, doesn&#039;t it.  But if you drive around, the box will behave oddly, and appear to &amp;quot;float&amp;quot; in front of your HUD.  What has happened is that the box hasn&#039;t rotated around it&#039;s own axis, but around the world axis for the whole BZFlag arena!  But if we add some code to shift the box up above the z plane, it will look normal in-game.&lt;br /&gt;
&lt;br /&gt;
So if we make a simple change to the above code and add a shift statement and shift the box up in z (this is not the z axis of the box, but the world axis of our game arena):&lt;br /&gt;
&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
   shift 0 0 10&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
...we get this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0013.png]]&lt;br /&gt;
&lt;br /&gt;
... and the box doesn&#039;t do the weird &amp;quot;float&amp;quot; thing any more.  This &amp;quot;construction yard&amp;quot; technique is really handy, you just &amp;quot;build&amp;quot; your stuff smack in the middle of your map, then spin and shift it to where you want it (in the example above, it could have been shifted in x and y as well.  Just don&#039;t shift and then spin, or you will be back to having things &amp;quot;float&amp;quot; again.&lt;br /&gt;
&lt;br /&gt;
With shift and spin you can also work with groups and make a &amp;quot;master&amp;quot; group in the middle of your map, then shift and spin multiple copies to other locations on your map.&lt;/div&gt;</summary>
		<author><name>ClayOgre</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7364</id>
		<title>Map making by hand</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7364"/>
		<updated>2010-11-06T02:29:28Z</updated>

		<summary type="html">&lt;p&gt;ClayOgre: /* Physics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoDoc|Major re-organization, transform away from &amp;quot;chat&amp;quot; style. Need to reference pages elsewhere on the wiki in place of much of the content which appears to be building up here.  Create them if necessary, or see the list [[Special:Allpages|here]].}}&lt;br /&gt;
Although there are a number of GUI options for creating maps such as BZ-Edit, 3D modelers, many map-makers use a basic text-editor.  There are many times when it is necessary to make small changes to a map, such as including objects that are unavailable in GUI map-maker, but there are also some who enjoy the challenge of creating a map entirely from scratch with a text-editor.&lt;br /&gt;
&lt;br /&gt;
==Text Editors==&lt;br /&gt;
Most text-editors designed for coding/programming are more than sufficient for editing bzw files.  Although word-processing programs such as Microsoft Word can be used, there are many cheaper (free) and more efficient programs designed specifically for coding. If you are interested in syntax highlighting, look at the [http://my.bzflag.org/bb/viewtopic.php?f=24&amp;amp;t=16037&amp;amp;p=148953 forum topic].&lt;br /&gt;
===Windows===&lt;br /&gt;
*Notepad&lt;br /&gt;
*PSPad&lt;br /&gt;
*NoteTab&lt;br /&gt;
*[http://notepad-plus-plus.org/ Notepad ++] - a tabbed editor based on Scite.&lt;br /&gt;
&lt;br /&gt;
===Mac===&lt;br /&gt;
*TextWrangler&lt;br /&gt;
*TextEdit&lt;br /&gt;
===Linux===&lt;br /&gt;
*Command-line editors such as nano, emacs, pico, vim, or ed.&lt;br /&gt;
*GEdit&lt;br /&gt;
*Kate&lt;br /&gt;
*Scite&lt;br /&gt;
&lt;br /&gt;
==Editing existing maps==&lt;br /&gt;
Beginning mapmakers should spend some time studying and making small changes in existing maps to see how things work.  In the client, maps can be saved for editing by joining the desired server and choosing: Options&amp;gt;Save World.  Maps can also be saved by issuing the /saveworld command.  The map should be a simple map when getting started.  One may find it easier to create a file in BZEdit and open the resulting file in the text-editor.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
If you have created a box in BZEdit you may see:&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
 world &lt;br /&gt;
   size 400 &lt;br /&gt;
 end &lt;br /&gt;
 options &lt;br /&gt;
   +r &lt;br /&gt;
   -j &lt;br /&gt;
   -set _tankSpeed 25 &lt;br /&gt;
   -ms 5 &lt;br /&gt;
   -mp 0,2,0,2,0,2 &lt;br /&gt;
 end &lt;br /&gt;
 box &lt;br /&gt;
   name box1 &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
 end &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===What that means===&lt;br /&gt;
&amp;quot;There are set variables that define various things such as how fast your tank is, how fast the bullets are, or if it&#039;s raining or foggy.  Put those in the options setting with &amp;quot;-set(space) &amp;quot; in front of it. You can also make those changes as an admin by using /set _variable (notice there is a space between the set and the _).  A full list of these settings can be found on the [[Server Variables]] page.  Other options, such as how many times a flag can be grabbed before it resets or if flags can land on buildings are explained [http://my.bzflag.org/bb/files/antigrav4teamconf_114.txt in this forum post]&lt;br /&gt;
Optionally, the variables can be placed in a separate configuration file and referenced when the server is started.&amp;quot;&lt;br /&gt;
&#039;&#039;&#039;old&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, it says:&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
(Note: the # sign is used for comments.)&lt;br /&gt;
&lt;br /&gt;
This is the text added by the application initially, kind of like advertising. This will be the first thing anyone sees when they look at the map.&lt;br /&gt;
&lt;br /&gt;
The next thing is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
world &lt;br /&gt;
  size 400 # Sets the world size to 400 (800 x 800 total)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is rather self-explanatory. It&#039;s the &amp;lt;size&amp;gt; of the &amp;lt;world&amp;gt; (The BZFlag arena).&lt;br /&gt;
&lt;br /&gt;
Next is an &amp;lt;options&amp;gt; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options &lt;br /&gt;
  +r   # Enable Ricochet&lt;br /&gt;
  -j   # Enable Jumping&lt;br /&gt;
  -set _tankSpeed 25  # Sets the tank speed to 25 bzunits/second&lt;br /&gt;
  -ms 5  # Sets the maximum shots (per tank) to 5&lt;br /&gt;
  -mp 0,2,0,2,0,2  # Maximum of 2 Red Players, 2 Blue Players, and 2 Observers&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This allows you to define in the map file certain options that are also available from the command line when you start the bzfs server, or in the optional server config file.  Options embedded into a world file will override those input on the command line or in a config file.&lt;br /&gt;
&lt;br /&gt;
The commands listed here are:&lt;br /&gt;
Ricochet, Jumping, Tank speed, Max Shots, and Max Players.&lt;br /&gt;
These are rather self explanatory, except for Max Players. Each number represents how many of each of the following team players are allowed in the game (in the order listed): Rogue, Red, Green, Blue, Purple, Observer. Each number defines the max number of players per category.&lt;br /&gt;
&lt;br /&gt;
For more, see [[Options_(object)|Options Object]].&lt;br /&gt;
&lt;br /&gt;
We now come to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
box &lt;br /&gt;
  name box1      # Generally unused&lt;br /&gt;
  position 0 0 0 # X Y Z Position&lt;br /&gt;
  size 10 10 10  # X Y Z Size (bzunits from the position of the box)&lt;br /&gt;
  rotation 0     # Rotation (in degrees)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is a &amp;lt;box&amp;gt; with a &amp;lt;name&amp;gt; of &amp;lt;box1&amp;gt;.&lt;br /&gt;
The &amp;lt;position&amp;gt; is 0,0,0 in R3[http://en.wikipedia.org/wiki/R3].&lt;br /&gt;
The rest is pretty self explanatory.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; EVERY STATEMENT MUST HAVE AN END.&lt;br /&gt;
&lt;br /&gt;
===Basic Definitions===&lt;br /&gt;
;Objects&lt;br /&gt;
:Objects are the basic building blocks of the bzw file.  Objects begin with a line declaring the object, some fields describing that object, and a line that closes the object (usually with &amp;quot;end&amp;quot;).  Each of these sections of the object is important.&lt;br /&gt;
;Comments&lt;br /&gt;
:BZFS ignores anything in a line following the #; the line has been &amp;quot;commented out.&amp;quot;  It is highly recommended that comments be used often, both for the mapmaker and for others that may see the map.&lt;br /&gt;
;3D Cartesian Coordinate System&lt;br /&gt;
:In most objects, you will see three numbers after position and size. These numbers are coordinates on a graph. The first number is the x coordinate (left and right) the middle number is the y coordinate (forward and backward) and the third number is the z coordinate (height and depth). Another way of thinking of it is: x = width, y = depth, z = height. (Those accustomed to the Y axis determining height will have to slightly adjust their thinking.) &lt;br /&gt;
&lt;br /&gt;
==Sample Objects==&lt;br /&gt;
===The Box===&lt;br /&gt;
Perhaps the simplest object is the box.  There is actually nothing special you can do to it (but in versions of BZFlag from 2.0.8 up, you can do a lot more to it).  Here is an example of a box:&lt;br /&gt;
&lt;br /&gt;
 box&lt;br /&gt;
   name box1             # Optional, but good to include&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   rotation 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the first line, notice the word &amp;quot;box&amp;quot;.  It simply says the next object is a box.  The next line is the name of the object.  It is defined with the syntax &amp;quot;&amp;lt;tt&amp;gt;name &#039;&#039;objectName&#039;&#039;&amp;lt;/tt&amp;gt;&amp;quot;.  It is not required, but is good to include (if you have a LOT of boxes, how do you know which is which?  Naming them--as well as other objects--helps you keep track).  The third line defines the position of the center of the bottom of the object.  The three arguments of &amp;lt;tt&amp;gt;position&amp;lt;/tt&amp;gt; are the x, y, and z coordinates of the box, respectively.  The x and y coordinates can be positive or negative, but the z coordinate should just be positive or zero.  On the fourth line, the size of the box is defined.  The arguments of &amp;lt;tt&amp;gt;size&amp;lt;/tt&amp;gt; are the x, y, and z sizes of the object, respectively.  The x and y arguments make the box that wide on both sides of it&#039;s position.  However, the z argument makes the object exactly the number of units tall as defined.  In other words, the box shown above, with a size of &#039;10 10 10&#039; is actually 20 units by 20 units by 10 units high, so if you want a box that is a perfect cube, you would need to make the height, or Z dimension, &#039;20&#039;. The next line just says how much the object is rotated.  This number is the number of degrees of rotation, and can be negative or positive.  The last line just tells BZFlag the object is done, and a new one can be defined.  Be sure to &#039;&#039;&#039;always&#039;&#039;&#039; use this.&lt;br /&gt;
&lt;br /&gt;
Below is an image of a box with a size of 5 5 10.&lt;br /&gt;
&lt;br /&gt;
[[Image:box.jpg]]&lt;br /&gt;
&lt;br /&gt;
===The Cone===&lt;br /&gt;
Most objects have similar parameters as the basic box.  For instance, the code for a cone may look something like this:&lt;br /&gt;
&lt;br /&gt;
 cone&lt;br /&gt;
   name cone1&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 20&lt;br /&gt;
   divisions 128&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Divisions basically decide how smooth the cone is.  The higher the divisions the more smooth the cone is.  A division of 4 would look like a pyramid.  Another parameter that can be added to the cone object is angle. If you say angle 180, that would make 1/2 of a cone, 90 would make 1/4 of a cone, and so on. &lt;br /&gt;
&lt;br /&gt;
===The Arc===&lt;br /&gt;
&lt;br /&gt;
An arc is basically a cylinder. However it doesn’t have to be a perfect cylinder depending on certain options you select. For an arc the only required options are divisions, position and size. Just like the cone divisions have the same effect, position and size are all the same. Once again you can have an oval shaped cylinder type thing. Now, you WILL find more options to an arc than to a cone, for example the ratio option. The ratio options let you basically put a hole in the cylinder. So if you have the option: ratio 1 you would have a full cylinder. If you say for example ratio .3 or any number less than 1 you will get a hole in the cylinder. The bigger the number, the smaller the hole. Angle allows you to do a semicircle. Rotation, once again, isn&#039;t really needed, unless you need a semicircle that has a certain specific orientation in your map. all the options like spin and shear are the same for this object too! phydrv and matref I’ll show later. &lt;br /&gt;
&lt;br /&gt;
The screenshot below shows three arcs.  The only difference between them is the inner radius number.  The first is set to 1, the second to .5, and the third to .1.  Notice how the texture on the top surface of the arc becomes &amp;quot;stretched&amp;quot; when the radius is less than one.&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0015.png]]&lt;br /&gt;
&lt;br /&gt;
Here is the code for the arc with the .1 ratio:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
arc&lt;br /&gt;
	divisions 16 # number of subdivisions&lt;br /&gt;
	angle 360 # the sweep angle&lt;br /&gt;
	ratio .1 # (outrad - inrad) / outrad&lt;br /&gt;
	position 0.0 -42 0.0&lt;br /&gt;
	size 10 10 1&lt;br /&gt;
	rotation 0.0&lt;br /&gt;
	shift 0 0 0 # (repeatable)&lt;br /&gt;
	scale 1 1 1 # (repeatable)&lt;br /&gt;
	shear 0 0 0 # (repeatable)&lt;br /&gt;
	smoothbounce # ricochets use normals&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now lets see what happens if we change the angle value.  The ones below use 60, 120, and 240.  This is where you would need to use rotate to get the arc oriented the way you want.&lt;br /&gt;
&lt;br /&gt;
[[Image:Arcs.jpg]]&lt;br /&gt;
&lt;br /&gt;
Here is the code for the 60 degree arc:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
arc&lt;br /&gt;
	divisions 16 # number of subdivisions&lt;br /&gt;
	angle 60 # the sweep angle&lt;br /&gt;
	ratio .5 # (outrad - inrad) / outrad&lt;br /&gt;
	position 0.0 0.0 0.0&lt;br /&gt;
	size 10 10 1&lt;br /&gt;
	rotation 0.0&lt;br /&gt;
	shift 0 0 0 # (repeatable)&lt;br /&gt;
	scale 1 1 1 # (repeatable)&lt;br /&gt;
	shear 0 0 0 # (repeatable)&lt;br /&gt;
	smoothbounce # ricochets use normals&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let’s move to the sphere:&lt;br /&gt;
&lt;br /&gt;
===The Sphere===&lt;br /&gt;
&lt;br /&gt;
The only options required to make a sphere are position, size, and divisions. &lt;br /&gt;
All these options do the same thing as they did in the objects above.  You may also have an oval like sphere.  You make an oval like sphere simply by making the x and y&#039;s different sizes just like in the cone and arc.  The radius option is just a substitute for size.  You can write size 10 10 10 or radius 10.  Both do the same thing. However if you want an oval shaped sphere you have to use size.  Rotation wouldn&#039;t really have an effect and the shear and spin works the same for this object.&lt;br /&gt;
&lt;br /&gt;
==Getting more help==&lt;br /&gt;
*The links at the bottom of the [[:Category:Map Making|Map Making]] page.&lt;br /&gt;
*The original creator of this page is flight, you can email him at dirtbikerdude_91@yahoo.com and he will be happy to answer any questions that he is capable of answering.&lt;br /&gt;
&lt;br /&gt;
==Special Objects==&lt;br /&gt;
There are certain objects that are often coded by hand because it is simpler or it is impossible to do with graphical map creation tools.  &lt;br /&gt;
&lt;br /&gt;
===Materials ===&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_bolt.png &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
Material is letting the computer know that a material is about to be explained to it.  You name it so that way you can reference it with the matref.  The name can be any thing you want as long as it does not have any spaces.  You type in &amp;lt;tt&amp;gt;addtexture&amp;lt;/tt&amp;gt; and you state a texture name.  Now, how do you know what texture names there are to use?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Linux&#039;&#039;&#039;: Running &amp;lt;tt&amp;gt;ls /usr/share/bzflag/*.png&amp;lt;/tt&amp;gt; in a terminal will show the list of pictures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Mac&#039;&#039;&#039;: If you control click (right click) on the bzflag icon, click show package contents, click contents, and click resources, those are the pictures you may use. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Windows&#039;&#039;&#039;: The default path is &amp;lt;tt&amp;gt;C:\Program Files\BZFlag\data\*.png&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What you will find are images that are used in every day games.  The top of a base, the wall of a base. A bullet which is blue_bolt.png (as was used above).  The full path to the texture needs to be used if the texture is not found in that directory.  Any customized textures should be uploaded to the [http://images.bzflag.org/submitimages/ BZFlag Image Submission System] before the map is hosted publicly.&lt;br /&gt;
&lt;br /&gt;
Servers running bzfs 2.0.8 and earlier will require &amp;quot;meshbox&amp;quot; and &amp;quot;meshpyr&amp;quot; in order to apply textures and physics to these objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instead of creating a new texture, many interesting and creative things can be done with the &amp;quot;diffuse&amp;quot; parameter in the material object.  You can add the diffuse command and it will look like this diffuse 1 1 1 1.  The first number is the amount of red that will be in the meshobject.  The second number is the amount of green, the third is the amount of blue.  So you can mix those colors to make more colors.  You may use a range from 0-1.  For example diffuse .3 .5 .26 1.  The fourth number determines the opacity or transparency (the see-throughability).  0 is invisible, .5 is half invisible, and 1 is normal. &lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   diffuse .5 .25 .1 .6 &lt;br /&gt;
   addtexture mesh.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Physics===&lt;br /&gt;
&lt;br /&gt;
The format of the physics driver is like this:&lt;br /&gt;
(note that not all the commands are used concurrently, there is no point in using a death driver with a linear driver, etc.)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
physics&lt;br /&gt;
  name example_phydrv&lt;br /&gt;
  linear 0.0 0.0 0.0 # x/y/z linear velocities&lt;br /&gt;
  angular 0.0 0.0 0.0 # rotation freq, x/y coordinates&lt;br /&gt;
  slide 0.0 # time until max velocity (&amp;gt; 0.0 enables)&lt;br /&gt;
  death Message goes here.&lt;br /&gt;
  # the &#039;death&#039; property requires a non-blank message&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Physics drivers subject your tank to external forces.  If you have ever played laser mania by Louman then you may have encountered on the outskirts of the map an object that you can jump on and you go really fast, that is a physics driver. Physics and materials are both similar in that you must first define them, and then apply them to an object.  When you define a mesh object (regular BXFlag objects, such as boxes can&#039;t use physics drivers) you can reference that physics driver by using the phydrv command just like you would use the matref command for materials.  There are different physics commands: Linear, Angular, Slide and Death.  The physics driver used in the Louman map mentioned above is a linear driver.  Linear physics makes your tank move in a line.  The numbers after a linear command are how much &amp;quot;force&amp;quot; is applied in a given axis x y z, and you can have force applied in more than one axis. The direction is NOT along the axis of the object you apply the physics driver to, but along the major world axis, so if your object is rotated 45 degrees, you would need to put values for both x and y in your physics driver.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   linear 50 0 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive x direction you may use -50 and it will make it go the other way.&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy2 &lt;br /&gt;
   linear 0 50 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive y direction:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy3 &lt;br /&gt;
   linear 0 0 50 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank jump (bounce) at a speed of 50:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy4 &lt;br /&gt;
   slide 5 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank basically feel like it&#039;s on ice.  Whichever way the tank is moving it will keep moving that way. &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy5 &lt;br /&gt;
   death haha! you died &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make the tank die when it touches the object that refers to this and the message haha! you died will be displayed to that person. &lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   death I like you better dead! &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   phydrv phy1                       # Or what ever you named the physics.&lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is applied to an object in a manner similar to that of a material.  Both physics and materials must be created in the map file before they are referenced.  The example below illustrates the incorrect use of materials and physics references:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_team.png &lt;br /&gt;
 end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
A group is cluster of objects that can be &amp;quot;gathered together&amp;quot; and treated as if they were a single object.  Certain things cannot be included in groups:&lt;br /&gt;
&lt;br /&gt;
*textureMatrix&lt;br /&gt;
&lt;br /&gt;
*dynamicColor&lt;br /&gt;
&lt;br /&gt;
*material&lt;br /&gt;
&lt;br /&gt;
*physics&lt;br /&gt;
&lt;br /&gt;
*links&lt;br /&gt;
&lt;br /&gt;
*weapon&lt;br /&gt;
&lt;br /&gt;
*zone&lt;br /&gt;
&lt;br /&gt;
Notice that while teleporters aren&#039;t excluded from groups, you can&#039;t create links to teleporters within a group, except for purely random ones using &amp;quot;*&amp;quot;(asterisk) for the link. (this may not be entirely accurate, Trepan at one point hinted that there is a way around this...)&lt;br /&gt;
&lt;br /&gt;
Groups can be nested (you can have a group that is included in another group).&lt;br /&gt;
&lt;br /&gt;
For example if a map editor is making a forest, and each tree contains 2 objects, the editor doesn&#039;t want to type up the code for each tree over and over again. What he can do is tell BZFS that these objects = tree. And then whenever he wants to make a tree he just calls that group, as shown below.&lt;br /&gt;
&lt;br /&gt;
Example-----------&lt;br /&gt;
&lt;br /&gt;
first define a group of obects as a tree &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  define tree&lt;br /&gt;
  &lt;br /&gt;
  box&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  size 2 2 4&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  pyramid&lt;br /&gt;
  position 0 0 3&lt;br /&gt;
  size 5 5 10&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  enddef&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
...then, to call the &amp;quot;tree&amp;quot; group, just:&lt;br /&gt;
&lt;br /&gt;
  group tree&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
==Transformations==&lt;br /&gt;
[[Category:Map Making]]&lt;br /&gt;
Transformations are simple ways of modifying objects so that maps have some variety. These can get complicated so I will only give you a sample of what they can do. There are 3 transformations shift, spin, and shear. You can find a different also helpful page here [[3d Transformations]]&lt;br /&gt;
&lt;br /&gt;
====Shift====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shift&#039;&#039;&#039; moves an object by the amount of units that you specify from its present position.&lt;br /&gt;
the object..&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at place 10 10 0&lt;br /&gt;
&lt;br /&gt;
while the object..&lt;br /&gt;
&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  shift 0 0 10&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at position 10 10 10.&lt;br /&gt;
&lt;br /&gt;
====Spin====&lt;br /&gt;
Spinning an object is just like rotating an object but can be on a different axis. (y and x)&lt;br /&gt;
When you rotate it is around the center of the object.&lt;br /&gt;
Remember: Only spin-able objects can be spun.&lt;br /&gt;
Here is what the code looks like:&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
 end&lt;br /&gt;
The meshbox will now be tilted 45 degrees on its y axis.&lt;br /&gt;
Spin code has four numbers, the first one is how many degrees to spin.&lt;br /&gt;
The last three are for which axis&#039;s to spin, by placing a value of more than 0.&lt;br /&gt;
Spin can be a bit tricky and unintuitive to use.  It is not exactly like rotate, because it is possible to &amp;quot;spin&amp;quot; something so that it ends up &amp;quot;underneath&amp;quot; the BZFlag playing field.&lt;br /&gt;
&lt;br /&gt;
Spin is often best used with shift.  Think of the center of your map as a sort of &amp;quot;construction yard&amp;quot;.  You position objects at location 0 0 0, then spin and shift them to the location you want.&lt;br /&gt;
&lt;br /&gt;
Here is what you get if you use the above code in a map:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0012.png]]&lt;br /&gt;
&lt;br /&gt;
Looks fairly normal in this screenshot, doesn&#039;t it.  But if you drive around, the box will behave oddly, and appear to &amp;quot;float&amp;quot; in front of your HUD.  What has happened is that the box hasn&#039;t rotated around it&#039;s own axis, but around the world axis for the whole BZFlag arena!  But if we add some code to shift the box up above the z plane, it will look normal in-game.&lt;br /&gt;
&lt;br /&gt;
So if we make a simple change to the above code and add a shift statement and shift the box up in z (this is not the z axis of the box, but the world axis of our game arena):&lt;br /&gt;
&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
   shift 0 0 10&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
...we get this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0013.png]]&lt;br /&gt;
&lt;br /&gt;
... and the box doesn&#039;t do the weird &amp;quot;float&amp;quot; thing any more.  This &amp;quot;construction yard&amp;quot; technique is really handy, you just &amp;quot;build&amp;quot; your stuff smack in the middle of your map, then spin and shift it to where you want it (in the example above, it could have been shifted in x and y as well.  Just don&#039;t shift and then spin, or you will be back to having things &amp;quot;float&amp;quot; again.&lt;br /&gt;
&lt;br /&gt;
With shift and spin you can also work with groups and make a &amp;quot;master&amp;quot; group in the middle of your map, then shift and spin multiple copies to other locations on your map.&lt;/div&gt;</summary>
		<author><name>ClayOgre</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7363</id>
		<title>Map making by hand</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7363"/>
		<updated>2010-11-06T02:12:22Z</updated>

		<summary type="html">&lt;p&gt;ClayOgre: /* Groups */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoDoc|Major re-organization, transform away from &amp;quot;chat&amp;quot; style. Need to reference pages elsewhere on the wiki in place of much of the content which appears to be building up here.  Create them if necessary, or see the list [[Special:Allpages|here]].}}&lt;br /&gt;
Although there are a number of GUI options for creating maps such as BZ-Edit, 3D modelers, many map-makers use a basic text-editor.  There are many times when it is necessary to make small changes to a map, such as including objects that are unavailable in GUI map-maker, but there are also some who enjoy the challenge of creating a map entirely from scratch with a text-editor.&lt;br /&gt;
&lt;br /&gt;
==Text Editors==&lt;br /&gt;
Most text-editors designed for coding/programming are more than sufficient for editing bzw files.  Although word-processing programs such as Microsoft Word can be used, there are many cheaper (free) and more efficient programs designed specifically for coding. If you are interested in syntax highlighting, look at the [http://my.bzflag.org/bb/viewtopic.php?f=24&amp;amp;t=16037&amp;amp;p=148953 forum topic].&lt;br /&gt;
===Windows===&lt;br /&gt;
*Notepad&lt;br /&gt;
*PSPad&lt;br /&gt;
*NoteTab&lt;br /&gt;
*[http://notepad-plus-plus.org/ Notepad ++] - a tabbed editor based on Scite.&lt;br /&gt;
&lt;br /&gt;
===Mac===&lt;br /&gt;
*TextWrangler&lt;br /&gt;
*TextEdit&lt;br /&gt;
===Linux===&lt;br /&gt;
*Command-line editors such as nano, emacs, pico, vim, or ed.&lt;br /&gt;
*GEdit&lt;br /&gt;
*Kate&lt;br /&gt;
*Scite&lt;br /&gt;
&lt;br /&gt;
==Editing existing maps==&lt;br /&gt;
Beginning mapmakers should spend some time studying and making small changes in existing maps to see how things work.  In the client, maps can be saved for editing by joining the desired server and choosing: Options&amp;gt;Save World.  Maps can also be saved by issuing the /saveworld command.  The map should be a simple map when getting started.  One may find it easier to create a file in BZEdit and open the resulting file in the text-editor.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
If you have created a box in BZEdit you may see:&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
 world &lt;br /&gt;
   size 400 &lt;br /&gt;
 end &lt;br /&gt;
 options &lt;br /&gt;
   +r &lt;br /&gt;
   -j &lt;br /&gt;
   -set _tankSpeed 25 &lt;br /&gt;
   -ms 5 &lt;br /&gt;
   -mp 0,2,0,2,0,2 &lt;br /&gt;
 end &lt;br /&gt;
 box &lt;br /&gt;
   name box1 &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
 end &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===What that means===&lt;br /&gt;
&amp;quot;There are set variables that define various things such as how fast your tank is, how fast the bullets are, or if it&#039;s raining or foggy.  Put those in the options setting with &amp;quot;-set(space) &amp;quot; in front of it. You can also make those changes as an admin by using /set _variable (notice there is a space between the set and the _).  A full list of these settings can be found on the [[Server Variables]] page.  Other options, such as how many times a flag can be grabbed before it resets or if flags can land on buildings are explained [http://my.bzflag.org/bb/files/antigrav4teamconf_114.txt in this forum post]&lt;br /&gt;
Optionally, the variables can be placed in a separate configuration file and referenced when the server is started.&amp;quot;&lt;br /&gt;
&#039;&#039;&#039;old&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, it says:&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
(Note: the # sign is used for comments.)&lt;br /&gt;
&lt;br /&gt;
This is the text added by the application initially, kind of like advertising. This will be the first thing anyone sees when they look at the map.&lt;br /&gt;
&lt;br /&gt;
The next thing is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
world &lt;br /&gt;
  size 400 # Sets the world size to 400 (800 x 800 total)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is rather self-explanatory. It&#039;s the &amp;lt;size&amp;gt; of the &amp;lt;world&amp;gt; (The BZFlag arena).&lt;br /&gt;
&lt;br /&gt;
Next is an &amp;lt;options&amp;gt; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options &lt;br /&gt;
  +r   # Enable Ricochet&lt;br /&gt;
  -j   # Enable Jumping&lt;br /&gt;
  -set _tankSpeed 25  # Sets the tank speed to 25 bzunits/second&lt;br /&gt;
  -ms 5  # Sets the maximum shots (per tank) to 5&lt;br /&gt;
  -mp 0,2,0,2,0,2  # Maximum of 2 Red Players, 2 Blue Players, and 2 Observers&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This allows you to define in the map file certain options that are also available from the command line when you start the bzfs server, or in the optional server config file.  Options embedded into a world file will override those input on the command line or in a config file.&lt;br /&gt;
&lt;br /&gt;
The commands listed here are:&lt;br /&gt;
Ricochet, Jumping, Tank speed, Max Shots, and Max Players.&lt;br /&gt;
These are rather self explanatory, except for Max Players. Each number represents how many of each of the following team players are allowed in the game (in the order listed): Rogue, Red, Green, Blue, Purple, Observer. Each number defines the max number of players per category.&lt;br /&gt;
&lt;br /&gt;
For more, see [[Options_(object)|Options Object]].&lt;br /&gt;
&lt;br /&gt;
We now come to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
box &lt;br /&gt;
  name box1      # Generally unused&lt;br /&gt;
  position 0 0 0 # X Y Z Position&lt;br /&gt;
  size 10 10 10  # X Y Z Size (bzunits from the position of the box)&lt;br /&gt;
  rotation 0     # Rotation (in degrees)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is a &amp;lt;box&amp;gt; with a &amp;lt;name&amp;gt; of &amp;lt;box1&amp;gt;.&lt;br /&gt;
The &amp;lt;position&amp;gt; is 0,0,0 in R3[http://en.wikipedia.org/wiki/R3].&lt;br /&gt;
The rest is pretty self explanatory.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; EVERY STATEMENT MUST HAVE AN END.&lt;br /&gt;
&lt;br /&gt;
===Basic Definitions===&lt;br /&gt;
;Objects&lt;br /&gt;
:Objects are the basic building blocks of the bzw file.  Objects begin with a line declaring the object, some fields describing that object, and a line that closes the object (usually with &amp;quot;end&amp;quot;).  Each of these sections of the object is important.&lt;br /&gt;
;Comments&lt;br /&gt;
:BZFS ignores anything in a line following the #; the line has been &amp;quot;commented out.&amp;quot;  It is highly recommended that comments be used often, both for the mapmaker and for others that may see the map.&lt;br /&gt;
;3D Cartesian Coordinate System&lt;br /&gt;
:In most objects, you will see three numbers after position and size. These numbers are coordinates on a graph. The first number is the x coordinate (left and right) the middle number is the y coordinate (forward and backward) and the third number is the z coordinate (height and depth). Another way of thinking of it is: x = width, y = depth, z = height. (Those accustomed to the Y axis determining height will have to slightly adjust their thinking.) &lt;br /&gt;
&lt;br /&gt;
==Sample Objects==&lt;br /&gt;
===The Box===&lt;br /&gt;
Perhaps the simplest object is the box.  There is actually nothing special you can do to it (but in versions of BZFlag from 2.0.8 up, you can do a lot more to it).  Here is an example of a box:&lt;br /&gt;
&lt;br /&gt;
 box&lt;br /&gt;
   name box1             # Optional, but good to include&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   rotation 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the first line, notice the word &amp;quot;box&amp;quot;.  It simply says the next object is a box.  The next line is the name of the object.  It is defined with the syntax &amp;quot;&amp;lt;tt&amp;gt;name &#039;&#039;objectName&#039;&#039;&amp;lt;/tt&amp;gt;&amp;quot;.  It is not required, but is good to include (if you have a LOT of boxes, how do you know which is which?  Naming them--as well as other objects--helps you keep track).  The third line defines the position of the center of the bottom of the object.  The three arguments of &amp;lt;tt&amp;gt;position&amp;lt;/tt&amp;gt; are the x, y, and z coordinates of the box, respectively.  The x and y coordinates can be positive or negative, but the z coordinate should just be positive or zero.  On the fourth line, the size of the box is defined.  The arguments of &amp;lt;tt&amp;gt;size&amp;lt;/tt&amp;gt; are the x, y, and z sizes of the object, respectively.  The x and y arguments make the box that wide on both sides of it&#039;s position.  However, the z argument makes the object exactly the number of units tall as defined.  In other words, the box shown above, with a size of &#039;10 10 10&#039; is actually 20 units by 20 units by 10 units high, so if you want a box that is a perfect cube, you would need to make the height, or Z dimension, &#039;20&#039;. The next line just says how much the object is rotated.  This number is the number of degrees of rotation, and can be negative or positive.  The last line just tells BZFlag the object is done, and a new one can be defined.  Be sure to &#039;&#039;&#039;always&#039;&#039;&#039; use this.&lt;br /&gt;
&lt;br /&gt;
Below is an image of a box with a size of 5 5 10.&lt;br /&gt;
&lt;br /&gt;
[[Image:box.jpg]]&lt;br /&gt;
&lt;br /&gt;
===The Cone===&lt;br /&gt;
Most objects have similar parameters as the basic box.  For instance, the code for a cone may look something like this:&lt;br /&gt;
&lt;br /&gt;
 cone&lt;br /&gt;
   name cone1&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 20&lt;br /&gt;
   divisions 128&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Divisions basically decide how smooth the cone is.  The higher the divisions the more smooth the cone is.  A division of 4 would look like a pyramid.  Another parameter that can be added to the cone object is angle. If you say angle 180, that would make 1/2 of a cone, 90 would make 1/4 of a cone, and so on. &lt;br /&gt;
&lt;br /&gt;
===The Arc===&lt;br /&gt;
&lt;br /&gt;
An arc is basically a cylinder. However it doesn’t have to be a perfect cylinder depending on certain options you select. For an arc the only required options are divisions, position and size. Just like the cone divisions have the same effect, position and size are all the same. Once again you can have an oval shaped cylinder type thing. Now, you WILL find more options to an arc than to a cone, for example the ratio option. The ratio options let you basically put a hole in the cylinder. So if you have the option: ratio 1 you would have a full cylinder. If you say for example ratio .3 or any number less than 1 you will get a hole in the cylinder. The bigger the number, the smaller the hole. Angle allows you to do a semicircle. Rotation, once again, isn&#039;t really needed, unless you need a semicircle that has a certain specific orientation in your map. all the options like spin and shear are the same for this object too! phydrv and matref I’ll show later. &lt;br /&gt;
&lt;br /&gt;
The screenshot below shows three arcs.  The only difference between them is the inner radius number.  The first is set to 1, the second to .5, and the third to .1.  Notice how the texture on the top surface of the arc becomes &amp;quot;stretched&amp;quot; when the radius is less than one.&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0015.png]]&lt;br /&gt;
&lt;br /&gt;
Here is the code for the arc with the .1 ratio:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
arc&lt;br /&gt;
	divisions 16 # number of subdivisions&lt;br /&gt;
	angle 360 # the sweep angle&lt;br /&gt;
	ratio .1 # (outrad - inrad) / outrad&lt;br /&gt;
	position 0.0 -42 0.0&lt;br /&gt;
	size 10 10 1&lt;br /&gt;
	rotation 0.0&lt;br /&gt;
	shift 0 0 0 # (repeatable)&lt;br /&gt;
	scale 1 1 1 # (repeatable)&lt;br /&gt;
	shear 0 0 0 # (repeatable)&lt;br /&gt;
	smoothbounce # ricochets use normals&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now lets see what happens if we change the angle value.  The ones below use 60, 120, and 240.  This is where you would need to use rotate to get the arc oriented the way you want.&lt;br /&gt;
&lt;br /&gt;
[[Image:Arcs.jpg]]&lt;br /&gt;
&lt;br /&gt;
Here is the code for the 60 degree arc:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
arc&lt;br /&gt;
	divisions 16 # number of subdivisions&lt;br /&gt;
	angle 60 # the sweep angle&lt;br /&gt;
	ratio .5 # (outrad - inrad) / outrad&lt;br /&gt;
	position 0.0 0.0 0.0&lt;br /&gt;
	size 10 10 1&lt;br /&gt;
	rotation 0.0&lt;br /&gt;
	shift 0 0 0 # (repeatable)&lt;br /&gt;
	scale 1 1 1 # (repeatable)&lt;br /&gt;
	shear 0 0 0 # (repeatable)&lt;br /&gt;
	smoothbounce # ricochets use normals&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let’s move to the sphere:&lt;br /&gt;
&lt;br /&gt;
===The Sphere===&lt;br /&gt;
&lt;br /&gt;
The only options required to make a sphere are position, size, and divisions. &lt;br /&gt;
All these options do the same thing as they did in the objects above.  You may also have an oval like sphere.  You make an oval like sphere simply by making the x and y&#039;s different sizes just like in the cone and arc.  The radius option is just a substitute for size.  You can write size 10 10 10 or radius 10.  Both do the same thing. However if you want an oval shaped sphere you have to use size.  Rotation wouldn&#039;t really have an effect and the shear and spin works the same for this object.&lt;br /&gt;
&lt;br /&gt;
==Getting more help==&lt;br /&gt;
*The links at the bottom of the [[:Category:Map Making|Map Making]] page.&lt;br /&gt;
*The original creator of this page is flight, you can email him at dirtbikerdude_91@yahoo.com and he will be happy to answer any questions that he is capable of answering.&lt;br /&gt;
&lt;br /&gt;
==Special Objects==&lt;br /&gt;
There are certain objects that are often coded by hand because it is simpler or it is impossible to do with graphical map creation tools.  &lt;br /&gt;
&lt;br /&gt;
===Materials ===&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_bolt.png &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
Material is letting the computer know that a material is about to be explained to it.  You name it so that way you can reference it with the matref.  The name can be any thing you want as long as it does not have any spaces.  You type in &amp;lt;tt&amp;gt;addtexture&amp;lt;/tt&amp;gt; and you state a texture name.  Now, how do you know what texture names there are to use?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Linux&#039;&#039;&#039;: Running &amp;lt;tt&amp;gt;ls /usr/share/bzflag/*.png&amp;lt;/tt&amp;gt; in a terminal will show the list of pictures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Mac&#039;&#039;&#039;: If you control click (right click) on the bzflag icon, click show package contents, click contents, and click resources, those are the pictures you may use. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Windows&#039;&#039;&#039;: The default path is &amp;lt;tt&amp;gt;C:\Program Files\BZFlag\data\*.png&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What you will find are images that are used in every day games.  The top of a base, the wall of a base. A bullet which is blue_bolt.png (as was used above).  The full path to the texture needs to be used if the texture is not found in that directory.  Any customized textures should be uploaded to the [http://images.bzflag.org/submitimages/ BZFlag Image Submission System] before the map is hosted publicly.&lt;br /&gt;
&lt;br /&gt;
Servers running bzfs 2.0.8 and earlier will require &amp;quot;meshbox&amp;quot; and &amp;quot;meshpyr&amp;quot; in order to apply textures and physics to these objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instead of creating a new texture, many interesting and creative things can be done with the &amp;quot;diffuse&amp;quot; parameter in the material object.  You can add the diffuse command and it will look like this diffuse 1 1 1 1.  The first number is the amount of red that will be in the meshobject.  The second number is the amount of green, the third is the amount of blue.  So you can mix those colors to make more colors.  You may use a range from 0-1.  For example diffuse .3 .5 .26 1.  The fourth number determines the opacity or transparency (the see-throughability).  0 is invisible, .5 is half invisible, and 1 is normal. &lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   diffuse .5 .25 .1 .6 &lt;br /&gt;
   addtexture mesh.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Physics===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Physics make your tank behave in different ways.  If you have ever played laser mania by Louman than you know on the outskirts of the map there is something you can jump on and you go really fast, that is a physics. Physics and materials work the same way.  Physics is to material as phydrv is to matref.  You must specify a physics then on a meshbox, meshpyr cone arc sphere or whatever, you can reference that physics by using the phydrv command just like you would use the matref command for materials.  There are different physics commands.  Linear, angular, slide and death.  In the Louman map I mentioned above is a linear physics.  Linear physics makes your tank move in a line.  The numbers after a linear command are just like position x y z.  Example:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   linear 50 0 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive x direction you may use -50 and it will make it go the other way.&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy2 &lt;br /&gt;
   linear 0 50 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive y direction &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy3 &lt;br /&gt;
   linear 0 0 50 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank jump at a speed of 50 &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy4 &lt;br /&gt;
   slide 5 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank basically feel like it&#039;s on ice.  Whichever way the tank is moving it will keep moving that way. &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy5 &lt;br /&gt;
   death haha! you died &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make the tank die when it touches the object that refers to this and the message haha! you died will be displayed to that person. &lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   death I like you better dead! &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   phydrv phy1                       # Or what ever you named the physics.&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This works just like the material &lt;br /&gt;
&lt;br /&gt;
The thing about physics and materials is that they have to be written before they are referenced. &lt;br /&gt;
&lt;br /&gt;
This &#039;&#039;&#039;won&#039;t&#039;&#039;&#039; work &lt;br /&gt;
&lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_team.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
A group is cluster of objects that can be &amp;quot;gathered together&amp;quot; and treated as if they were a single object.  Certain things cannot be included in groups:&lt;br /&gt;
&lt;br /&gt;
*textureMatrix&lt;br /&gt;
&lt;br /&gt;
*dynamicColor&lt;br /&gt;
&lt;br /&gt;
*material&lt;br /&gt;
&lt;br /&gt;
*physics&lt;br /&gt;
&lt;br /&gt;
*links&lt;br /&gt;
&lt;br /&gt;
*weapon&lt;br /&gt;
&lt;br /&gt;
*zone&lt;br /&gt;
&lt;br /&gt;
Notice that while teleporters aren&#039;t excluded from groups, you can&#039;t create links to teleporters within a group, except for purely random ones using &amp;quot;*&amp;quot;(asterisk) for the link. (this may not be entirely accurate, Trepan at one point hinted that there is a way around this...)&lt;br /&gt;
&lt;br /&gt;
Groups can be nested (you can have a group that is included in another group).&lt;br /&gt;
&lt;br /&gt;
For example if a map editor is making a forest, and each tree contains 2 objects, the editor doesn&#039;t want to type up the code for each tree over and over again. What he can do is tell BZFS that these objects = tree. And then whenever he wants to make a tree he just calls that group, as shown below.&lt;br /&gt;
&lt;br /&gt;
Example-----------&lt;br /&gt;
&lt;br /&gt;
first define a group of obects as a tree &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  define tree&lt;br /&gt;
  &lt;br /&gt;
  box&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  size 2 2 4&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  pyramid&lt;br /&gt;
  position 0 0 3&lt;br /&gt;
  size 5 5 10&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  enddef&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
...then, to call the &amp;quot;tree&amp;quot; group, just:&lt;br /&gt;
&lt;br /&gt;
  group tree&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
==Transformations==&lt;br /&gt;
[[Category:Map Making]]&lt;br /&gt;
Transformations are simple ways of modifying objects so that maps have some variety. These can get complicated so I will only give you a sample of what they can do. There are 3 transformations shift, spin, and shear. You can find a different also helpful page here [[3d Transformations]]&lt;br /&gt;
&lt;br /&gt;
====Shift====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shift&#039;&#039;&#039; moves an object by the amount of units that you specify from its present position.&lt;br /&gt;
the object..&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at place 10 10 0&lt;br /&gt;
&lt;br /&gt;
while the object..&lt;br /&gt;
&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  shift 0 0 10&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at position 10 10 10.&lt;br /&gt;
&lt;br /&gt;
====Spin====&lt;br /&gt;
Spinning an object is just like rotating an object but can be on a different axis. (y and x)&lt;br /&gt;
When you rotate it is around the center of the object.&lt;br /&gt;
Remember: Only spin-able objects can be spun.&lt;br /&gt;
Here is what the code looks like:&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
 end&lt;br /&gt;
The meshbox will now be tilted 45 degrees on its y axis.&lt;br /&gt;
Spin code has four numbers, the first one is how many degrees to spin.&lt;br /&gt;
The last three are for which axis&#039;s to spin, by placing a value of more than 0.&lt;br /&gt;
Spin can be a bit tricky and unintuitive to use.  It is not exactly like rotate, because it is possible to &amp;quot;spin&amp;quot; something so that it ends up &amp;quot;underneath&amp;quot; the BZFlag playing field.&lt;br /&gt;
&lt;br /&gt;
Spin is often best used with shift.  Think of the center of your map as a sort of &amp;quot;construction yard&amp;quot;.  You position objects at location 0 0 0, then spin and shift them to the location you want.&lt;br /&gt;
&lt;br /&gt;
Here is what you get if you use the above code in a map:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0012.png]]&lt;br /&gt;
&lt;br /&gt;
Looks fairly normal in this screenshot, doesn&#039;t it.  But if you drive around, the box will behave oddly, and appear to &amp;quot;float&amp;quot; in front of your HUD.  What has happened is that the box hasn&#039;t rotated around it&#039;s own axis, but around the world axis for the whole BZFlag arena!  But if we add some code to shift the box up above the z plane, it will look normal in-game.&lt;br /&gt;
&lt;br /&gt;
So if we make a simple change to the above code and add a shift statement and shift the box up in z (this is not the z axis of the box, but the world axis of our game arena):&lt;br /&gt;
&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
   shift 0 0 10&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
...we get this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0013.png]]&lt;br /&gt;
&lt;br /&gt;
... and the box doesn&#039;t do the weird &amp;quot;float&amp;quot; thing any more.  This &amp;quot;construction yard&amp;quot; technique is really handy, you just &amp;quot;build&amp;quot; your stuff smack in the middle of your map, then spin and shift it to where you want it (in the example above, it could have been shifted in x and y as well.  Just don&#039;t shift and then spin, or you will be back to having things &amp;quot;float&amp;quot; again.&lt;br /&gt;
&lt;br /&gt;
With shift and spin you can also work with groups and make a &amp;quot;master&amp;quot; group in the middle of your map, then shift and spin multiple copies to other locations on your map.&lt;/div&gt;</summary>
		<author><name>ClayOgre</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7362</id>
		<title>Map making by hand</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7362"/>
		<updated>2010-11-06T02:09:26Z</updated>

		<summary type="html">&lt;p&gt;ClayOgre: /* The Arc */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoDoc|Major re-organization, transform away from &amp;quot;chat&amp;quot; style. Need to reference pages elsewhere on the wiki in place of much of the content which appears to be building up here.  Create them if necessary, or see the list [[Special:Allpages|here]].}}&lt;br /&gt;
Although there are a number of GUI options for creating maps such as BZ-Edit, 3D modelers, many map-makers use a basic text-editor.  There are many times when it is necessary to make small changes to a map, such as including objects that are unavailable in GUI map-maker, but there are also some who enjoy the challenge of creating a map entirely from scratch with a text-editor.&lt;br /&gt;
&lt;br /&gt;
==Text Editors==&lt;br /&gt;
Most text-editors designed for coding/programming are more than sufficient for editing bzw files.  Although word-processing programs such as Microsoft Word can be used, there are many cheaper (free) and more efficient programs designed specifically for coding. If you are interested in syntax highlighting, look at the [http://my.bzflag.org/bb/viewtopic.php?f=24&amp;amp;t=16037&amp;amp;p=148953 forum topic].&lt;br /&gt;
===Windows===&lt;br /&gt;
*Notepad&lt;br /&gt;
*PSPad&lt;br /&gt;
*NoteTab&lt;br /&gt;
*[http://notepad-plus-plus.org/ Notepad ++] - a tabbed editor based on Scite.&lt;br /&gt;
&lt;br /&gt;
===Mac===&lt;br /&gt;
*TextWrangler&lt;br /&gt;
*TextEdit&lt;br /&gt;
===Linux===&lt;br /&gt;
*Command-line editors such as nano, emacs, pico, vim, or ed.&lt;br /&gt;
*GEdit&lt;br /&gt;
*Kate&lt;br /&gt;
*Scite&lt;br /&gt;
&lt;br /&gt;
==Editing existing maps==&lt;br /&gt;
Beginning mapmakers should spend some time studying and making small changes in existing maps to see how things work.  In the client, maps can be saved for editing by joining the desired server and choosing: Options&amp;gt;Save World.  Maps can also be saved by issuing the /saveworld command.  The map should be a simple map when getting started.  One may find it easier to create a file in BZEdit and open the resulting file in the text-editor.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
If you have created a box in BZEdit you may see:&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
 world &lt;br /&gt;
   size 400 &lt;br /&gt;
 end &lt;br /&gt;
 options &lt;br /&gt;
   +r &lt;br /&gt;
   -j &lt;br /&gt;
   -set _tankSpeed 25 &lt;br /&gt;
   -ms 5 &lt;br /&gt;
   -mp 0,2,0,2,0,2 &lt;br /&gt;
 end &lt;br /&gt;
 box &lt;br /&gt;
   name box1 &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
 end &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===What that means===&lt;br /&gt;
&amp;quot;There are set variables that define various things such as how fast your tank is, how fast the bullets are, or if it&#039;s raining or foggy.  Put those in the options setting with &amp;quot;-set(space) &amp;quot; in front of it. You can also make those changes as an admin by using /set _variable (notice there is a space between the set and the _).  A full list of these settings can be found on the [[Server Variables]] page.  Other options, such as how many times a flag can be grabbed before it resets or if flags can land on buildings are explained [http://my.bzflag.org/bb/files/antigrav4teamconf_114.txt in this forum post]&lt;br /&gt;
Optionally, the variables can be placed in a separate configuration file and referenced when the server is started.&amp;quot;&lt;br /&gt;
&#039;&#039;&#039;old&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, it says:&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
(Note: the # sign is used for comments.)&lt;br /&gt;
&lt;br /&gt;
This is the text added by the application initially, kind of like advertising. This will be the first thing anyone sees when they look at the map.&lt;br /&gt;
&lt;br /&gt;
The next thing is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
world &lt;br /&gt;
  size 400 # Sets the world size to 400 (800 x 800 total)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is rather self-explanatory. It&#039;s the &amp;lt;size&amp;gt; of the &amp;lt;world&amp;gt; (The BZFlag arena).&lt;br /&gt;
&lt;br /&gt;
Next is an &amp;lt;options&amp;gt; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options &lt;br /&gt;
  +r   # Enable Ricochet&lt;br /&gt;
  -j   # Enable Jumping&lt;br /&gt;
  -set _tankSpeed 25  # Sets the tank speed to 25 bzunits/second&lt;br /&gt;
  -ms 5  # Sets the maximum shots (per tank) to 5&lt;br /&gt;
  -mp 0,2,0,2,0,2  # Maximum of 2 Red Players, 2 Blue Players, and 2 Observers&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This allows you to define in the map file certain options that are also available from the command line when you start the bzfs server, or in the optional server config file.  Options embedded into a world file will override those input on the command line or in a config file.&lt;br /&gt;
&lt;br /&gt;
The commands listed here are:&lt;br /&gt;
Ricochet, Jumping, Tank speed, Max Shots, and Max Players.&lt;br /&gt;
These are rather self explanatory, except for Max Players. Each number represents how many of each of the following team players are allowed in the game (in the order listed): Rogue, Red, Green, Blue, Purple, Observer. Each number defines the max number of players per category.&lt;br /&gt;
&lt;br /&gt;
For more, see [[Options_(object)|Options Object]].&lt;br /&gt;
&lt;br /&gt;
We now come to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
box &lt;br /&gt;
  name box1      # Generally unused&lt;br /&gt;
  position 0 0 0 # X Y Z Position&lt;br /&gt;
  size 10 10 10  # X Y Z Size (bzunits from the position of the box)&lt;br /&gt;
  rotation 0     # Rotation (in degrees)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is a &amp;lt;box&amp;gt; with a &amp;lt;name&amp;gt; of &amp;lt;box1&amp;gt;.&lt;br /&gt;
The &amp;lt;position&amp;gt; is 0,0,0 in R3[http://en.wikipedia.org/wiki/R3].&lt;br /&gt;
The rest is pretty self explanatory.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; EVERY STATEMENT MUST HAVE AN END.&lt;br /&gt;
&lt;br /&gt;
===Basic Definitions===&lt;br /&gt;
;Objects&lt;br /&gt;
:Objects are the basic building blocks of the bzw file.  Objects begin with a line declaring the object, some fields describing that object, and a line that closes the object (usually with &amp;quot;end&amp;quot;).  Each of these sections of the object is important.&lt;br /&gt;
;Comments&lt;br /&gt;
:BZFS ignores anything in a line following the #; the line has been &amp;quot;commented out.&amp;quot;  It is highly recommended that comments be used often, both for the mapmaker and for others that may see the map.&lt;br /&gt;
;3D Cartesian Coordinate System&lt;br /&gt;
:In most objects, you will see three numbers after position and size. These numbers are coordinates on a graph. The first number is the x coordinate (left and right) the middle number is the y coordinate (forward and backward) and the third number is the z coordinate (height and depth). Another way of thinking of it is: x = width, y = depth, z = height. (Those accustomed to the Y axis determining height will have to slightly adjust their thinking.) &lt;br /&gt;
&lt;br /&gt;
==Sample Objects==&lt;br /&gt;
===The Box===&lt;br /&gt;
Perhaps the simplest object is the box.  There is actually nothing special you can do to it (but in versions of BZFlag from 2.0.8 up, you can do a lot more to it).  Here is an example of a box:&lt;br /&gt;
&lt;br /&gt;
 box&lt;br /&gt;
   name box1             # Optional, but good to include&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   rotation 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the first line, notice the word &amp;quot;box&amp;quot;.  It simply says the next object is a box.  The next line is the name of the object.  It is defined with the syntax &amp;quot;&amp;lt;tt&amp;gt;name &#039;&#039;objectName&#039;&#039;&amp;lt;/tt&amp;gt;&amp;quot;.  It is not required, but is good to include (if you have a LOT of boxes, how do you know which is which?  Naming them--as well as other objects--helps you keep track).  The third line defines the position of the center of the bottom of the object.  The three arguments of &amp;lt;tt&amp;gt;position&amp;lt;/tt&amp;gt; are the x, y, and z coordinates of the box, respectively.  The x and y coordinates can be positive or negative, but the z coordinate should just be positive or zero.  On the fourth line, the size of the box is defined.  The arguments of &amp;lt;tt&amp;gt;size&amp;lt;/tt&amp;gt; are the x, y, and z sizes of the object, respectively.  The x and y arguments make the box that wide on both sides of it&#039;s position.  However, the z argument makes the object exactly the number of units tall as defined.  In other words, the box shown above, with a size of &#039;10 10 10&#039; is actually 20 units by 20 units by 10 units high, so if you want a box that is a perfect cube, you would need to make the height, or Z dimension, &#039;20&#039;. The next line just says how much the object is rotated.  This number is the number of degrees of rotation, and can be negative or positive.  The last line just tells BZFlag the object is done, and a new one can be defined.  Be sure to &#039;&#039;&#039;always&#039;&#039;&#039; use this.&lt;br /&gt;
&lt;br /&gt;
Below is an image of a box with a size of 5 5 10.&lt;br /&gt;
&lt;br /&gt;
[[Image:box.jpg]]&lt;br /&gt;
&lt;br /&gt;
===The Cone===&lt;br /&gt;
Most objects have similar parameters as the basic box.  For instance, the code for a cone may look something like this:&lt;br /&gt;
&lt;br /&gt;
 cone&lt;br /&gt;
   name cone1&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 20&lt;br /&gt;
   divisions 128&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Divisions basically decide how smooth the cone is.  The higher the divisions the more smooth the cone is.  A division of 4 would look like a pyramid.  Another parameter that can be added to the cone object is angle. If you say angle 180, that would make 1/2 of a cone, 90 would make 1/4 of a cone, and so on. &lt;br /&gt;
&lt;br /&gt;
===The Arc===&lt;br /&gt;
&lt;br /&gt;
An arc is basically a cylinder. However it doesn’t have to be a perfect cylinder depending on certain options you select. For an arc the only required options are divisions, position and size. Just like the cone divisions have the same effect, position and size are all the same. Once again you can have an oval shaped cylinder type thing. Now, you WILL find more options to an arc than to a cone, for example the ratio option. The ratio options let you basically put a hole in the cylinder. So if you have the option: ratio 1 you would have a full cylinder. If you say for example ratio .3 or any number less than 1 you will get a hole in the cylinder. The bigger the number, the smaller the hole. Angle allows you to do a semicircle. Rotation, once again, isn&#039;t really needed, unless you need a semicircle that has a certain specific orientation in your map. all the options like spin and shear are the same for this object too! phydrv and matref I’ll show later. &lt;br /&gt;
&lt;br /&gt;
The screenshot below shows three arcs.  The only difference between them is the inner radius number.  The first is set to 1, the second to .5, and the third to .1.  Notice how the texture on the top surface of the arc becomes &amp;quot;stretched&amp;quot; when the radius is less than one.&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0015.png]]&lt;br /&gt;
&lt;br /&gt;
Here is the code for the arc with the .1 ratio:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
arc&lt;br /&gt;
	divisions 16 # number of subdivisions&lt;br /&gt;
	angle 360 # the sweep angle&lt;br /&gt;
	ratio .1 # (outrad - inrad) / outrad&lt;br /&gt;
	position 0.0 -42 0.0&lt;br /&gt;
	size 10 10 1&lt;br /&gt;
	rotation 0.0&lt;br /&gt;
	shift 0 0 0 # (repeatable)&lt;br /&gt;
	scale 1 1 1 # (repeatable)&lt;br /&gt;
	shear 0 0 0 # (repeatable)&lt;br /&gt;
	smoothbounce # ricochets use normals&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now lets see what happens if we change the angle value.  The ones below use 60, 120, and 240.  This is where you would need to use rotate to get the arc oriented the way you want.&lt;br /&gt;
&lt;br /&gt;
[[Image:Arcs.jpg]]&lt;br /&gt;
&lt;br /&gt;
Here is the code for the 60 degree arc:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
arc&lt;br /&gt;
	divisions 16 # number of subdivisions&lt;br /&gt;
	angle 60 # the sweep angle&lt;br /&gt;
	ratio .5 # (outrad - inrad) / outrad&lt;br /&gt;
	position 0.0 0.0 0.0&lt;br /&gt;
	size 10 10 1&lt;br /&gt;
	rotation 0.0&lt;br /&gt;
	shift 0 0 0 # (repeatable)&lt;br /&gt;
	scale 1 1 1 # (repeatable)&lt;br /&gt;
	shear 0 0 0 # (repeatable)&lt;br /&gt;
	smoothbounce # ricochets use normals&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let’s move to the sphere:&lt;br /&gt;
&lt;br /&gt;
===The Sphere===&lt;br /&gt;
&lt;br /&gt;
The only options required to make a sphere are position, size, and divisions. &lt;br /&gt;
All these options do the same thing as they did in the objects above.  You may also have an oval like sphere.  You make an oval like sphere simply by making the x and y&#039;s different sizes just like in the cone and arc.  The radius option is just a substitute for size.  You can write size 10 10 10 or radius 10.  Both do the same thing. However if you want an oval shaped sphere you have to use size.  Rotation wouldn&#039;t really have an effect and the shear and spin works the same for this object.&lt;br /&gt;
&lt;br /&gt;
==Getting more help==&lt;br /&gt;
*The links at the bottom of the [[:Category:Map Making|Map Making]] page.&lt;br /&gt;
*The original creator of this page is flight, you can email him at dirtbikerdude_91@yahoo.com and he will be happy to answer any questions that he is capable of answering.&lt;br /&gt;
&lt;br /&gt;
==Special Objects==&lt;br /&gt;
There are certain objects that are often coded by hand because it is simpler or it is impossible to do with graphical map creation tools.  &lt;br /&gt;
&lt;br /&gt;
===Materials ===&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_bolt.png &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
Material is letting the computer know that a material is about to be explained to it.  You name it so that way you can reference it with the matref.  The name can be any thing you want as long as it does not have any spaces.  You type in &amp;lt;tt&amp;gt;addtexture&amp;lt;/tt&amp;gt; and you state a texture name.  Now, how do you know what texture names there are to use?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Linux&#039;&#039;&#039;: Running &amp;lt;tt&amp;gt;ls /usr/share/bzflag/*.png&amp;lt;/tt&amp;gt; in a terminal will show the list of pictures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Mac&#039;&#039;&#039;: If you control click (right click) on the bzflag icon, click show package contents, click contents, and click resources, those are the pictures you may use. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Windows&#039;&#039;&#039;: The default path is &amp;lt;tt&amp;gt;C:\Program Files\BZFlag\data\*.png&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What you will find are images that are used in every day games.  The top of a base, the wall of a base. A bullet which is blue_bolt.png (as was used above).  The full path to the texture needs to be used if the texture is not found in that directory.  Any customized textures should be uploaded to the [http://images.bzflag.org/submitimages/ BZFlag Image Submission System] before the map is hosted publicly.&lt;br /&gt;
&lt;br /&gt;
Servers running bzfs 2.0.8 and earlier will require &amp;quot;meshbox&amp;quot; and &amp;quot;meshpyr&amp;quot; in order to apply textures and physics to these objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instead of creating a new texture, many interesting and creative things can be done with the &amp;quot;diffuse&amp;quot; parameter in the material object.  You can add the diffuse command and it will look like this diffuse 1 1 1 1.  The first number is the amount of red that will be in the meshobject.  The second number is the amount of green, the third is the amount of blue.  So you can mix those colors to make more colors.  You may use a range from 0-1.  For example diffuse .3 .5 .26 1.  The fourth number determines the opacity or transparency (the see-throughability).  0 is invisible, .5 is half invisible, and 1 is normal. &lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   diffuse .5 .25 .1 .6 &lt;br /&gt;
   addtexture mesh.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Physics===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Physics make your tank behave in different ways.  If you have ever played laser mania by Louman than you know on the outskirts of the map there is something you can jump on and you go really fast, that is a physics. Physics and materials work the same way.  Physics is to material as phydrv is to matref.  You must specify a physics then on a meshbox, meshpyr cone arc sphere or whatever, you can reference that physics by using the phydrv command just like you would use the matref command for materials.  There are different physics commands.  Linear, angular, slide and death.  In the Louman map I mentioned above is a linear physics.  Linear physics makes your tank move in a line.  The numbers after a linear command are just like position x y z.  Example:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   linear 50 0 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive x direction you may use -50 and it will make it go the other way.&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy2 &lt;br /&gt;
   linear 0 50 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive y direction &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy3 &lt;br /&gt;
   linear 0 0 50 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank jump at a speed of 50 &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy4 &lt;br /&gt;
   slide 5 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank basically feel like it&#039;s on ice.  Whichever way the tank is moving it will keep moving that way. &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy5 &lt;br /&gt;
   death haha! you died &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make the tank die when it touches the object that refers to this and the message haha! you died will be displayed to that person. &lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   death I like you better dead! &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   phydrv phy1                       # Or what ever you named the physics.&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This works just like the material &lt;br /&gt;
&lt;br /&gt;
The thing about physics and materials is that they have to be written before they are referenced. &lt;br /&gt;
&lt;br /&gt;
This &#039;&#039;&#039;won&#039;t&#039;&#039;&#039; work &lt;br /&gt;
&lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_team.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
A group is cluster of objects that can be &amp;quot;gathered together&amp;quot; and treated as if they were a single object.  Certain things cannot be included in groups:&lt;br /&gt;
&lt;br /&gt;
*textureMatrix&lt;br /&gt;
&lt;br /&gt;
*dynamicColor&lt;br /&gt;
&lt;br /&gt;
*material&lt;br /&gt;
&lt;br /&gt;
*physics&lt;br /&gt;
&lt;br /&gt;
*links&lt;br /&gt;
&lt;br /&gt;
*weapon&lt;br /&gt;
&lt;br /&gt;
*zone&lt;br /&gt;
&lt;br /&gt;
Notice that while teleporters aren&#039;t excluded from groups, you can&#039;t create links to teleporters within a group, except for purely random ones using &amp;quot;*&amp;quot;(asterisk) for the link.&lt;br /&gt;
&lt;br /&gt;
Groups can be nested (you can have a group that is included in another group).&lt;br /&gt;
&lt;br /&gt;
For example if a map editor is making a forest, and each tree contains 2 objects, the editor doesn&#039;t want to type up the code for each tree over and over again. What he can do is tell BZFS that these objects = tree. And then whenever he wants to make a tree he just calls that group, as shown below.&lt;br /&gt;
&lt;br /&gt;
Example-----------&lt;br /&gt;
&lt;br /&gt;
first define a group of obects as a tree &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  define tree&lt;br /&gt;
  &lt;br /&gt;
  box&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  size 2 2 4&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  pyramid&lt;br /&gt;
  position 0 0 3&lt;br /&gt;
  size 5 5 10&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  enddef&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
...then, to call the &amp;quot;tree&amp;quot; group, just:&lt;br /&gt;
&lt;br /&gt;
  group tree&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
==Transformations==&lt;br /&gt;
[[Category:Map Making]]&lt;br /&gt;
Transformations are simple ways of modifying objects so that maps have some variety. These can get complicated so I will only give you a sample of what they can do. There are 3 transformations shift, spin, and shear. You can find a different also helpful page here [[3d Transformations]]&lt;br /&gt;
&lt;br /&gt;
====Shift====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shift&#039;&#039;&#039; moves an object by the amount of units that you specify from its present position.&lt;br /&gt;
the object..&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at place 10 10 0&lt;br /&gt;
&lt;br /&gt;
while the object..&lt;br /&gt;
&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  shift 0 0 10&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at position 10 10 10.&lt;br /&gt;
&lt;br /&gt;
====Spin====&lt;br /&gt;
Spinning an object is just like rotating an object but can be on a different axis. (y and x)&lt;br /&gt;
When you rotate it is around the center of the object.&lt;br /&gt;
Remember: Only spin-able objects can be spun.&lt;br /&gt;
Here is what the code looks like:&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
 end&lt;br /&gt;
The meshbox will now be tilted 45 degrees on its y axis.&lt;br /&gt;
Spin code has four numbers, the first one is how many degrees to spin.&lt;br /&gt;
The last three are for which axis&#039;s to spin, by placing a value of more than 0.&lt;br /&gt;
Spin can be a bit tricky and unintuitive to use.  It is not exactly like rotate, because it is possible to &amp;quot;spin&amp;quot; something so that it ends up &amp;quot;underneath&amp;quot; the BZFlag playing field.&lt;br /&gt;
&lt;br /&gt;
Spin is often best used with shift.  Think of the center of your map as a sort of &amp;quot;construction yard&amp;quot;.  You position objects at location 0 0 0, then spin and shift them to the location you want.&lt;br /&gt;
&lt;br /&gt;
Here is what you get if you use the above code in a map:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0012.png]]&lt;br /&gt;
&lt;br /&gt;
Looks fairly normal in this screenshot, doesn&#039;t it.  But if you drive around, the box will behave oddly, and appear to &amp;quot;float&amp;quot; in front of your HUD.  What has happened is that the box hasn&#039;t rotated around it&#039;s own axis, but around the world axis for the whole BZFlag arena!  But if we add some code to shift the box up above the z plane, it will look normal in-game.&lt;br /&gt;
&lt;br /&gt;
So if we make a simple change to the above code and add a shift statement and shift the box up in z (this is not the z axis of the box, but the world axis of our game arena):&lt;br /&gt;
&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
   shift 0 0 10&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
...we get this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0013.png]]&lt;br /&gt;
&lt;br /&gt;
... and the box doesn&#039;t do the weird &amp;quot;float&amp;quot; thing any more.  This &amp;quot;construction yard&amp;quot; technique is really handy, you just &amp;quot;build&amp;quot; your stuff smack in the middle of your map, then spin and shift it to where you want it (in the example above, it could have been shifted in x and y as well.  Just don&#039;t shift and then spin, or you will be back to having things &amp;quot;float&amp;quot; again.&lt;br /&gt;
&lt;br /&gt;
With shift and spin you can also work with groups and make a &amp;quot;master&amp;quot; group in the middle of your map, then shift and spin multiple copies to other locations on your map.&lt;/div&gt;</summary>
		<author><name>ClayOgre</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=File:Arcs.jpg&amp;diff=7361</id>
		<title>File:Arcs.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=File:Arcs.jpg&amp;diff=7361"/>
		<updated>2010-11-06T02:05:22Z</updated>

		<summary type="html">&lt;p&gt;ClayOgre: Three Arcs with different angle values&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Three Arcs with different angle values&lt;/div&gt;</summary>
		<author><name>ClayOgre</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7360</id>
		<title>Map making by hand</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7360"/>
		<updated>2010-11-06T01:58:26Z</updated>

		<summary type="html">&lt;p&gt;ClayOgre: /* The Arc */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoDoc|Major re-organization, transform away from &amp;quot;chat&amp;quot; style. Need to reference pages elsewhere on the wiki in place of much of the content which appears to be building up here.  Create them if necessary, or see the list [[Special:Allpages|here]].}}&lt;br /&gt;
Although there are a number of GUI options for creating maps such as BZ-Edit, 3D modelers, many map-makers use a basic text-editor.  There are many times when it is necessary to make small changes to a map, such as including objects that are unavailable in GUI map-maker, but there are also some who enjoy the challenge of creating a map entirely from scratch with a text-editor.&lt;br /&gt;
&lt;br /&gt;
==Text Editors==&lt;br /&gt;
Most text-editors designed for coding/programming are more than sufficient for editing bzw files.  Although word-processing programs such as Microsoft Word can be used, there are many cheaper (free) and more efficient programs designed specifically for coding. If you are interested in syntax highlighting, look at the [http://my.bzflag.org/bb/viewtopic.php?f=24&amp;amp;t=16037&amp;amp;p=148953 forum topic].&lt;br /&gt;
===Windows===&lt;br /&gt;
*Notepad&lt;br /&gt;
*PSPad&lt;br /&gt;
*NoteTab&lt;br /&gt;
*[http://notepad-plus-plus.org/ Notepad ++] - a tabbed editor based on Scite.&lt;br /&gt;
&lt;br /&gt;
===Mac===&lt;br /&gt;
*TextWrangler&lt;br /&gt;
*TextEdit&lt;br /&gt;
===Linux===&lt;br /&gt;
*Command-line editors such as nano, emacs, pico, vim, or ed.&lt;br /&gt;
*GEdit&lt;br /&gt;
*Kate&lt;br /&gt;
*Scite&lt;br /&gt;
&lt;br /&gt;
==Editing existing maps==&lt;br /&gt;
Beginning mapmakers should spend some time studying and making small changes in existing maps to see how things work.  In the client, maps can be saved for editing by joining the desired server and choosing: Options&amp;gt;Save World.  Maps can also be saved by issuing the /saveworld command.  The map should be a simple map when getting started.  One may find it easier to create a file in BZEdit and open the resulting file in the text-editor.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
If you have created a box in BZEdit you may see:&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
 world &lt;br /&gt;
   size 400 &lt;br /&gt;
 end &lt;br /&gt;
 options &lt;br /&gt;
   +r &lt;br /&gt;
   -j &lt;br /&gt;
   -set _tankSpeed 25 &lt;br /&gt;
   -ms 5 &lt;br /&gt;
   -mp 0,2,0,2,0,2 &lt;br /&gt;
 end &lt;br /&gt;
 box &lt;br /&gt;
   name box1 &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
 end &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===What that means===&lt;br /&gt;
&amp;quot;There are set variables that define various things such as how fast your tank is, how fast the bullets are, or if it&#039;s raining or foggy.  Put those in the options setting with &amp;quot;-set(space) &amp;quot; in front of it. You can also make those changes as an admin by using /set _variable (notice there is a space between the set and the _).  A full list of these settings can be found on the [[Server Variables]] page.  Other options, such as how many times a flag can be grabbed before it resets or if flags can land on buildings are explained [http://my.bzflag.org/bb/files/antigrav4teamconf_114.txt in this forum post]&lt;br /&gt;
Optionally, the variables can be placed in a separate configuration file and referenced when the server is started.&amp;quot;&lt;br /&gt;
&#039;&#039;&#039;old&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, it says:&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
(Note: the # sign is used for comments.)&lt;br /&gt;
&lt;br /&gt;
This is the text added by the application initially, kind of like advertising. This will be the first thing anyone sees when they look at the map.&lt;br /&gt;
&lt;br /&gt;
The next thing is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
world &lt;br /&gt;
  size 400 # Sets the world size to 400 (800 x 800 total)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is rather self-explanatory. It&#039;s the &amp;lt;size&amp;gt; of the &amp;lt;world&amp;gt; (The BZFlag arena).&lt;br /&gt;
&lt;br /&gt;
Next is an &amp;lt;options&amp;gt; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options &lt;br /&gt;
  +r   # Enable Ricochet&lt;br /&gt;
  -j   # Enable Jumping&lt;br /&gt;
  -set _tankSpeed 25  # Sets the tank speed to 25 bzunits/second&lt;br /&gt;
  -ms 5  # Sets the maximum shots (per tank) to 5&lt;br /&gt;
  -mp 0,2,0,2,0,2  # Maximum of 2 Red Players, 2 Blue Players, and 2 Observers&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This allows you to define in the map file certain options that are also available from the command line when you start the bzfs server, or in the optional server config file.  Options embedded into a world file will override those input on the command line or in a config file.&lt;br /&gt;
&lt;br /&gt;
The commands listed here are:&lt;br /&gt;
Ricochet, Jumping, Tank speed, Max Shots, and Max Players.&lt;br /&gt;
These are rather self explanatory, except for Max Players. Each number represents how many of each of the following team players are allowed in the game (in the order listed): Rogue, Red, Green, Blue, Purple, Observer. Each number defines the max number of players per category.&lt;br /&gt;
&lt;br /&gt;
For more, see [[Options_(object)|Options Object]].&lt;br /&gt;
&lt;br /&gt;
We now come to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
box &lt;br /&gt;
  name box1      # Generally unused&lt;br /&gt;
  position 0 0 0 # X Y Z Position&lt;br /&gt;
  size 10 10 10  # X Y Z Size (bzunits from the position of the box)&lt;br /&gt;
  rotation 0     # Rotation (in degrees)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is a &amp;lt;box&amp;gt; with a &amp;lt;name&amp;gt; of &amp;lt;box1&amp;gt;.&lt;br /&gt;
The &amp;lt;position&amp;gt; is 0,0,0 in R3[http://en.wikipedia.org/wiki/R3].&lt;br /&gt;
The rest is pretty self explanatory.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; EVERY STATEMENT MUST HAVE AN END.&lt;br /&gt;
&lt;br /&gt;
===Basic Definitions===&lt;br /&gt;
;Objects&lt;br /&gt;
:Objects are the basic building blocks of the bzw file.  Objects begin with a line declaring the object, some fields describing that object, and a line that closes the object (usually with &amp;quot;end&amp;quot;).  Each of these sections of the object is important.&lt;br /&gt;
;Comments&lt;br /&gt;
:BZFS ignores anything in a line following the #; the line has been &amp;quot;commented out.&amp;quot;  It is highly recommended that comments be used often, both for the mapmaker and for others that may see the map.&lt;br /&gt;
;3D Cartesian Coordinate System&lt;br /&gt;
:In most objects, you will see three numbers after position and size. These numbers are coordinates on a graph. The first number is the x coordinate (left and right) the middle number is the y coordinate (forward and backward) and the third number is the z coordinate (height and depth). Another way of thinking of it is: x = width, y = depth, z = height. (Those accustomed to the Y axis determining height will have to slightly adjust their thinking.) &lt;br /&gt;
&lt;br /&gt;
==Sample Objects==&lt;br /&gt;
===The Box===&lt;br /&gt;
Perhaps the simplest object is the box.  There is actually nothing special you can do to it (but in versions of BZFlag from 2.0.8 up, you can do a lot more to it).  Here is an example of a box:&lt;br /&gt;
&lt;br /&gt;
 box&lt;br /&gt;
   name box1             # Optional, but good to include&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   rotation 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the first line, notice the word &amp;quot;box&amp;quot;.  It simply says the next object is a box.  The next line is the name of the object.  It is defined with the syntax &amp;quot;&amp;lt;tt&amp;gt;name &#039;&#039;objectName&#039;&#039;&amp;lt;/tt&amp;gt;&amp;quot;.  It is not required, but is good to include (if you have a LOT of boxes, how do you know which is which?  Naming them--as well as other objects--helps you keep track).  The third line defines the position of the center of the bottom of the object.  The three arguments of &amp;lt;tt&amp;gt;position&amp;lt;/tt&amp;gt; are the x, y, and z coordinates of the box, respectively.  The x and y coordinates can be positive or negative, but the z coordinate should just be positive or zero.  On the fourth line, the size of the box is defined.  The arguments of &amp;lt;tt&amp;gt;size&amp;lt;/tt&amp;gt; are the x, y, and z sizes of the object, respectively.  The x and y arguments make the box that wide on both sides of it&#039;s position.  However, the z argument makes the object exactly the number of units tall as defined.  In other words, the box shown above, with a size of &#039;10 10 10&#039; is actually 20 units by 20 units by 10 units high, so if you want a box that is a perfect cube, you would need to make the height, or Z dimension, &#039;20&#039;. The next line just says how much the object is rotated.  This number is the number of degrees of rotation, and can be negative or positive.  The last line just tells BZFlag the object is done, and a new one can be defined.  Be sure to &#039;&#039;&#039;always&#039;&#039;&#039; use this.&lt;br /&gt;
&lt;br /&gt;
Below is an image of a box with a size of 5 5 10.&lt;br /&gt;
&lt;br /&gt;
[[Image:box.jpg]]&lt;br /&gt;
&lt;br /&gt;
===The Cone===&lt;br /&gt;
Most objects have similar parameters as the basic box.  For instance, the code for a cone may look something like this:&lt;br /&gt;
&lt;br /&gt;
 cone&lt;br /&gt;
   name cone1&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 20&lt;br /&gt;
   divisions 128&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Divisions basically decide how smooth the cone is.  The higher the divisions the more smooth the cone is.  A division of 4 would look like a pyramid.  Another parameter that can be added to the cone object is angle. If you say angle 180, that would make 1/2 of a cone, 90 would make 1/4 of a cone, and so on. &lt;br /&gt;
&lt;br /&gt;
===The Arc===&lt;br /&gt;
&lt;br /&gt;
An arc is basically a cylinder. However it doesn’t have to be a perfect cylinder depending on certain options you select. For an arc the only required options are divisions, position and size. Just like the cone divisions have the same effect, position and size are all the same. Once again you can have an oval shaped cylinder type thing. Now, you WILL find more options to an arc than to a cone, for example the ratio option. The ratio options let you basically put a hole in the cylinder. So if you have the option: ratio 1 you would have a full cylinder. If you say for example ratio .3 or any number less than 1 you will get a hole in the cylinder. The bigger the number, the smaller the hole. Angle allows you to do a semicircle. Rotation, once again, isn&#039;t really needed, unless you need a semicircle that has a certain specific orientation in your map. all the options like spin and shear are the same for this object too! phydrv and matref I’ll show later. &lt;br /&gt;
&lt;br /&gt;
The screenshot below shows three arcs.  The only difference between them is the inner radius number.  The first is set to 1, the second to .5, and the third to .1.  Notice how the texture on the top surface of the arc becomes &amp;quot;stretched&amp;quot; when the radius is less than one.&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0015.png]]&lt;br /&gt;
&lt;br /&gt;
And the code for the above:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
arc&lt;br /&gt;
	divisions 16 # number of subdivisions&lt;br /&gt;
	angle 360 # the sweep angle&lt;br /&gt;
	ratio 1 # (outrad - inrad) / outrad&lt;br /&gt;
	position 0.0 0.0 0.0&lt;br /&gt;
	size 10 10 1&lt;br /&gt;
	rotation 0.0&lt;br /&gt;
	shift 0 0 0 # (repeatable)&lt;br /&gt;
	scale 1 1 1 # (repeatable)&lt;br /&gt;
	shear 0 0 0 # (repeatable)&lt;br /&gt;
	smoothbounce # ricochets use normals&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
arc&lt;br /&gt;
	divisions 16 # number of subdivisions&lt;br /&gt;
	angle 360 # the sweep angle&lt;br /&gt;
	ratio .5 # (outrad - inrad) / outrad&lt;br /&gt;
	position 0.0 -21 0.0&lt;br /&gt;
	size 10 10 1&lt;br /&gt;
	rotation 0.0&lt;br /&gt;
	shift 0 0 0 # (repeatable)&lt;br /&gt;
	scale 1 1 1 # (repeatable)&lt;br /&gt;
	shear 0 0 0 # (repeatable)&lt;br /&gt;
	smoothbounce # ricochets use normals&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
arc&lt;br /&gt;
	divisions 16 # number of subdivisions&lt;br /&gt;
	angle 360 # the sweep angle&lt;br /&gt;
	ratio .1 # (outrad - inrad) / outrad&lt;br /&gt;
	position 0.0 -42 0.0&lt;br /&gt;
	size 10 10 1&lt;br /&gt;
	rotation 0.0&lt;br /&gt;
	shift 0 0 0 # (repeatable)&lt;br /&gt;
	scale 1 1 1 # (repeatable)&lt;br /&gt;
	shear 0 0 0 # (repeatable)&lt;br /&gt;
	smoothbounce # ricochets use normals&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let’s move to the sphere:&lt;br /&gt;
&lt;br /&gt;
===The Sphere===&lt;br /&gt;
&lt;br /&gt;
The only options required to make a sphere are position, size, and divisions. &lt;br /&gt;
All these options do the same thing as they did in the objects above.  You may also have an oval like sphere.  You make an oval like sphere simply by making the x and y&#039;s different sizes just like in the cone and arc.  The radius option is just a substitute for size.  You can write size 10 10 10 or radius 10.  Both do the same thing. However if you want an oval shaped sphere you have to use size.  Rotation wouldn&#039;t really have an effect and the shear and spin works the same for this object.&lt;br /&gt;
&lt;br /&gt;
==Getting more help==&lt;br /&gt;
*The links at the bottom of the [[:Category:Map Making|Map Making]] page.&lt;br /&gt;
*The original creator of this page is flight, you can email him at dirtbikerdude_91@yahoo.com and he will be happy to answer any questions that he is capable of answering.&lt;br /&gt;
&lt;br /&gt;
==Special Objects==&lt;br /&gt;
There are certain objects that are often coded by hand because it is simpler or it is impossible to do with graphical map creation tools.  &lt;br /&gt;
&lt;br /&gt;
===Materials ===&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_bolt.png &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
Material is letting the computer know that a material is about to be explained to it.  You name it so that way you can reference it with the matref.  The name can be any thing you want as long as it does not have any spaces.  You type in &amp;lt;tt&amp;gt;addtexture&amp;lt;/tt&amp;gt; and you state a texture name.  Now, how do you know what texture names there are to use?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Linux&#039;&#039;&#039;: Running &amp;lt;tt&amp;gt;ls /usr/share/bzflag/*.png&amp;lt;/tt&amp;gt; in a terminal will show the list of pictures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Mac&#039;&#039;&#039;: If you control click (right click) on the bzflag icon, click show package contents, click contents, and click resources, those are the pictures you may use. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Windows&#039;&#039;&#039;: The default path is &amp;lt;tt&amp;gt;C:\Program Files\BZFlag\data\*.png&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What you will find are images that are used in every day games.  The top of a base, the wall of a base. A bullet which is blue_bolt.png (as was used above).  The full path to the texture needs to be used if the texture is not found in that directory.  Any customized textures should be uploaded to the [http://images.bzflag.org/submitimages/ BZFlag Image Submission System] before the map is hosted publicly.&lt;br /&gt;
&lt;br /&gt;
Servers running bzfs 2.0.8 and earlier will require &amp;quot;meshbox&amp;quot; and &amp;quot;meshpyr&amp;quot; in order to apply textures and physics to these objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instead of creating a new texture, many interesting and creative things can be done with the &amp;quot;diffuse&amp;quot; parameter in the material object.  You can add the diffuse command and it will look like this diffuse 1 1 1 1.  The first number is the amount of red that will be in the meshobject.  The second number is the amount of green, the third is the amount of blue.  So you can mix those colors to make more colors.  You may use a range from 0-1.  For example diffuse .3 .5 .26 1.  The fourth number determines the opacity or transparency (the see-throughability).  0 is invisible, .5 is half invisible, and 1 is normal. &lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   diffuse .5 .25 .1 .6 &lt;br /&gt;
   addtexture mesh.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Physics===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Physics make your tank behave in different ways.  If you have ever played laser mania by Louman than you know on the outskirts of the map there is something you can jump on and you go really fast, that is a physics. Physics and materials work the same way.  Physics is to material as phydrv is to matref.  You must specify a physics then on a meshbox, meshpyr cone arc sphere or whatever, you can reference that physics by using the phydrv command just like you would use the matref command for materials.  There are different physics commands.  Linear, angular, slide and death.  In the Louman map I mentioned above is a linear physics.  Linear physics makes your tank move in a line.  The numbers after a linear command are just like position x y z.  Example:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   linear 50 0 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive x direction you may use -50 and it will make it go the other way.&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy2 &lt;br /&gt;
   linear 0 50 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive y direction &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy3 &lt;br /&gt;
   linear 0 0 50 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank jump at a speed of 50 &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy4 &lt;br /&gt;
   slide 5 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank basically feel like it&#039;s on ice.  Whichever way the tank is moving it will keep moving that way. &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy5 &lt;br /&gt;
   death haha! you died &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make the tank die when it touches the object that refers to this and the message haha! you died will be displayed to that person. &lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   death I like you better dead! &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   phydrv phy1                       # Or what ever you named the physics.&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This works just like the material &lt;br /&gt;
&lt;br /&gt;
The thing about physics and materials is that they have to be written before they are referenced. &lt;br /&gt;
&lt;br /&gt;
This &#039;&#039;&#039;won&#039;t&#039;&#039;&#039; work &lt;br /&gt;
&lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_team.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
A group is cluster of objects that can be &amp;quot;gathered together&amp;quot; and treated as if they were a single object.  Certain things cannot be included in groups:&lt;br /&gt;
&lt;br /&gt;
*textureMatrix&lt;br /&gt;
&lt;br /&gt;
*dynamicColor&lt;br /&gt;
&lt;br /&gt;
*material&lt;br /&gt;
&lt;br /&gt;
*physics&lt;br /&gt;
&lt;br /&gt;
*links&lt;br /&gt;
&lt;br /&gt;
*weapon&lt;br /&gt;
&lt;br /&gt;
*zone&lt;br /&gt;
&lt;br /&gt;
Notice that while teleporters aren&#039;t excluded from groups, you can&#039;t create links to teleporters within a group, except for purely random ones using &amp;quot;*&amp;quot;(asterisk) for the link.&lt;br /&gt;
&lt;br /&gt;
Groups can be nested (you can have a group that is included in another group).&lt;br /&gt;
&lt;br /&gt;
For example if a map editor is making a forest, and each tree contains 2 objects, the editor doesn&#039;t want to type up the code for each tree over and over again. What he can do is tell BZFS that these objects = tree. And then whenever he wants to make a tree he just calls that group, as shown below.&lt;br /&gt;
&lt;br /&gt;
Example-----------&lt;br /&gt;
&lt;br /&gt;
first define a group of obects as a tree &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  define tree&lt;br /&gt;
  &lt;br /&gt;
  box&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  size 2 2 4&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  pyramid&lt;br /&gt;
  position 0 0 3&lt;br /&gt;
  size 5 5 10&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  enddef&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
...then, to call the &amp;quot;tree&amp;quot; group, just:&lt;br /&gt;
&lt;br /&gt;
  group tree&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
==Transformations==&lt;br /&gt;
[[Category:Map Making]]&lt;br /&gt;
Transformations are simple ways of modifying objects so that maps have some variety. These can get complicated so I will only give you a sample of what they can do. There are 3 transformations shift, spin, and shear. You can find a different also helpful page here [[3d Transformations]]&lt;br /&gt;
&lt;br /&gt;
====Shift====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shift&#039;&#039;&#039; moves an object by the amount of units that you specify from its present position.&lt;br /&gt;
the object..&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at place 10 10 0&lt;br /&gt;
&lt;br /&gt;
while the object..&lt;br /&gt;
&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  shift 0 0 10&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at position 10 10 10.&lt;br /&gt;
&lt;br /&gt;
====Spin====&lt;br /&gt;
Spinning an object is just like rotating an object but can be on a different axis. (y and x)&lt;br /&gt;
When you rotate it is around the center of the object.&lt;br /&gt;
Remember: Only spin-able objects can be spun.&lt;br /&gt;
Here is what the code looks like:&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
 end&lt;br /&gt;
The meshbox will now be tilted 45 degrees on its y axis.&lt;br /&gt;
Spin code has four numbers, the first one is how many degrees to spin.&lt;br /&gt;
The last three are for which axis&#039;s to spin, by placing a value of more than 0.&lt;br /&gt;
Spin can be a bit tricky and unintuitive to use.  It is not exactly like rotate, because it is possible to &amp;quot;spin&amp;quot; something so that it ends up &amp;quot;underneath&amp;quot; the BZFlag playing field.&lt;br /&gt;
&lt;br /&gt;
Spin is often best used with shift.  Think of the center of your map as a sort of &amp;quot;construction yard&amp;quot;.  You position objects at location 0 0 0, then spin and shift them to the location you want.&lt;br /&gt;
&lt;br /&gt;
Here is what you get if you use the above code in a map:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0012.png]]&lt;br /&gt;
&lt;br /&gt;
Looks fairly normal in this screenshot, doesn&#039;t it.  But if you drive around, the box will behave oddly, and appear to &amp;quot;float&amp;quot; in front of your HUD.  What has happened is that the box hasn&#039;t rotated around it&#039;s own axis, but around the world axis for the whole BZFlag arena!  But if we add some code to shift the box up above the z plane, it will look normal in-game.&lt;br /&gt;
&lt;br /&gt;
So if we make a simple change to the above code and add a shift statement and shift the box up in z (this is not the z axis of the box, but the world axis of our game arena):&lt;br /&gt;
&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
   shift 0 0 10&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
...we get this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0013.png]]&lt;br /&gt;
&lt;br /&gt;
... and the box doesn&#039;t do the weird &amp;quot;float&amp;quot; thing any more.  This &amp;quot;construction yard&amp;quot; technique is really handy, you just &amp;quot;build&amp;quot; your stuff smack in the middle of your map, then spin and shift it to where you want it (in the example above, it could have been shifted in x and y as well.  Just don&#039;t shift and then spin, or you will be back to having things &amp;quot;float&amp;quot; again.&lt;br /&gt;
&lt;br /&gt;
With shift and spin you can also work with groups and make a &amp;quot;master&amp;quot; group in the middle of your map, then shift and spin multiple copies to other locations on your map.&lt;/div&gt;</summary>
		<author><name>ClayOgre</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7359</id>
		<title>Map making by hand</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7359"/>
		<updated>2010-11-06T01:56:31Z</updated>

		<summary type="html">&lt;p&gt;ClayOgre: /* The Arc */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoDoc|Major re-organization, transform away from &amp;quot;chat&amp;quot; style. Need to reference pages elsewhere on the wiki in place of much of the content which appears to be building up here.  Create them if necessary, or see the list [[Special:Allpages|here]].}}&lt;br /&gt;
Although there are a number of GUI options for creating maps such as BZ-Edit, 3D modelers, many map-makers use a basic text-editor.  There are many times when it is necessary to make small changes to a map, such as including objects that are unavailable in GUI map-maker, but there are also some who enjoy the challenge of creating a map entirely from scratch with a text-editor.&lt;br /&gt;
&lt;br /&gt;
==Text Editors==&lt;br /&gt;
Most text-editors designed for coding/programming are more than sufficient for editing bzw files.  Although word-processing programs such as Microsoft Word can be used, there are many cheaper (free) and more efficient programs designed specifically for coding. If you are interested in syntax highlighting, look at the [http://my.bzflag.org/bb/viewtopic.php?f=24&amp;amp;t=16037&amp;amp;p=148953 forum topic].&lt;br /&gt;
===Windows===&lt;br /&gt;
*Notepad&lt;br /&gt;
*PSPad&lt;br /&gt;
*NoteTab&lt;br /&gt;
*[http://notepad-plus-plus.org/ Notepad ++] - a tabbed editor based on Scite.&lt;br /&gt;
&lt;br /&gt;
===Mac===&lt;br /&gt;
*TextWrangler&lt;br /&gt;
*TextEdit&lt;br /&gt;
===Linux===&lt;br /&gt;
*Command-line editors such as nano, emacs, pico, vim, or ed.&lt;br /&gt;
*GEdit&lt;br /&gt;
*Kate&lt;br /&gt;
*Scite&lt;br /&gt;
&lt;br /&gt;
==Editing existing maps==&lt;br /&gt;
Beginning mapmakers should spend some time studying and making small changes in existing maps to see how things work.  In the client, maps can be saved for editing by joining the desired server and choosing: Options&amp;gt;Save World.  Maps can also be saved by issuing the /saveworld command.  The map should be a simple map when getting started.  One may find it easier to create a file in BZEdit and open the resulting file in the text-editor.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
If you have created a box in BZEdit you may see:&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
 world &lt;br /&gt;
   size 400 &lt;br /&gt;
 end &lt;br /&gt;
 options &lt;br /&gt;
   +r &lt;br /&gt;
   -j &lt;br /&gt;
   -set _tankSpeed 25 &lt;br /&gt;
   -ms 5 &lt;br /&gt;
   -mp 0,2,0,2,0,2 &lt;br /&gt;
 end &lt;br /&gt;
 box &lt;br /&gt;
   name box1 &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
 end &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===What that means===&lt;br /&gt;
&amp;quot;There are set variables that define various things such as how fast your tank is, how fast the bullets are, or if it&#039;s raining or foggy.  Put those in the options setting with &amp;quot;-set(space) &amp;quot; in front of it. You can also make those changes as an admin by using /set _variable (notice there is a space between the set and the _).  A full list of these settings can be found on the [[Server Variables]] page.  Other options, such as how many times a flag can be grabbed before it resets or if flags can land on buildings are explained [http://my.bzflag.org/bb/files/antigrav4teamconf_114.txt in this forum post]&lt;br /&gt;
Optionally, the variables can be placed in a separate configuration file and referenced when the server is started.&amp;quot;&lt;br /&gt;
&#039;&#039;&#039;old&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, it says:&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
(Note: the # sign is used for comments.)&lt;br /&gt;
&lt;br /&gt;
This is the text added by the application initially, kind of like advertising. This will be the first thing anyone sees when they look at the map.&lt;br /&gt;
&lt;br /&gt;
The next thing is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
world &lt;br /&gt;
  size 400 # Sets the world size to 400 (800 x 800 total)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is rather self-explanatory. It&#039;s the &amp;lt;size&amp;gt; of the &amp;lt;world&amp;gt; (The BZFlag arena).&lt;br /&gt;
&lt;br /&gt;
Next is an &amp;lt;options&amp;gt; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options &lt;br /&gt;
  +r   # Enable Ricochet&lt;br /&gt;
  -j   # Enable Jumping&lt;br /&gt;
  -set _tankSpeed 25  # Sets the tank speed to 25 bzunits/second&lt;br /&gt;
  -ms 5  # Sets the maximum shots (per tank) to 5&lt;br /&gt;
  -mp 0,2,0,2,0,2  # Maximum of 2 Red Players, 2 Blue Players, and 2 Observers&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This allows you to define in the map file certain options that are also available from the command line when you start the bzfs server, or in the optional server config file.  Options embedded into a world file will override those input on the command line or in a config file.&lt;br /&gt;
&lt;br /&gt;
The commands listed here are:&lt;br /&gt;
Ricochet, Jumping, Tank speed, Max Shots, and Max Players.&lt;br /&gt;
These are rather self explanatory, except for Max Players. Each number represents how many of each of the following team players are allowed in the game (in the order listed): Rogue, Red, Green, Blue, Purple, Observer. Each number defines the max number of players per category.&lt;br /&gt;
&lt;br /&gt;
For more, see [[Options_(object)|Options Object]].&lt;br /&gt;
&lt;br /&gt;
We now come to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
box &lt;br /&gt;
  name box1      # Generally unused&lt;br /&gt;
  position 0 0 0 # X Y Z Position&lt;br /&gt;
  size 10 10 10  # X Y Z Size (bzunits from the position of the box)&lt;br /&gt;
  rotation 0     # Rotation (in degrees)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is a &amp;lt;box&amp;gt; with a &amp;lt;name&amp;gt; of &amp;lt;box1&amp;gt;.&lt;br /&gt;
The &amp;lt;position&amp;gt; is 0,0,0 in R3[http://en.wikipedia.org/wiki/R3].&lt;br /&gt;
The rest is pretty self explanatory.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; EVERY STATEMENT MUST HAVE AN END.&lt;br /&gt;
&lt;br /&gt;
===Basic Definitions===&lt;br /&gt;
;Objects&lt;br /&gt;
:Objects are the basic building blocks of the bzw file.  Objects begin with a line declaring the object, some fields describing that object, and a line that closes the object (usually with &amp;quot;end&amp;quot;).  Each of these sections of the object is important.&lt;br /&gt;
;Comments&lt;br /&gt;
:BZFS ignores anything in a line following the #; the line has been &amp;quot;commented out.&amp;quot;  It is highly recommended that comments be used often, both for the mapmaker and for others that may see the map.&lt;br /&gt;
;3D Cartesian Coordinate System&lt;br /&gt;
:In most objects, you will see three numbers after position and size. These numbers are coordinates on a graph. The first number is the x coordinate (left and right) the middle number is the y coordinate (forward and backward) and the third number is the z coordinate (height and depth). Another way of thinking of it is: x = width, y = depth, z = height. (Those accustomed to the Y axis determining height will have to slightly adjust their thinking.) &lt;br /&gt;
&lt;br /&gt;
==Sample Objects==&lt;br /&gt;
===The Box===&lt;br /&gt;
Perhaps the simplest object is the box.  There is actually nothing special you can do to it (but in versions of BZFlag from 2.0.8 up, you can do a lot more to it).  Here is an example of a box:&lt;br /&gt;
&lt;br /&gt;
 box&lt;br /&gt;
   name box1             # Optional, but good to include&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   rotation 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the first line, notice the word &amp;quot;box&amp;quot;.  It simply says the next object is a box.  The next line is the name of the object.  It is defined with the syntax &amp;quot;&amp;lt;tt&amp;gt;name &#039;&#039;objectName&#039;&#039;&amp;lt;/tt&amp;gt;&amp;quot;.  It is not required, but is good to include (if you have a LOT of boxes, how do you know which is which?  Naming them--as well as other objects--helps you keep track).  The third line defines the position of the center of the bottom of the object.  The three arguments of &amp;lt;tt&amp;gt;position&amp;lt;/tt&amp;gt; are the x, y, and z coordinates of the box, respectively.  The x and y coordinates can be positive or negative, but the z coordinate should just be positive or zero.  On the fourth line, the size of the box is defined.  The arguments of &amp;lt;tt&amp;gt;size&amp;lt;/tt&amp;gt; are the x, y, and z sizes of the object, respectively.  The x and y arguments make the box that wide on both sides of it&#039;s position.  However, the z argument makes the object exactly the number of units tall as defined.  In other words, the box shown above, with a size of &#039;10 10 10&#039; is actually 20 units by 20 units by 10 units high, so if you want a box that is a perfect cube, you would need to make the height, or Z dimension, &#039;20&#039;. The next line just says how much the object is rotated.  This number is the number of degrees of rotation, and can be negative or positive.  The last line just tells BZFlag the object is done, and a new one can be defined.  Be sure to &#039;&#039;&#039;always&#039;&#039;&#039; use this.&lt;br /&gt;
&lt;br /&gt;
Below is an image of a box with a size of 5 5 10.&lt;br /&gt;
&lt;br /&gt;
[[Image:box.jpg]]&lt;br /&gt;
&lt;br /&gt;
===The Cone===&lt;br /&gt;
Most objects have similar parameters as the basic box.  For instance, the code for a cone may look something like this:&lt;br /&gt;
&lt;br /&gt;
 cone&lt;br /&gt;
   name cone1&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 20&lt;br /&gt;
   divisions 128&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Divisions basically decide how smooth the cone is.  The higher the divisions the more smooth the cone is.  A division of 4 would look like a pyramid.  Another parameter that can be added to the cone object is angle. If you say angle 180, that would make 1/2 of a cone, 90 would make 1/4 of a cone, and so on. &lt;br /&gt;
&lt;br /&gt;
===The Arc===&lt;br /&gt;
&lt;br /&gt;
An arc is basically a cylinder. However it doesn’t have to be a perfect cylinder depending on certain options you select. For an arc the only required options are divisions, position and size. Just like the cone divisions have the same effect, position and size are all the same. Once again you can have an oval shaped cylinder type thing. Now, you WILL find more options to an arc than to a cone, for example the ratio option. The ratio options let you basically put a hole in the cylinder. So if you have the option: ratio 1 you would have a full cylinder. If you say for example ratio .3 or any number less than 1 you will get a hole in the cylinder. The bigger the number, the smaller the hole. Angle allows you to do a semicircle. Rotation, once again, isn&#039;t really needed, unless you need a semicircle that has a certain specific orientation in your map. all the options like spin and shear are the same for this object too! phydrv and matref I’ll show later. &lt;br /&gt;
&lt;br /&gt;
The screenshot below shows three arcs.  The only difference between them is the inner radius number.  The first is set to 1, the second to .5, and the third to .1.&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0015.png]]&lt;br /&gt;
&lt;br /&gt;
And the code for the above:&lt;br /&gt;
&lt;br /&gt;
arc&lt;br /&gt;
	divisions 16 # number of subdivisions&lt;br /&gt;
	angle 360 # the sweep angle&lt;br /&gt;
	ratio 1 # (outrad - inrad) / outrad&lt;br /&gt;
	position 0.0 0.0 0.0&lt;br /&gt;
	size 10 10 1&lt;br /&gt;
	rotation 0.0&lt;br /&gt;
	shift 0 0 0 # (repeatable)&lt;br /&gt;
	scale 1 1 1 # (repeatable)&lt;br /&gt;
	shear 0 0 0 # (repeatable)&lt;br /&gt;
	smoothbounce # ricochets use normals&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
arc&lt;br /&gt;
	divisions 16 # number of subdivisions&lt;br /&gt;
	angle 360 # the sweep angle&lt;br /&gt;
	ratio .5 # (outrad - inrad) / outrad&lt;br /&gt;
	position 0.0 -21 0.0&lt;br /&gt;
	size 10 10 1&lt;br /&gt;
	rotation 0.0&lt;br /&gt;
	shift 0 0 0 # (repeatable)&lt;br /&gt;
	scale 1 1 1 # (repeatable)&lt;br /&gt;
	shear 0 0 0 # (repeatable)&lt;br /&gt;
	smoothbounce # ricochets use normals&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
arc&lt;br /&gt;
	divisions 16 # number of subdivisions&lt;br /&gt;
	angle 360 # the sweep angle&lt;br /&gt;
	ratio .1 # (outrad - inrad) / outrad&lt;br /&gt;
	position 0.0 -42 0.0&lt;br /&gt;
	size 10 10 1&lt;br /&gt;
	rotation 0.0&lt;br /&gt;
	shift 0 0 0 # (repeatable)&lt;br /&gt;
	scale 1 1 1 # (repeatable)&lt;br /&gt;
	shear 0 0 0 # (repeatable)&lt;br /&gt;
	smoothbounce # ricochets use normals&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let’s move to the sphere:&lt;br /&gt;
&lt;br /&gt;
===The Sphere===&lt;br /&gt;
&lt;br /&gt;
The only options required to make a sphere are position, size, and divisions. &lt;br /&gt;
All these options do the same thing as they did in the objects above.  You may also have an oval like sphere.  You make an oval like sphere simply by making the x and y&#039;s different sizes just like in the cone and arc.  The radius option is just a substitute for size.  You can write size 10 10 10 or radius 10.  Both do the same thing. However if you want an oval shaped sphere you have to use size.  Rotation wouldn&#039;t really have an effect and the shear and spin works the same for this object.&lt;br /&gt;
&lt;br /&gt;
==Getting more help==&lt;br /&gt;
*The links at the bottom of the [[:Category:Map Making|Map Making]] page.&lt;br /&gt;
*The original creator of this page is flight, you can email him at dirtbikerdude_91@yahoo.com and he will be happy to answer any questions that he is capable of answering.&lt;br /&gt;
&lt;br /&gt;
==Special Objects==&lt;br /&gt;
There are certain objects that are often coded by hand because it is simpler or it is impossible to do with graphical map creation tools.  &lt;br /&gt;
&lt;br /&gt;
===Materials ===&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_bolt.png &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
Material is letting the computer know that a material is about to be explained to it.  You name it so that way you can reference it with the matref.  The name can be any thing you want as long as it does not have any spaces.  You type in &amp;lt;tt&amp;gt;addtexture&amp;lt;/tt&amp;gt; and you state a texture name.  Now, how do you know what texture names there are to use?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Linux&#039;&#039;&#039;: Running &amp;lt;tt&amp;gt;ls /usr/share/bzflag/*.png&amp;lt;/tt&amp;gt; in a terminal will show the list of pictures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Mac&#039;&#039;&#039;: If you control click (right click) on the bzflag icon, click show package contents, click contents, and click resources, those are the pictures you may use. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Windows&#039;&#039;&#039;: The default path is &amp;lt;tt&amp;gt;C:\Program Files\BZFlag\data\*.png&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What you will find are images that are used in every day games.  The top of a base, the wall of a base. A bullet which is blue_bolt.png (as was used above).  The full path to the texture needs to be used if the texture is not found in that directory.  Any customized textures should be uploaded to the [http://images.bzflag.org/submitimages/ BZFlag Image Submission System] before the map is hosted publicly.&lt;br /&gt;
&lt;br /&gt;
Servers running bzfs 2.0.8 and earlier will require &amp;quot;meshbox&amp;quot; and &amp;quot;meshpyr&amp;quot; in order to apply textures and physics to these objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instead of creating a new texture, many interesting and creative things can be done with the &amp;quot;diffuse&amp;quot; parameter in the material object.  You can add the diffuse command and it will look like this diffuse 1 1 1 1.  The first number is the amount of red that will be in the meshobject.  The second number is the amount of green, the third is the amount of blue.  So you can mix those colors to make more colors.  You may use a range from 0-1.  For example diffuse .3 .5 .26 1.  The fourth number determines the opacity or transparency (the see-throughability).  0 is invisible, .5 is half invisible, and 1 is normal. &lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   diffuse .5 .25 .1 .6 &lt;br /&gt;
   addtexture mesh.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Physics===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Physics make your tank behave in different ways.  If you have ever played laser mania by Louman than you know on the outskirts of the map there is something you can jump on and you go really fast, that is a physics. Physics and materials work the same way.  Physics is to material as phydrv is to matref.  You must specify a physics then on a meshbox, meshpyr cone arc sphere or whatever, you can reference that physics by using the phydrv command just like you would use the matref command for materials.  There are different physics commands.  Linear, angular, slide and death.  In the Louman map I mentioned above is a linear physics.  Linear physics makes your tank move in a line.  The numbers after a linear command are just like position x y z.  Example:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   linear 50 0 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive x direction you may use -50 and it will make it go the other way.&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy2 &lt;br /&gt;
   linear 0 50 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive y direction &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy3 &lt;br /&gt;
   linear 0 0 50 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank jump at a speed of 50 &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy4 &lt;br /&gt;
   slide 5 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank basically feel like it&#039;s on ice.  Whichever way the tank is moving it will keep moving that way. &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy5 &lt;br /&gt;
   death haha! you died &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make the tank die when it touches the object that refers to this and the message haha! you died will be displayed to that person. &lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   death I like you better dead! &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   phydrv phy1                       # Or what ever you named the physics.&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This works just like the material &lt;br /&gt;
&lt;br /&gt;
The thing about physics and materials is that they have to be written before they are referenced. &lt;br /&gt;
&lt;br /&gt;
This &#039;&#039;&#039;won&#039;t&#039;&#039;&#039; work &lt;br /&gt;
&lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_team.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
A group is cluster of objects that can be &amp;quot;gathered together&amp;quot; and treated as if they were a single object.  Certain things cannot be included in groups:&lt;br /&gt;
&lt;br /&gt;
*textureMatrix&lt;br /&gt;
&lt;br /&gt;
*dynamicColor&lt;br /&gt;
&lt;br /&gt;
*material&lt;br /&gt;
&lt;br /&gt;
*physics&lt;br /&gt;
&lt;br /&gt;
*links&lt;br /&gt;
&lt;br /&gt;
*weapon&lt;br /&gt;
&lt;br /&gt;
*zone&lt;br /&gt;
&lt;br /&gt;
Notice that while teleporters aren&#039;t excluded from groups, you can&#039;t create links to teleporters within a group, except for purely random ones using &amp;quot;*&amp;quot;(asterisk) for the link.&lt;br /&gt;
&lt;br /&gt;
Groups can be nested (you can have a group that is included in another group).&lt;br /&gt;
&lt;br /&gt;
For example if a map editor is making a forest, and each tree contains 2 objects, the editor doesn&#039;t want to type up the code for each tree over and over again. What he can do is tell BZFS that these objects = tree. And then whenever he wants to make a tree he just calls that group, as shown below.&lt;br /&gt;
&lt;br /&gt;
Example-----------&lt;br /&gt;
&lt;br /&gt;
first define a group of obects as a tree &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  define tree&lt;br /&gt;
  &lt;br /&gt;
  box&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  size 2 2 4&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  pyramid&lt;br /&gt;
  position 0 0 3&lt;br /&gt;
  size 5 5 10&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  enddef&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
...then, to call the &amp;quot;tree&amp;quot; group, just:&lt;br /&gt;
&lt;br /&gt;
  group tree&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
==Transformations==&lt;br /&gt;
[[Category:Map Making]]&lt;br /&gt;
Transformations are simple ways of modifying objects so that maps have some variety. These can get complicated so I will only give you a sample of what they can do. There are 3 transformations shift, spin, and shear. You can find a different also helpful page here [[3d Transformations]]&lt;br /&gt;
&lt;br /&gt;
====Shift====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shift&#039;&#039;&#039; moves an object by the amount of units that you specify from its present position.&lt;br /&gt;
the object..&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at place 10 10 0&lt;br /&gt;
&lt;br /&gt;
while the object..&lt;br /&gt;
&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  shift 0 0 10&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at position 10 10 10.&lt;br /&gt;
&lt;br /&gt;
====Spin====&lt;br /&gt;
Spinning an object is just like rotating an object but can be on a different axis. (y and x)&lt;br /&gt;
When you rotate it is around the center of the object.&lt;br /&gt;
Remember: Only spin-able objects can be spun.&lt;br /&gt;
Here is what the code looks like:&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
 end&lt;br /&gt;
The meshbox will now be tilted 45 degrees on its y axis.&lt;br /&gt;
Spin code has four numbers, the first one is how many degrees to spin.&lt;br /&gt;
The last three are for which axis&#039;s to spin, by placing a value of more than 0.&lt;br /&gt;
Spin can be a bit tricky and unintuitive to use.  It is not exactly like rotate, because it is possible to &amp;quot;spin&amp;quot; something so that it ends up &amp;quot;underneath&amp;quot; the BZFlag playing field.&lt;br /&gt;
&lt;br /&gt;
Spin is often best used with shift.  Think of the center of your map as a sort of &amp;quot;construction yard&amp;quot;.  You position objects at location 0 0 0, then spin and shift them to the location you want.&lt;br /&gt;
&lt;br /&gt;
Here is what you get if you use the above code in a map:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0012.png]]&lt;br /&gt;
&lt;br /&gt;
Looks fairly normal in this screenshot, doesn&#039;t it.  But if you drive around, the box will behave oddly, and appear to &amp;quot;float&amp;quot; in front of your HUD.  What has happened is that the box hasn&#039;t rotated around it&#039;s own axis, but around the world axis for the whole BZFlag arena!  But if we add some code to shift the box up above the z plane, it will look normal in-game.&lt;br /&gt;
&lt;br /&gt;
So if we make a simple change to the above code and add a shift statement and shift the box up in z (this is not the z axis of the box, but the world axis of our game arena):&lt;br /&gt;
&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
   shift 0 0 10&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
...we get this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0013.png]]&lt;br /&gt;
&lt;br /&gt;
... and the box doesn&#039;t do the weird &amp;quot;float&amp;quot; thing any more.  This &amp;quot;construction yard&amp;quot; technique is really handy, you just &amp;quot;build&amp;quot; your stuff smack in the middle of your map, then spin and shift it to where you want it (in the example above, it could have been shifted in x and y as well.  Just don&#039;t shift and then spin, or you will be back to having things &amp;quot;float&amp;quot; again.&lt;br /&gt;
&lt;br /&gt;
With shift and spin you can also work with groups and make a &amp;quot;master&amp;quot; group in the middle of your map, then shift and spin multiple copies to other locations on your map.&lt;/div&gt;</summary>
		<author><name>ClayOgre</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=File:Bzfi0015.png&amp;diff=7358</id>
		<title>File:Bzfi0015.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=File:Bzfi0015.png&amp;diff=7358"/>
		<updated>2010-11-06T01:55:19Z</updated>

		<summary type="html">&lt;p&gt;ClayOgre: Three arcs with different inner radii.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Three arcs with different inner radii.&lt;/div&gt;</summary>
		<author><name>ClayOgre</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7357</id>
		<title>Map making by hand</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7357"/>
		<updated>2010-11-06T01:32:59Z</updated>

		<summary type="html">&lt;p&gt;ClayOgre: /* Transformations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoDoc|Major re-organization, transform away from &amp;quot;chat&amp;quot; style. Need to reference pages elsewhere on the wiki in place of much of the content which appears to be building up here.  Create them if necessary, or see the list [[Special:Allpages|here]].}}&lt;br /&gt;
Although there are a number of GUI options for creating maps such as BZ-Edit, 3D modelers, many map-makers use a basic text-editor.  There are many times when it is necessary to make small changes to a map, such as including objects that are unavailable in GUI map-maker, but there are also some who enjoy the challenge of creating a map entirely from scratch with a text-editor.&lt;br /&gt;
&lt;br /&gt;
==Text Editors==&lt;br /&gt;
Most text-editors designed for coding/programming are more than sufficient for editing bzw files.  Although word-processing programs such as Microsoft Word can be used, there are many cheaper (free) and more efficient programs designed specifically for coding. If you are interested in syntax highlighting, look at the [http://my.bzflag.org/bb/viewtopic.php?f=24&amp;amp;t=16037&amp;amp;p=148953 forum topic].&lt;br /&gt;
===Windows===&lt;br /&gt;
*Notepad&lt;br /&gt;
*PSPad&lt;br /&gt;
*NoteTab&lt;br /&gt;
*[http://notepad-plus-plus.org/ Notepad ++] - a tabbed editor based on Scite.&lt;br /&gt;
&lt;br /&gt;
===Mac===&lt;br /&gt;
*TextWrangler&lt;br /&gt;
*TextEdit&lt;br /&gt;
===Linux===&lt;br /&gt;
*Command-line editors such as nano, emacs, pico, vim, or ed.&lt;br /&gt;
*GEdit&lt;br /&gt;
*Kate&lt;br /&gt;
*Scite&lt;br /&gt;
&lt;br /&gt;
==Editing existing maps==&lt;br /&gt;
Beginning mapmakers should spend some time studying and making small changes in existing maps to see how things work.  In the client, maps can be saved for editing by joining the desired server and choosing: Options&amp;gt;Save World.  Maps can also be saved by issuing the /saveworld command.  The map should be a simple map when getting started.  One may find it easier to create a file in BZEdit and open the resulting file in the text-editor.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
If you have created a box in BZEdit you may see:&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
 world &lt;br /&gt;
   size 400 &lt;br /&gt;
 end &lt;br /&gt;
 options &lt;br /&gt;
   +r &lt;br /&gt;
   -j &lt;br /&gt;
   -set _tankSpeed 25 &lt;br /&gt;
   -ms 5 &lt;br /&gt;
   -mp 0,2,0,2,0,2 &lt;br /&gt;
 end &lt;br /&gt;
 box &lt;br /&gt;
   name box1 &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
 end &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===What that means===&lt;br /&gt;
&amp;quot;There are set variables that define various things such as how fast your tank is, how fast the bullets are, or if it&#039;s raining or foggy.  Put those in the options setting with &amp;quot;-set(space) &amp;quot; in front of it. You can also make those changes as an admin by using /set _variable (notice there is a space between the set and the _).  A full list of these settings can be found on the [[Server Variables]] page.  Other options, such as how many times a flag can be grabbed before it resets or if flags can land on buildings are explained [http://my.bzflag.org/bb/files/antigrav4teamconf_114.txt in this forum post]&lt;br /&gt;
Optionally, the variables can be placed in a separate configuration file and referenced when the server is started.&amp;quot;&lt;br /&gt;
&#039;&#039;&#039;old&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, it says:&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
(Note: the # sign is used for comments.)&lt;br /&gt;
&lt;br /&gt;
This is the text added by the application initially, kind of like advertising. This will be the first thing anyone sees when they look at the map.&lt;br /&gt;
&lt;br /&gt;
The next thing is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
world &lt;br /&gt;
  size 400 # Sets the world size to 400 (800 x 800 total)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is rather self-explanatory. It&#039;s the &amp;lt;size&amp;gt; of the &amp;lt;world&amp;gt; (The BZFlag arena).&lt;br /&gt;
&lt;br /&gt;
Next is an &amp;lt;options&amp;gt; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options &lt;br /&gt;
  +r   # Enable Ricochet&lt;br /&gt;
  -j   # Enable Jumping&lt;br /&gt;
  -set _tankSpeed 25  # Sets the tank speed to 25 bzunits/second&lt;br /&gt;
  -ms 5  # Sets the maximum shots (per tank) to 5&lt;br /&gt;
  -mp 0,2,0,2,0,2  # Maximum of 2 Red Players, 2 Blue Players, and 2 Observers&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This allows you to define in the map file certain options that are also available from the command line when you start the bzfs server, or in the optional server config file.  Options embedded into a world file will override those input on the command line or in a config file.&lt;br /&gt;
&lt;br /&gt;
The commands listed here are:&lt;br /&gt;
Ricochet, Jumping, Tank speed, Max Shots, and Max Players.&lt;br /&gt;
These are rather self explanatory, except for Max Players. Each number represents how many of each of the following team players are allowed in the game (in the order listed): Rogue, Red, Green, Blue, Purple, Observer. Each number defines the max number of players per category.&lt;br /&gt;
&lt;br /&gt;
For more, see [[Options_(object)|Options Object]].&lt;br /&gt;
&lt;br /&gt;
We now come to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
box &lt;br /&gt;
  name box1      # Generally unused&lt;br /&gt;
  position 0 0 0 # X Y Z Position&lt;br /&gt;
  size 10 10 10  # X Y Z Size (bzunits from the position of the box)&lt;br /&gt;
  rotation 0     # Rotation (in degrees)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is a &amp;lt;box&amp;gt; with a &amp;lt;name&amp;gt; of &amp;lt;box1&amp;gt;.&lt;br /&gt;
The &amp;lt;position&amp;gt; is 0,0,0 in R3[http://en.wikipedia.org/wiki/R3].&lt;br /&gt;
The rest is pretty self explanatory.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; EVERY STATEMENT MUST HAVE AN END.&lt;br /&gt;
&lt;br /&gt;
===Basic Definitions===&lt;br /&gt;
;Objects&lt;br /&gt;
:Objects are the basic building blocks of the bzw file.  Objects begin with a line declaring the object, some fields describing that object, and a line that closes the object (usually with &amp;quot;end&amp;quot;).  Each of these sections of the object is important.&lt;br /&gt;
;Comments&lt;br /&gt;
:BZFS ignores anything in a line following the #; the line has been &amp;quot;commented out.&amp;quot;  It is highly recommended that comments be used often, both for the mapmaker and for others that may see the map.&lt;br /&gt;
;3D Cartesian Coordinate System&lt;br /&gt;
:In most objects, you will see three numbers after position and size. These numbers are coordinates on a graph. The first number is the x coordinate (left and right) the middle number is the y coordinate (forward and backward) and the third number is the z coordinate (height and depth). Another way of thinking of it is: x = width, y = depth, z = height. (Those accustomed to the Y axis determining height will have to slightly adjust their thinking.) &lt;br /&gt;
&lt;br /&gt;
==Sample Objects==&lt;br /&gt;
===The Box===&lt;br /&gt;
Perhaps the simplest object is the box.  There is actually nothing special you can do to it (but in versions of BZFlag from 2.0.8 up, you can do a lot more to it).  Here is an example of a box:&lt;br /&gt;
&lt;br /&gt;
 box&lt;br /&gt;
   name box1             # Optional, but good to include&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   rotation 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the first line, notice the word &amp;quot;box&amp;quot;.  It simply says the next object is a box.  The next line is the name of the object.  It is defined with the syntax &amp;quot;&amp;lt;tt&amp;gt;name &#039;&#039;objectName&#039;&#039;&amp;lt;/tt&amp;gt;&amp;quot;.  It is not required, but is good to include (if you have a LOT of boxes, how do you know which is which?  Naming them--as well as other objects--helps you keep track).  The third line defines the position of the center of the bottom of the object.  The three arguments of &amp;lt;tt&amp;gt;position&amp;lt;/tt&amp;gt; are the x, y, and z coordinates of the box, respectively.  The x and y coordinates can be positive or negative, but the z coordinate should just be positive or zero.  On the fourth line, the size of the box is defined.  The arguments of &amp;lt;tt&amp;gt;size&amp;lt;/tt&amp;gt; are the x, y, and z sizes of the object, respectively.  The x and y arguments make the box that wide on both sides of it&#039;s position.  However, the z argument makes the object exactly the number of units tall as defined.  In other words, the box shown above, with a size of &#039;10 10 10&#039; is actually 20 units by 20 units by 10 units high, so if you want a box that is a perfect cube, you would need to make the height, or Z dimension, &#039;20&#039;. The next line just says how much the object is rotated.  This number is the number of degrees of rotation, and can be negative or positive.  The last line just tells BZFlag the object is done, and a new one can be defined.  Be sure to &#039;&#039;&#039;always&#039;&#039;&#039; use this.&lt;br /&gt;
&lt;br /&gt;
Below is an image of a box with a size of 5 5 10.&lt;br /&gt;
&lt;br /&gt;
[[Image:box.jpg]]&lt;br /&gt;
&lt;br /&gt;
===The Cone===&lt;br /&gt;
Most objects have similar parameters as the basic box.  For instance, the code for a cone may look something like this:&lt;br /&gt;
&lt;br /&gt;
 cone&lt;br /&gt;
   name cone1&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 20&lt;br /&gt;
   divisions 128&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Divisions basically decide how smooth the cone is.  The higher the divisions the more smooth the cone is.  A division of 4 would look like a pyramid.  Another parameter that can be added to the cone object is angle. If you say angle 180, that would make 1/2 of a cone, 90 would make 1/4 of a cone, and so on. &lt;br /&gt;
&lt;br /&gt;
===The Arc===&lt;br /&gt;
&lt;br /&gt;
An arc is basically a cylinder. However it doesn’t have to be a perfect cylinder depending on certain options you select. For an arc the only required options are divisions, position and size. Just like the cone divisions have the same effect, position and size are all the same. Once again you can have an oval shaped cylinder type thing. Now, you WILL find more options to an arc than to a cone, for example the ratio option. The ratio options let you basically put a hole in the cylinder. So if you have the option: ratio 1 you would have a full cylinder. If you say for example ratio .3 or any number less than 1 you will get a hole in the cylinder. The bigger the number, the smaller the hole. Angle allows you to do a semicircle. Rotation, once again, isn&#039;t really needed, unless you need a semicircle that has a certain specific orientation in your map. all the options like spin and shear are the same for this object too! phydrv and matref I’ll show later. Let’s move to the sphere:&lt;br /&gt;
&lt;br /&gt;
===The Sphere===&lt;br /&gt;
&lt;br /&gt;
The only options required to make a sphere are position, size, and divisions. &lt;br /&gt;
All these options do the same thing as they did in the objects above.  You may also have an oval like sphere.  You make an oval like sphere simply by making the x and y&#039;s different sizes just like in the cone and arc.  The radius option is just a substitute for size.  You can write size 10 10 10 or radius 10.  Both do the same thing. However if you want an oval shaped sphere you have to use size.  Rotation wouldn&#039;t really have an effect and the shear and spin works the same for this object.&lt;br /&gt;
&lt;br /&gt;
==Getting more help==&lt;br /&gt;
*The links at the bottom of the [[:Category:Map Making|Map Making]] page.&lt;br /&gt;
*The original creator of this page is flight, you can email him at dirtbikerdude_91@yahoo.com and he will be happy to answer any questions that he is capable of answering.&lt;br /&gt;
&lt;br /&gt;
==Special Objects==&lt;br /&gt;
There are certain objects that are often coded by hand because it is simpler or it is impossible to do with graphical map creation tools.  &lt;br /&gt;
&lt;br /&gt;
===Materials ===&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_bolt.png &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
Material is letting the computer know that a material is about to be explained to it.  You name it so that way you can reference it with the matref.  The name can be any thing you want as long as it does not have any spaces.  You type in &amp;lt;tt&amp;gt;addtexture&amp;lt;/tt&amp;gt; and you state a texture name.  Now, how do you know what texture names there are to use?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Linux&#039;&#039;&#039;: Running &amp;lt;tt&amp;gt;ls /usr/share/bzflag/*.png&amp;lt;/tt&amp;gt; in a terminal will show the list of pictures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Mac&#039;&#039;&#039;: If you control click (right click) on the bzflag icon, click show package contents, click contents, and click resources, those are the pictures you may use. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Windows&#039;&#039;&#039;: The default path is &amp;lt;tt&amp;gt;C:\Program Files\BZFlag\data\*.png&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What you will find are images that are used in every day games.  The top of a base, the wall of a base. A bullet which is blue_bolt.png (as was used above).  The full path to the texture needs to be used if the texture is not found in that directory.  Any customized textures should be uploaded to the [http://images.bzflag.org/submitimages/ BZFlag Image Submission System] before the map is hosted publicly.&lt;br /&gt;
&lt;br /&gt;
Servers running bzfs 2.0.8 and earlier will require &amp;quot;meshbox&amp;quot; and &amp;quot;meshpyr&amp;quot; in order to apply textures and physics to these objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instead of creating a new texture, many interesting and creative things can be done with the &amp;quot;diffuse&amp;quot; parameter in the material object.  You can add the diffuse command and it will look like this diffuse 1 1 1 1.  The first number is the amount of red that will be in the meshobject.  The second number is the amount of green, the third is the amount of blue.  So you can mix those colors to make more colors.  You may use a range from 0-1.  For example diffuse .3 .5 .26 1.  The fourth number determines the opacity or transparency (the see-throughability).  0 is invisible, .5 is half invisible, and 1 is normal. &lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   diffuse .5 .25 .1 .6 &lt;br /&gt;
   addtexture mesh.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Physics===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Physics make your tank behave in different ways.  If you have ever played laser mania by Louman than you know on the outskirts of the map there is something you can jump on and you go really fast, that is a physics. Physics and materials work the same way.  Physics is to material as phydrv is to matref.  You must specify a physics then on a meshbox, meshpyr cone arc sphere or whatever, you can reference that physics by using the phydrv command just like you would use the matref command for materials.  There are different physics commands.  Linear, angular, slide and death.  In the Louman map I mentioned above is a linear physics.  Linear physics makes your tank move in a line.  The numbers after a linear command are just like position x y z.  Example:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   linear 50 0 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive x direction you may use -50 and it will make it go the other way.&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy2 &lt;br /&gt;
   linear 0 50 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive y direction &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy3 &lt;br /&gt;
   linear 0 0 50 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank jump at a speed of 50 &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy4 &lt;br /&gt;
   slide 5 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank basically feel like it&#039;s on ice.  Whichever way the tank is moving it will keep moving that way. &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy5 &lt;br /&gt;
   death haha! you died &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make the tank die when it touches the object that refers to this and the message haha! you died will be displayed to that person. &lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   death I like you better dead! &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   phydrv phy1                       # Or what ever you named the physics.&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This works just like the material &lt;br /&gt;
&lt;br /&gt;
The thing about physics and materials is that they have to be written before they are referenced. &lt;br /&gt;
&lt;br /&gt;
This &#039;&#039;&#039;won&#039;t&#039;&#039;&#039; work &lt;br /&gt;
&lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_team.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
A group is cluster of objects that can be &amp;quot;gathered together&amp;quot; and treated as if they were a single object.  Certain things cannot be included in groups:&lt;br /&gt;
&lt;br /&gt;
*textureMatrix&lt;br /&gt;
&lt;br /&gt;
*dynamicColor&lt;br /&gt;
&lt;br /&gt;
*material&lt;br /&gt;
&lt;br /&gt;
*physics&lt;br /&gt;
&lt;br /&gt;
*links&lt;br /&gt;
&lt;br /&gt;
*weapon&lt;br /&gt;
&lt;br /&gt;
*zone&lt;br /&gt;
&lt;br /&gt;
Notice that while teleporters aren&#039;t excluded from groups, you can&#039;t create links to teleporters within a group, except for purely random ones using &amp;quot;*&amp;quot;(asterisk) for the link.&lt;br /&gt;
&lt;br /&gt;
Groups can be nested (you can have a group that is included in another group).&lt;br /&gt;
&lt;br /&gt;
For example if a map editor is making a forest, and each tree contains 2 objects, the editor doesn&#039;t want to type up the code for each tree over and over again. What he can do is tell BZFS that these objects = tree. And then whenever he wants to make a tree he just calls that group, as shown below.&lt;br /&gt;
&lt;br /&gt;
Example-----------&lt;br /&gt;
&lt;br /&gt;
first define a group of obects as a tree &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  define tree&lt;br /&gt;
  &lt;br /&gt;
  box&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  size 2 2 4&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  pyramid&lt;br /&gt;
  position 0 0 3&lt;br /&gt;
  size 5 5 10&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  enddef&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
...then, to call the &amp;quot;tree&amp;quot; group, just:&lt;br /&gt;
&lt;br /&gt;
  group tree&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
==Transformations==&lt;br /&gt;
[[Category:Map Making]]&lt;br /&gt;
Transformations are simple ways of modifying objects so that maps have some variety. These can get complicated so I will only give you a sample of what they can do. There are 3 transformations shift, spin, and shear. You can find a different also helpful page here [[3d Transformations]]&lt;br /&gt;
&lt;br /&gt;
====Shift====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shift&#039;&#039;&#039; moves an object by the amount of units that you specify from its present position.&lt;br /&gt;
the object..&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at place 10 10 0&lt;br /&gt;
&lt;br /&gt;
while the object..&lt;br /&gt;
&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  shift 0 0 10&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at position 10 10 10.&lt;br /&gt;
&lt;br /&gt;
====Spin====&lt;br /&gt;
Spinning an object is just like rotating an object but can be on a different axis. (y and x)&lt;br /&gt;
When you rotate it is around the center of the object.&lt;br /&gt;
Remember: Only spin-able objects can be spun.&lt;br /&gt;
Here is what the code looks like:&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
 end&lt;br /&gt;
The meshbox will now be tilted 45 degrees on its y axis.&lt;br /&gt;
Spin code has four numbers, the first one is how many degrees to spin.&lt;br /&gt;
The last three are for which axis&#039;s to spin, by placing a value of more than 0.&lt;br /&gt;
Spin can be a bit tricky and unintuitive to use.  It is not exactly like rotate, because it is possible to &amp;quot;spin&amp;quot; something so that it ends up &amp;quot;underneath&amp;quot; the BZFlag playing field.&lt;br /&gt;
&lt;br /&gt;
Spin is often best used with shift.  Think of the center of your map as a sort of &amp;quot;construction yard&amp;quot;.  You position objects at location 0 0 0, then spin and shift them to the location you want.&lt;br /&gt;
&lt;br /&gt;
Here is what you get if you use the above code in a map:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0012.png]]&lt;br /&gt;
&lt;br /&gt;
Looks fairly normal in this screenshot, doesn&#039;t it.  But if you drive around, the box will behave oddly, and appear to &amp;quot;float&amp;quot; in front of your HUD.  What has happened is that the box hasn&#039;t rotated around it&#039;s own axis, but around the world axis for the whole BZFlag arena!  But if we add some code to shift the box up above the z plane, it will look normal in-game.&lt;br /&gt;
&lt;br /&gt;
So if we make a simple change to the above code and add a shift statement and shift the box up in z (this is not the z axis of the box, but the world axis of our game arena):&lt;br /&gt;
&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
   shift 0 0 10&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
...we get this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0013.png]]&lt;br /&gt;
&lt;br /&gt;
... and the box doesn&#039;t do the weird &amp;quot;float&amp;quot; thing any more.  This &amp;quot;construction yard&amp;quot; technique is really handy, you just &amp;quot;build&amp;quot; your stuff smack in the middle of your map, then spin and shift it to where you want it (in the example above, it could have been shifted in x and y as well.  Just don&#039;t shift and then spin, or you will be back to having things &amp;quot;float&amp;quot; again.&lt;br /&gt;
&lt;br /&gt;
With shift and spin you can also work with groups and make a &amp;quot;master&amp;quot; group in the middle of your map, then shift and spin multiple copies to other locations on your map.&lt;/div&gt;</summary>
		<author><name>ClayOgre</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7356</id>
		<title>Map making by hand</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7356"/>
		<updated>2010-11-06T01:29:46Z</updated>

		<summary type="html">&lt;p&gt;ClayOgre: /* Groups */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoDoc|Major re-organization, transform away from &amp;quot;chat&amp;quot; style. Need to reference pages elsewhere on the wiki in place of much of the content which appears to be building up here.  Create them if necessary, or see the list [[Special:Allpages|here]].}}&lt;br /&gt;
Although there are a number of GUI options for creating maps such as BZ-Edit, 3D modelers, many map-makers use a basic text-editor.  There are many times when it is necessary to make small changes to a map, such as including objects that are unavailable in GUI map-maker, but there are also some who enjoy the challenge of creating a map entirely from scratch with a text-editor.&lt;br /&gt;
&lt;br /&gt;
==Text Editors==&lt;br /&gt;
Most text-editors designed for coding/programming are more than sufficient for editing bzw files.  Although word-processing programs such as Microsoft Word can be used, there are many cheaper (free) and more efficient programs designed specifically for coding. If you are interested in syntax highlighting, look at the [http://my.bzflag.org/bb/viewtopic.php?f=24&amp;amp;t=16037&amp;amp;p=148953 forum topic].&lt;br /&gt;
===Windows===&lt;br /&gt;
*Notepad&lt;br /&gt;
*PSPad&lt;br /&gt;
*NoteTab&lt;br /&gt;
*[http://notepad-plus-plus.org/ Notepad ++] - a tabbed editor based on Scite.&lt;br /&gt;
&lt;br /&gt;
===Mac===&lt;br /&gt;
*TextWrangler&lt;br /&gt;
*TextEdit&lt;br /&gt;
===Linux===&lt;br /&gt;
*Command-line editors such as nano, emacs, pico, vim, or ed.&lt;br /&gt;
*GEdit&lt;br /&gt;
*Kate&lt;br /&gt;
*Scite&lt;br /&gt;
&lt;br /&gt;
==Editing existing maps==&lt;br /&gt;
Beginning mapmakers should spend some time studying and making small changes in existing maps to see how things work.  In the client, maps can be saved for editing by joining the desired server and choosing: Options&amp;gt;Save World.  Maps can also be saved by issuing the /saveworld command.  The map should be a simple map when getting started.  One may find it easier to create a file in BZEdit and open the resulting file in the text-editor.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
If you have created a box in BZEdit you may see:&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
 world &lt;br /&gt;
   size 400 &lt;br /&gt;
 end &lt;br /&gt;
 options &lt;br /&gt;
   +r &lt;br /&gt;
   -j &lt;br /&gt;
   -set _tankSpeed 25 &lt;br /&gt;
   -ms 5 &lt;br /&gt;
   -mp 0,2,0,2,0,2 &lt;br /&gt;
 end &lt;br /&gt;
 box &lt;br /&gt;
   name box1 &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
 end &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===What that means===&lt;br /&gt;
&amp;quot;There are set variables that define various things such as how fast your tank is, how fast the bullets are, or if it&#039;s raining or foggy.  Put those in the options setting with &amp;quot;-set(space) &amp;quot; in front of it. You can also make those changes as an admin by using /set _variable (notice there is a space between the set and the _).  A full list of these settings can be found on the [[Server Variables]] page.  Other options, such as how many times a flag can be grabbed before it resets or if flags can land on buildings are explained [http://my.bzflag.org/bb/files/antigrav4teamconf_114.txt in this forum post]&lt;br /&gt;
Optionally, the variables can be placed in a separate configuration file and referenced when the server is started.&amp;quot;&lt;br /&gt;
&#039;&#039;&#039;old&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, it says:&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
(Note: the # sign is used for comments.)&lt;br /&gt;
&lt;br /&gt;
This is the text added by the application initially, kind of like advertising. This will be the first thing anyone sees when they look at the map.&lt;br /&gt;
&lt;br /&gt;
The next thing is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
world &lt;br /&gt;
  size 400 # Sets the world size to 400 (800 x 800 total)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is rather self-explanatory. It&#039;s the &amp;lt;size&amp;gt; of the &amp;lt;world&amp;gt; (The BZFlag arena).&lt;br /&gt;
&lt;br /&gt;
Next is an &amp;lt;options&amp;gt; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options &lt;br /&gt;
  +r   # Enable Ricochet&lt;br /&gt;
  -j   # Enable Jumping&lt;br /&gt;
  -set _tankSpeed 25  # Sets the tank speed to 25 bzunits/second&lt;br /&gt;
  -ms 5  # Sets the maximum shots (per tank) to 5&lt;br /&gt;
  -mp 0,2,0,2,0,2  # Maximum of 2 Red Players, 2 Blue Players, and 2 Observers&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This allows you to define in the map file certain options that are also available from the command line when you start the bzfs server, or in the optional server config file.  Options embedded into a world file will override those input on the command line or in a config file.&lt;br /&gt;
&lt;br /&gt;
The commands listed here are:&lt;br /&gt;
Ricochet, Jumping, Tank speed, Max Shots, and Max Players.&lt;br /&gt;
These are rather self explanatory, except for Max Players. Each number represents how many of each of the following team players are allowed in the game (in the order listed): Rogue, Red, Green, Blue, Purple, Observer. Each number defines the max number of players per category.&lt;br /&gt;
&lt;br /&gt;
For more, see [[Options_(object)|Options Object]].&lt;br /&gt;
&lt;br /&gt;
We now come to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
box &lt;br /&gt;
  name box1      # Generally unused&lt;br /&gt;
  position 0 0 0 # X Y Z Position&lt;br /&gt;
  size 10 10 10  # X Y Z Size (bzunits from the position of the box)&lt;br /&gt;
  rotation 0     # Rotation (in degrees)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is a &amp;lt;box&amp;gt; with a &amp;lt;name&amp;gt; of &amp;lt;box1&amp;gt;.&lt;br /&gt;
The &amp;lt;position&amp;gt; is 0,0,0 in R3[http://en.wikipedia.org/wiki/R3].&lt;br /&gt;
The rest is pretty self explanatory.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; EVERY STATEMENT MUST HAVE AN END.&lt;br /&gt;
&lt;br /&gt;
===Basic Definitions===&lt;br /&gt;
;Objects&lt;br /&gt;
:Objects are the basic building blocks of the bzw file.  Objects begin with a line declaring the object, some fields describing that object, and a line that closes the object (usually with &amp;quot;end&amp;quot;).  Each of these sections of the object is important.&lt;br /&gt;
;Comments&lt;br /&gt;
:BZFS ignores anything in a line following the #; the line has been &amp;quot;commented out.&amp;quot;  It is highly recommended that comments be used often, both for the mapmaker and for others that may see the map.&lt;br /&gt;
;3D Cartesian Coordinate System&lt;br /&gt;
:In most objects, you will see three numbers after position and size. These numbers are coordinates on a graph. The first number is the x coordinate (left and right) the middle number is the y coordinate (forward and backward) and the third number is the z coordinate (height and depth). Another way of thinking of it is: x = width, y = depth, z = height. (Those accustomed to the Y axis determining height will have to slightly adjust their thinking.) &lt;br /&gt;
&lt;br /&gt;
==Sample Objects==&lt;br /&gt;
===The Box===&lt;br /&gt;
Perhaps the simplest object is the box.  There is actually nothing special you can do to it (but in versions of BZFlag from 2.0.8 up, you can do a lot more to it).  Here is an example of a box:&lt;br /&gt;
&lt;br /&gt;
 box&lt;br /&gt;
   name box1             # Optional, but good to include&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   rotation 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the first line, notice the word &amp;quot;box&amp;quot;.  It simply says the next object is a box.  The next line is the name of the object.  It is defined with the syntax &amp;quot;&amp;lt;tt&amp;gt;name &#039;&#039;objectName&#039;&#039;&amp;lt;/tt&amp;gt;&amp;quot;.  It is not required, but is good to include (if you have a LOT of boxes, how do you know which is which?  Naming them--as well as other objects--helps you keep track).  The third line defines the position of the center of the bottom of the object.  The three arguments of &amp;lt;tt&amp;gt;position&amp;lt;/tt&amp;gt; are the x, y, and z coordinates of the box, respectively.  The x and y coordinates can be positive or negative, but the z coordinate should just be positive or zero.  On the fourth line, the size of the box is defined.  The arguments of &amp;lt;tt&amp;gt;size&amp;lt;/tt&amp;gt; are the x, y, and z sizes of the object, respectively.  The x and y arguments make the box that wide on both sides of it&#039;s position.  However, the z argument makes the object exactly the number of units tall as defined.  In other words, the box shown above, with a size of &#039;10 10 10&#039; is actually 20 units by 20 units by 10 units high, so if you want a box that is a perfect cube, you would need to make the height, or Z dimension, &#039;20&#039;. The next line just says how much the object is rotated.  This number is the number of degrees of rotation, and can be negative or positive.  The last line just tells BZFlag the object is done, and a new one can be defined.  Be sure to &#039;&#039;&#039;always&#039;&#039;&#039; use this.&lt;br /&gt;
&lt;br /&gt;
Below is an image of a box with a size of 5 5 10.&lt;br /&gt;
&lt;br /&gt;
[[Image:box.jpg]]&lt;br /&gt;
&lt;br /&gt;
===The Cone===&lt;br /&gt;
Most objects have similar parameters as the basic box.  For instance, the code for a cone may look something like this:&lt;br /&gt;
&lt;br /&gt;
 cone&lt;br /&gt;
   name cone1&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 20&lt;br /&gt;
   divisions 128&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Divisions basically decide how smooth the cone is.  The higher the divisions the more smooth the cone is.  A division of 4 would look like a pyramid.  Another parameter that can be added to the cone object is angle. If you say angle 180, that would make 1/2 of a cone, 90 would make 1/4 of a cone, and so on. &lt;br /&gt;
&lt;br /&gt;
===The Arc===&lt;br /&gt;
&lt;br /&gt;
An arc is basically a cylinder. However it doesn’t have to be a perfect cylinder depending on certain options you select. For an arc the only required options are divisions, position and size. Just like the cone divisions have the same effect, position and size are all the same. Once again you can have an oval shaped cylinder type thing. Now, you WILL find more options to an arc than to a cone, for example the ratio option. The ratio options let you basically put a hole in the cylinder. So if you have the option: ratio 1 you would have a full cylinder. If you say for example ratio .3 or any number less than 1 you will get a hole in the cylinder. The bigger the number, the smaller the hole. Angle allows you to do a semicircle. Rotation, once again, isn&#039;t really needed, unless you need a semicircle that has a certain specific orientation in your map. all the options like spin and shear are the same for this object too! phydrv and matref I’ll show later. Let’s move to the sphere:&lt;br /&gt;
&lt;br /&gt;
===The Sphere===&lt;br /&gt;
&lt;br /&gt;
The only options required to make a sphere are position, size, and divisions. &lt;br /&gt;
All these options do the same thing as they did in the objects above.  You may also have an oval like sphere.  You make an oval like sphere simply by making the x and y&#039;s different sizes just like in the cone and arc.  The radius option is just a substitute for size.  You can write size 10 10 10 or radius 10.  Both do the same thing. However if you want an oval shaped sphere you have to use size.  Rotation wouldn&#039;t really have an effect and the shear and spin works the same for this object.&lt;br /&gt;
&lt;br /&gt;
==Getting more help==&lt;br /&gt;
*The links at the bottom of the [[:Category:Map Making|Map Making]] page.&lt;br /&gt;
*The original creator of this page is flight, you can email him at dirtbikerdude_91@yahoo.com and he will be happy to answer any questions that he is capable of answering.&lt;br /&gt;
&lt;br /&gt;
==Special Objects==&lt;br /&gt;
There are certain objects that are often coded by hand because it is simpler or it is impossible to do with graphical map creation tools.  &lt;br /&gt;
&lt;br /&gt;
===Materials ===&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_bolt.png &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
Material is letting the computer know that a material is about to be explained to it.  You name it so that way you can reference it with the matref.  The name can be any thing you want as long as it does not have any spaces.  You type in &amp;lt;tt&amp;gt;addtexture&amp;lt;/tt&amp;gt; and you state a texture name.  Now, how do you know what texture names there are to use?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Linux&#039;&#039;&#039;: Running &amp;lt;tt&amp;gt;ls /usr/share/bzflag/*.png&amp;lt;/tt&amp;gt; in a terminal will show the list of pictures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Mac&#039;&#039;&#039;: If you control click (right click) on the bzflag icon, click show package contents, click contents, and click resources, those are the pictures you may use. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Windows&#039;&#039;&#039;: The default path is &amp;lt;tt&amp;gt;C:\Program Files\BZFlag\data\*.png&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What you will find are images that are used in every day games.  The top of a base, the wall of a base. A bullet which is blue_bolt.png (as was used above).  The full path to the texture needs to be used if the texture is not found in that directory.  Any customized textures should be uploaded to the [http://images.bzflag.org/submitimages/ BZFlag Image Submission System] before the map is hosted publicly.&lt;br /&gt;
&lt;br /&gt;
Servers running bzfs 2.0.8 and earlier will require &amp;quot;meshbox&amp;quot; and &amp;quot;meshpyr&amp;quot; in order to apply textures and physics to these objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instead of creating a new texture, many interesting and creative things can be done with the &amp;quot;diffuse&amp;quot; parameter in the material object.  You can add the diffuse command and it will look like this diffuse 1 1 1 1.  The first number is the amount of red that will be in the meshobject.  The second number is the amount of green, the third is the amount of blue.  So you can mix those colors to make more colors.  You may use a range from 0-1.  For example diffuse .3 .5 .26 1.  The fourth number determines the opacity or transparency (the see-throughability).  0 is invisible, .5 is half invisible, and 1 is normal. &lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   diffuse .5 .25 .1 .6 &lt;br /&gt;
   addtexture mesh.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Physics===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Physics make your tank behave in different ways.  If you have ever played laser mania by Louman than you know on the outskirts of the map there is something you can jump on and you go really fast, that is a physics. Physics and materials work the same way.  Physics is to material as phydrv is to matref.  You must specify a physics then on a meshbox, meshpyr cone arc sphere or whatever, you can reference that physics by using the phydrv command just like you would use the matref command for materials.  There are different physics commands.  Linear, angular, slide and death.  In the Louman map I mentioned above is a linear physics.  Linear physics makes your tank move in a line.  The numbers after a linear command are just like position x y z.  Example:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   linear 50 0 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive x direction you may use -50 and it will make it go the other way.&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy2 &lt;br /&gt;
   linear 0 50 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive y direction &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy3 &lt;br /&gt;
   linear 0 0 50 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank jump at a speed of 50 &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy4 &lt;br /&gt;
   slide 5 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank basically feel like it&#039;s on ice.  Whichever way the tank is moving it will keep moving that way. &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy5 &lt;br /&gt;
   death haha! you died &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make the tank die when it touches the object that refers to this and the message haha! you died will be displayed to that person. &lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   death I like you better dead! &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   phydrv phy1                       # Or what ever you named the physics.&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This works just like the material &lt;br /&gt;
&lt;br /&gt;
The thing about physics and materials is that they have to be written before they are referenced. &lt;br /&gt;
&lt;br /&gt;
This &#039;&#039;&#039;won&#039;t&#039;&#039;&#039; work &lt;br /&gt;
&lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_team.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
A group is cluster of objects that can be &amp;quot;gathered together&amp;quot; and treated as if they were a single object.  Certain things cannot be included in groups:&lt;br /&gt;
&lt;br /&gt;
*textureMatrix&lt;br /&gt;
&lt;br /&gt;
*dynamicColor&lt;br /&gt;
&lt;br /&gt;
*material&lt;br /&gt;
&lt;br /&gt;
*physics&lt;br /&gt;
&lt;br /&gt;
*links&lt;br /&gt;
&lt;br /&gt;
*weapon&lt;br /&gt;
&lt;br /&gt;
*zone&lt;br /&gt;
&lt;br /&gt;
Notice that while teleporters aren&#039;t excluded from groups, you can&#039;t create links to teleporters within a group, except for purely random ones using &amp;quot;*&amp;quot;(asterisk) for the link.&lt;br /&gt;
&lt;br /&gt;
Groups can be nested (you can have a group that is included in another group).&lt;br /&gt;
&lt;br /&gt;
For example if a map editor is making a forest, and each tree contains 2 objects, the editor doesn&#039;t want to type up the code for each tree over and over again. What he can do is tell BZFS that these objects = tree. And then whenever he wants to make a tree he just calls that group, as shown below.&lt;br /&gt;
&lt;br /&gt;
Example-----------&lt;br /&gt;
&lt;br /&gt;
first define a group of obects as a tree &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  define tree&lt;br /&gt;
  &lt;br /&gt;
  box&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  size 2 2 4&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  pyramid&lt;br /&gt;
  position 0 0 3&lt;br /&gt;
  size 5 5 10&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  enddef&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
...then, to call the &amp;quot;tree&amp;quot; group, just:&lt;br /&gt;
&lt;br /&gt;
  group tree&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
==Transformations==&lt;br /&gt;
[[Category:Map Making]]&lt;br /&gt;
Transformations are simple ways of modifying objects so that maps have some variety. These can get complicated so I will only give you a sample of what they can do. There are 3 transformations shift, spin, and shear. You can find a different also helpful page here [[3d Transformations]]&lt;br /&gt;
&lt;br /&gt;
The one is will tell you about is &#039;&#039;&#039;Shift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shift&#039;&#039;&#039; moves an object by the amount of units that you specify from its present position.&lt;br /&gt;
the object..&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at place 10 10 0&lt;br /&gt;
&lt;br /&gt;
while the object..&lt;br /&gt;
&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  shift 0 0 10&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at position 10 10 10.&lt;br /&gt;
&lt;br /&gt;
====Spin====&lt;br /&gt;
Spinning an object is just like rotating an object but can be on a different axis. (y and x)&lt;br /&gt;
When you rotate it is around the center of the object.&lt;br /&gt;
Remember: Only spin-able objects can be spun.&lt;br /&gt;
Here is what the code looks like:&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
 end&lt;br /&gt;
The meshbox will now be tilted 45 degrees on its y axis.&lt;br /&gt;
Spin code has four numbers, the first one is how many degrees to spin.&lt;br /&gt;
The last three are for which axis&#039;s to spin, by placing a value of more than 0.&lt;br /&gt;
Spin can be a bit tricky and unintuitive to use.  It is not exactly like rotate, because it is possible to &amp;quot;spin&amp;quot; something so that it ends up &amp;quot;underneath&amp;quot; the BZFlag playing field.&lt;br /&gt;
&lt;br /&gt;
Spin is often best used with shift.  Think of the center of your map as a sort of &amp;quot;construction yard&amp;quot;.  You position objects at location 0 0 0, then spin and shift them to the location you want.&lt;br /&gt;
&lt;br /&gt;
Here is what you get if you use the above code in a map:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0012.png]]&lt;br /&gt;
&lt;br /&gt;
Looks fairly normal in this screenshot, doesn&#039;t it.  But if you drive around, the box will behave oddly, and appear to &amp;quot;float&amp;quot; in front of your HUD.  What has happened is that the box hasn&#039;t rotated around it&#039;s own axis, but around the world axis for the whole BZFlag arena!  But if we add some code to shift the box up above the z plane, it will look normal in-game.&lt;br /&gt;
&lt;br /&gt;
So if we make a simple change to the above code and add a shift statement and shift the box up in z (this is not the z axis of the box, but the world axis of our game arena):&lt;br /&gt;
&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
   shift 0 0 10&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
...we get this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0013.png]]&lt;br /&gt;
&lt;br /&gt;
... and the box doesn&#039;t do the weird &amp;quot;float&amp;quot; thing any more.  This &amp;quot;construction yard&amp;quot; technique is really handy, you just &amp;quot;build&amp;quot; your stuff smack in the middle of your map, then spin and shift it to where you want it (in the example above, it could have been shifted in x and y as well.  Just don&#039;t shift and then spin, or you will be back to having things &amp;quot;float&amp;quot; again.&lt;br /&gt;
&lt;br /&gt;
With shift and spin you can also work with groups and make a &amp;quot;master&amp;quot; group in the middle of your map, then shift and spin multiple copies to other locations on your map.&lt;/div&gt;</summary>
		<author><name>ClayOgre</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7355</id>
		<title>Map making by hand</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7355"/>
		<updated>2010-11-06T01:29:05Z</updated>

		<summary type="html">&lt;p&gt;ClayOgre: /* Groups */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoDoc|Major re-organization, transform away from &amp;quot;chat&amp;quot; style. Need to reference pages elsewhere on the wiki in place of much of the content which appears to be building up here.  Create them if necessary, or see the list [[Special:Allpages|here]].}}&lt;br /&gt;
Although there are a number of GUI options for creating maps such as BZ-Edit, 3D modelers, many map-makers use a basic text-editor.  There are many times when it is necessary to make small changes to a map, such as including objects that are unavailable in GUI map-maker, but there are also some who enjoy the challenge of creating a map entirely from scratch with a text-editor.&lt;br /&gt;
&lt;br /&gt;
==Text Editors==&lt;br /&gt;
Most text-editors designed for coding/programming are more than sufficient for editing bzw files.  Although word-processing programs such as Microsoft Word can be used, there are many cheaper (free) and more efficient programs designed specifically for coding. If you are interested in syntax highlighting, look at the [http://my.bzflag.org/bb/viewtopic.php?f=24&amp;amp;t=16037&amp;amp;p=148953 forum topic].&lt;br /&gt;
===Windows===&lt;br /&gt;
*Notepad&lt;br /&gt;
*PSPad&lt;br /&gt;
*NoteTab&lt;br /&gt;
*[http://notepad-plus-plus.org/ Notepad ++] - a tabbed editor based on Scite.&lt;br /&gt;
&lt;br /&gt;
===Mac===&lt;br /&gt;
*TextWrangler&lt;br /&gt;
*TextEdit&lt;br /&gt;
===Linux===&lt;br /&gt;
*Command-line editors such as nano, emacs, pico, vim, or ed.&lt;br /&gt;
*GEdit&lt;br /&gt;
*Kate&lt;br /&gt;
*Scite&lt;br /&gt;
&lt;br /&gt;
==Editing existing maps==&lt;br /&gt;
Beginning mapmakers should spend some time studying and making small changes in existing maps to see how things work.  In the client, maps can be saved for editing by joining the desired server and choosing: Options&amp;gt;Save World.  Maps can also be saved by issuing the /saveworld command.  The map should be a simple map when getting started.  One may find it easier to create a file in BZEdit and open the resulting file in the text-editor.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
If you have created a box in BZEdit you may see:&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
 world &lt;br /&gt;
   size 400 &lt;br /&gt;
 end &lt;br /&gt;
 options &lt;br /&gt;
   +r &lt;br /&gt;
   -j &lt;br /&gt;
   -set _tankSpeed 25 &lt;br /&gt;
   -ms 5 &lt;br /&gt;
   -mp 0,2,0,2,0,2 &lt;br /&gt;
 end &lt;br /&gt;
 box &lt;br /&gt;
   name box1 &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
 end &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===What that means===&lt;br /&gt;
&amp;quot;There are set variables that define various things such as how fast your tank is, how fast the bullets are, or if it&#039;s raining or foggy.  Put those in the options setting with &amp;quot;-set(space) &amp;quot; in front of it. You can also make those changes as an admin by using /set _variable (notice there is a space between the set and the _).  A full list of these settings can be found on the [[Server Variables]] page.  Other options, such as how many times a flag can be grabbed before it resets or if flags can land on buildings are explained [http://my.bzflag.org/bb/files/antigrav4teamconf_114.txt in this forum post]&lt;br /&gt;
Optionally, the variables can be placed in a separate configuration file and referenced when the server is started.&amp;quot;&lt;br /&gt;
&#039;&#039;&#039;old&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, it says:&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
(Note: the # sign is used for comments.)&lt;br /&gt;
&lt;br /&gt;
This is the text added by the application initially, kind of like advertising. This will be the first thing anyone sees when they look at the map.&lt;br /&gt;
&lt;br /&gt;
The next thing is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
world &lt;br /&gt;
  size 400 # Sets the world size to 400 (800 x 800 total)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is rather self-explanatory. It&#039;s the &amp;lt;size&amp;gt; of the &amp;lt;world&amp;gt; (The BZFlag arena).&lt;br /&gt;
&lt;br /&gt;
Next is an &amp;lt;options&amp;gt; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options &lt;br /&gt;
  +r   # Enable Ricochet&lt;br /&gt;
  -j   # Enable Jumping&lt;br /&gt;
  -set _tankSpeed 25  # Sets the tank speed to 25 bzunits/second&lt;br /&gt;
  -ms 5  # Sets the maximum shots (per tank) to 5&lt;br /&gt;
  -mp 0,2,0,2,0,2  # Maximum of 2 Red Players, 2 Blue Players, and 2 Observers&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This allows you to define in the map file certain options that are also available from the command line when you start the bzfs server, or in the optional server config file.  Options embedded into a world file will override those input on the command line or in a config file.&lt;br /&gt;
&lt;br /&gt;
The commands listed here are:&lt;br /&gt;
Ricochet, Jumping, Tank speed, Max Shots, and Max Players.&lt;br /&gt;
These are rather self explanatory, except for Max Players. Each number represents how many of each of the following team players are allowed in the game (in the order listed): Rogue, Red, Green, Blue, Purple, Observer. Each number defines the max number of players per category.&lt;br /&gt;
&lt;br /&gt;
For more, see [[Options_(object)|Options Object]].&lt;br /&gt;
&lt;br /&gt;
We now come to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
box &lt;br /&gt;
  name box1      # Generally unused&lt;br /&gt;
  position 0 0 0 # X Y Z Position&lt;br /&gt;
  size 10 10 10  # X Y Z Size (bzunits from the position of the box)&lt;br /&gt;
  rotation 0     # Rotation (in degrees)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is a &amp;lt;box&amp;gt; with a &amp;lt;name&amp;gt; of &amp;lt;box1&amp;gt;.&lt;br /&gt;
The &amp;lt;position&amp;gt; is 0,0,0 in R3[http://en.wikipedia.org/wiki/R3].&lt;br /&gt;
The rest is pretty self explanatory.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; EVERY STATEMENT MUST HAVE AN END.&lt;br /&gt;
&lt;br /&gt;
===Basic Definitions===&lt;br /&gt;
;Objects&lt;br /&gt;
:Objects are the basic building blocks of the bzw file.  Objects begin with a line declaring the object, some fields describing that object, and a line that closes the object (usually with &amp;quot;end&amp;quot;).  Each of these sections of the object is important.&lt;br /&gt;
;Comments&lt;br /&gt;
:BZFS ignores anything in a line following the #; the line has been &amp;quot;commented out.&amp;quot;  It is highly recommended that comments be used often, both for the mapmaker and for others that may see the map.&lt;br /&gt;
;3D Cartesian Coordinate System&lt;br /&gt;
:In most objects, you will see three numbers after position and size. These numbers are coordinates on a graph. The first number is the x coordinate (left and right) the middle number is the y coordinate (forward and backward) and the third number is the z coordinate (height and depth). Another way of thinking of it is: x = width, y = depth, z = height. (Those accustomed to the Y axis determining height will have to slightly adjust their thinking.) &lt;br /&gt;
&lt;br /&gt;
==Sample Objects==&lt;br /&gt;
===The Box===&lt;br /&gt;
Perhaps the simplest object is the box.  There is actually nothing special you can do to it (but in versions of BZFlag from 2.0.8 up, you can do a lot more to it).  Here is an example of a box:&lt;br /&gt;
&lt;br /&gt;
 box&lt;br /&gt;
   name box1             # Optional, but good to include&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   rotation 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the first line, notice the word &amp;quot;box&amp;quot;.  It simply says the next object is a box.  The next line is the name of the object.  It is defined with the syntax &amp;quot;&amp;lt;tt&amp;gt;name &#039;&#039;objectName&#039;&#039;&amp;lt;/tt&amp;gt;&amp;quot;.  It is not required, but is good to include (if you have a LOT of boxes, how do you know which is which?  Naming them--as well as other objects--helps you keep track).  The third line defines the position of the center of the bottom of the object.  The three arguments of &amp;lt;tt&amp;gt;position&amp;lt;/tt&amp;gt; are the x, y, and z coordinates of the box, respectively.  The x and y coordinates can be positive or negative, but the z coordinate should just be positive or zero.  On the fourth line, the size of the box is defined.  The arguments of &amp;lt;tt&amp;gt;size&amp;lt;/tt&amp;gt; are the x, y, and z sizes of the object, respectively.  The x and y arguments make the box that wide on both sides of it&#039;s position.  However, the z argument makes the object exactly the number of units tall as defined.  In other words, the box shown above, with a size of &#039;10 10 10&#039; is actually 20 units by 20 units by 10 units high, so if you want a box that is a perfect cube, you would need to make the height, or Z dimension, &#039;20&#039;. The next line just says how much the object is rotated.  This number is the number of degrees of rotation, and can be negative or positive.  The last line just tells BZFlag the object is done, and a new one can be defined.  Be sure to &#039;&#039;&#039;always&#039;&#039;&#039; use this.&lt;br /&gt;
&lt;br /&gt;
Below is an image of a box with a size of 5 5 10.&lt;br /&gt;
&lt;br /&gt;
[[Image:box.jpg]]&lt;br /&gt;
&lt;br /&gt;
===The Cone===&lt;br /&gt;
Most objects have similar parameters as the basic box.  For instance, the code for a cone may look something like this:&lt;br /&gt;
&lt;br /&gt;
 cone&lt;br /&gt;
   name cone1&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 20&lt;br /&gt;
   divisions 128&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Divisions basically decide how smooth the cone is.  The higher the divisions the more smooth the cone is.  A division of 4 would look like a pyramid.  Another parameter that can be added to the cone object is angle. If you say angle 180, that would make 1/2 of a cone, 90 would make 1/4 of a cone, and so on. &lt;br /&gt;
&lt;br /&gt;
===The Arc===&lt;br /&gt;
&lt;br /&gt;
An arc is basically a cylinder. However it doesn’t have to be a perfect cylinder depending on certain options you select. For an arc the only required options are divisions, position and size. Just like the cone divisions have the same effect, position and size are all the same. Once again you can have an oval shaped cylinder type thing. Now, you WILL find more options to an arc than to a cone, for example the ratio option. The ratio options let you basically put a hole in the cylinder. So if you have the option: ratio 1 you would have a full cylinder. If you say for example ratio .3 or any number less than 1 you will get a hole in the cylinder. The bigger the number, the smaller the hole. Angle allows you to do a semicircle. Rotation, once again, isn&#039;t really needed, unless you need a semicircle that has a certain specific orientation in your map. all the options like spin and shear are the same for this object too! phydrv and matref I’ll show later. Let’s move to the sphere:&lt;br /&gt;
&lt;br /&gt;
===The Sphere===&lt;br /&gt;
&lt;br /&gt;
The only options required to make a sphere are position, size, and divisions. &lt;br /&gt;
All these options do the same thing as they did in the objects above.  You may also have an oval like sphere.  You make an oval like sphere simply by making the x and y&#039;s different sizes just like in the cone and arc.  The radius option is just a substitute for size.  You can write size 10 10 10 or radius 10.  Both do the same thing. However if you want an oval shaped sphere you have to use size.  Rotation wouldn&#039;t really have an effect and the shear and spin works the same for this object.&lt;br /&gt;
&lt;br /&gt;
==Getting more help==&lt;br /&gt;
*The links at the bottom of the [[:Category:Map Making|Map Making]] page.&lt;br /&gt;
*The original creator of this page is flight, you can email him at dirtbikerdude_91@yahoo.com and he will be happy to answer any questions that he is capable of answering.&lt;br /&gt;
&lt;br /&gt;
==Special Objects==&lt;br /&gt;
There are certain objects that are often coded by hand because it is simpler or it is impossible to do with graphical map creation tools.  &lt;br /&gt;
&lt;br /&gt;
===Materials ===&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_bolt.png &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
Material is letting the computer know that a material is about to be explained to it.  You name it so that way you can reference it with the matref.  The name can be any thing you want as long as it does not have any spaces.  You type in &amp;lt;tt&amp;gt;addtexture&amp;lt;/tt&amp;gt; and you state a texture name.  Now, how do you know what texture names there are to use?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Linux&#039;&#039;&#039;: Running &amp;lt;tt&amp;gt;ls /usr/share/bzflag/*.png&amp;lt;/tt&amp;gt; in a terminal will show the list of pictures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Mac&#039;&#039;&#039;: If you control click (right click) on the bzflag icon, click show package contents, click contents, and click resources, those are the pictures you may use. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Windows&#039;&#039;&#039;: The default path is &amp;lt;tt&amp;gt;C:\Program Files\BZFlag\data\*.png&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What you will find are images that are used in every day games.  The top of a base, the wall of a base. A bullet which is blue_bolt.png (as was used above).  The full path to the texture needs to be used if the texture is not found in that directory.  Any customized textures should be uploaded to the [http://images.bzflag.org/submitimages/ BZFlag Image Submission System] before the map is hosted publicly.&lt;br /&gt;
&lt;br /&gt;
Servers running bzfs 2.0.8 and earlier will require &amp;quot;meshbox&amp;quot; and &amp;quot;meshpyr&amp;quot; in order to apply textures and physics to these objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instead of creating a new texture, many interesting and creative things can be done with the &amp;quot;diffuse&amp;quot; parameter in the material object.  You can add the diffuse command and it will look like this diffuse 1 1 1 1.  The first number is the amount of red that will be in the meshobject.  The second number is the amount of green, the third is the amount of blue.  So you can mix those colors to make more colors.  You may use a range from 0-1.  For example diffuse .3 .5 .26 1.  The fourth number determines the opacity or transparency (the see-throughability).  0 is invisible, .5 is half invisible, and 1 is normal. &lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   diffuse .5 .25 .1 .6 &lt;br /&gt;
   addtexture mesh.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Physics===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Physics make your tank behave in different ways.  If you have ever played laser mania by Louman than you know on the outskirts of the map there is something you can jump on and you go really fast, that is a physics. Physics and materials work the same way.  Physics is to material as phydrv is to matref.  You must specify a physics then on a meshbox, meshpyr cone arc sphere or whatever, you can reference that physics by using the phydrv command just like you would use the matref command for materials.  There are different physics commands.  Linear, angular, slide and death.  In the Louman map I mentioned above is a linear physics.  Linear physics makes your tank move in a line.  The numbers after a linear command are just like position x y z.  Example:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   linear 50 0 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive x direction you may use -50 and it will make it go the other way.&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy2 &lt;br /&gt;
   linear 0 50 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive y direction &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy3 &lt;br /&gt;
   linear 0 0 50 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank jump at a speed of 50 &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy4 &lt;br /&gt;
   slide 5 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank basically feel like it&#039;s on ice.  Whichever way the tank is moving it will keep moving that way. &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy5 &lt;br /&gt;
   death haha! you died &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make the tank die when it touches the object that refers to this and the message haha! you died will be displayed to that person. &lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   death I like you better dead! &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   phydrv phy1                       # Or what ever you named the physics.&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This works just like the material &lt;br /&gt;
&lt;br /&gt;
The thing about physics and materials is that they have to be written before they are referenced. &lt;br /&gt;
&lt;br /&gt;
This &#039;&#039;&#039;won&#039;t&#039;&#039;&#039; work &lt;br /&gt;
&lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_team.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
A group is cluster of objects that can be &amp;quot;gathered together&amp;quot; and treated as if they were a single object.  Certain things cannot be included in groups:&lt;br /&gt;
&lt;br /&gt;
*textureMatrix&lt;br /&gt;
&lt;br /&gt;
*dynamicColor&lt;br /&gt;
&lt;br /&gt;
*material&lt;br /&gt;
&lt;br /&gt;
*physics&lt;br /&gt;
&lt;br /&gt;
*links&lt;br /&gt;
&lt;br /&gt;
*weapon&lt;br /&gt;
&lt;br /&gt;
*zone&lt;br /&gt;
&lt;br /&gt;
Notice that while teleporters aren&#039;t excluded from groups, you can&#039;t create links to teleporters within a group, except for purely random ones using &amp;quot;*&amp;quot; for the link.&lt;br /&gt;
&lt;br /&gt;
Groups can be nested (you can have a group that is included in another group).&lt;br /&gt;
&lt;br /&gt;
For example if a map editor is making a forest, and each tree contains 2 objects, the editor doesn&#039;t want to type up the code for each tree over and over again. What he can do is tell BZFS that these objects = tree. And then whenever he wants to make a tree he just calls that group, as shown below.&lt;br /&gt;
&lt;br /&gt;
Example-----------&lt;br /&gt;
&lt;br /&gt;
first define a group of obects as a tree &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  define tree&lt;br /&gt;
  &lt;br /&gt;
  box&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  size 2 2 4&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  pyramid&lt;br /&gt;
  position 0 0 3&lt;br /&gt;
  size 5 5 10&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  enddef&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
...then, to call the &amp;quot;tree&amp;quot; group, just:&lt;br /&gt;
&lt;br /&gt;
  group tree&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
==Transformations==&lt;br /&gt;
[[Category:Map Making]]&lt;br /&gt;
Transformations are simple ways of modifying objects so that maps have some variety. These can get complicated so I will only give you a sample of what they can do. There are 3 transformations shift, spin, and shear. You can find a different also helpful page here [[3d Transformations]]&lt;br /&gt;
&lt;br /&gt;
The one is will tell you about is &#039;&#039;&#039;Shift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shift&#039;&#039;&#039; moves an object by the amount of units that you specify from its present position.&lt;br /&gt;
the object..&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at place 10 10 0&lt;br /&gt;
&lt;br /&gt;
while the object..&lt;br /&gt;
&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  shift 0 0 10&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at position 10 10 10.&lt;br /&gt;
&lt;br /&gt;
====Spin====&lt;br /&gt;
Spinning an object is just like rotating an object but can be on a different axis. (y and x)&lt;br /&gt;
When you rotate it is around the center of the object.&lt;br /&gt;
Remember: Only spin-able objects can be spun.&lt;br /&gt;
Here is what the code looks like:&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
 end&lt;br /&gt;
The meshbox will now be tilted 45 degrees on its y axis.&lt;br /&gt;
Spin code has four numbers, the first one is how many degrees to spin.&lt;br /&gt;
The last three are for which axis&#039;s to spin, by placing a value of more than 0.&lt;br /&gt;
Spin can be a bit tricky and unintuitive to use.  It is not exactly like rotate, because it is possible to &amp;quot;spin&amp;quot; something so that it ends up &amp;quot;underneath&amp;quot; the BZFlag playing field.&lt;br /&gt;
&lt;br /&gt;
Spin is often best used with shift.  Think of the center of your map as a sort of &amp;quot;construction yard&amp;quot;.  You position objects at location 0 0 0, then spin and shift them to the location you want.&lt;br /&gt;
&lt;br /&gt;
Here is what you get if you use the above code in a map:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0012.png]]&lt;br /&gt;
&lt;br /&gt;
Looks fairly normal in this screenshot, doesn&#039;t it.  But if you drive around, the box will behave oddly, and appear to &amp;quot;float&amp;quot; in front of your HUD.  What has happened is that the box hasn&#039;t rotated around it&#039;s own axis, but around the world axis for the whole BZFlag arena!  But if we add some code to shift the box up above the z plane, it will look normal in-game.&lt;br /&gt;
&lt;br /&gt;
So if we make a simple change to the above code and add a shift statement and shift the box up in z (this is not the z axis of the box, but the world axis of our game arena):&lt;br /&gt;
&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
   shift 0 0 10&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
...we get this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0013.png]]&lt;br /&gt;
&lt;br /&gt;
... and the box doesn&#039;t do the weird &amp;quot;float&amp;quot; thing any more.  This &amp;quot;construction yard&amp;quot; technique is really handy, you just &amp;quot;build&amp;quot; your stuff smack in the middle of your map, then spin and shift it to where you want it (in the example above, it could have been shifted in x and y as well.  Just don&#039;t shift and then spin, or you will be back to having things &amp;quot;float&amp;quot; again.&lt;br /&gt;
&lt;br /&gt;
With shift and spin you can also work with groups and make a &amp;quot;master&amp;quot; group in the middle of your map, then shift and spin multiple copies to other locations on your map.&lt;/div&gt;</summary>
		<author><name>ClayOgre</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7354</id>
		<title>Map making by hand</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7354"/>
		<updated>2010-11-06T01:25:19Z</updated>

		<summary type="html">&lt;p&gt;ClayOgre: /* Groups */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoDoc|Major re-organization, transform away from &amp;quot;chat&amp;quot; style. Need to reference pages elsewhere on the wiki in place of much of the content which appears to be building up here.  Create them if necessary, or see the list [[Special:Allpages|here]].}}&lt;br /&gt;
Although there are a number of GUI options for creating maps such as BZ-Edit, 3D modelers, many map-makers use a basic text-editor.  There are many times when it is necessary to make small changes to a map, such as including objects that are unavailable in GUI map-maker, but there are also some who enjoy the challenge of creating a map entirely from scratch with a text-editor.&lt;br /&gt;
&lt;br /&gt;
==Text Editors==&lt;br /&gt;
Most text-editors designed for coding/programming are more than sufficient for editing bzw files.  Although word-processing programs such as Microsoft Word can be used, there are many cheaper (free) and more efficient programs designed specifically for coding. If you are interested in syntax highlighting, look at the [http://my.bzflag.org/bb/viewtopic.php?f=24&amp;amp;t=16037&amp;amp;p=148953 forum topic].&lt;br /&gt;
===Windows===&lt;br /&gt;
*Notepad&lt;br /&gt;
*PSPad&lt;br /&gt;
*NoteTab&lt;br /&gt;
*[http://notepad-plus-plus.org/ Notepad ++] - a tabbed editor based on Scite.&lt;br /&gt;
&lt;br /&gt;
===Mac===&lt;br /&gt;
*TextWrangler&lt;br /&gt;
*TextEdit&lt;br /&gt;
===Linux===&lt;br /&gt;
*Command-line editors such as nano, emacs, pico, vim, or ed.&lt;br /&gt;
*GEdit&lt;br /&gt;
*Kate&lt;br /&gt;
*Scite&lt;br /&gt;
&lt;br /&gt;
==Editing existing maps==&lt;br /&gt;
Beginning mapmakers should spend some time studying and making small changes in existing maps to see how things work.  In the client, maps can be saved for editing by joining the desired server and choosing: Options&amp;gt;Save World.  Maps can also be saved by issuing the /saveworld command.  The map should be a simple map when getting started.  One may find it easier to create a file in BZEdit and open the resulting file in the text-editor.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
If you have created a box in BZEdit you may see:&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
 world &lt;br /&gt;
   size 400 &lt;br /&gt;
 end &lt;br /&gt;
 options &lt;br /&gt;
   +r &lt;br /&gt;
   -j &lt;br /&gt;
   -set _tankSpeed 25 &lt;br /&gt;
   -ms 5 &lt;br /&gt;
   -mp 0,2,0,2,0,2 &lt;br /&gt;
 end &lt;br /&gt;
 box &lt;br /&gt;
   name box1 &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
 end &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===What that means===&lt;br /&gt;
&amp;quot;There are set variables that define various things such as how fast your tank is, how fast the bullets are, or if it&#039;s raining or foggy.  Put those in the options setting with &amp;quot;-set(space) &amp;quot; in front of it. You can also make those changes as an admin by using /set _variable (notice there is a space between the set and the _).  A full list of these settings can be found on the [[Server Variables]] page.  Other options, such as how many times a flag can be grabbed before it resets or if flags can land on buildings are explained [http://my.bzflag.org/bb/files/antigrav4teamconf_114.txt in this forum post]&lt;br /&gt;
Optionally, the variables can be placed in a separate configuration file and referenced when the server is started.&amp;quot;&lt;br /&gt;
&#039;&#039;&#039;old&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, it says:&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
(Note: the # sign is used for comments.)&lt;br /&gt;
&lt;br /&gt;
This is the text added by the application initially, kind of like advertising. This will be the first thing anyone sees when they look at the map.&lt;br /&gt;
&lt;br /&gt;
The next thing is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
world &lt;br /&gt;
  size 400 # Sets the world size to 400 (800 x 800 total)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is rather self-explanatory. It&#039;s the &amp;lt;size&amp;gt; of the &amp;lt;world&amp;gt; (The BZFlag arena).&lt;br /&gt;
&lt;br /&gt;
Next is an &amp;lt;options&amp;gt; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options &lt;br /&gt;
  +r   # Enable Ricochet&lt;br /&gt;
  -j   # Enable Jumping&lt;br /&gt;
  -set _tankSpeed 25  # Sets the tank speed to 25 bzunits/second&lt;br /&gt;
  -ms 5  # Sets the maximum shots (per tank) to 5&lt;br /&gt;
  -mp 0,2,0,2,0,2  # Maximum of 2 Red Players, 2 Blue Players, and 2 Observers&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This allows you to define in the map file certain options that are also available from the command line when you start the bzfs server, or in the optional server config file.  Options embedded into a world file will override those input on the command line or in a config file.&lt;br /&gt;
&lt;br /&gt;
The commands listed here are:&lt;br /&gt;
Ricochet, Jumping, Tank speed, Max Shots, and Max Players.&lt;br /&gt;
These are rather self explanatory, except for Max Players. Each number represents how many of each of the following team players are allowed in the game (in the order listed): Rogue, Red, Green, Blue, Purple, Observer. Each number defines the max number of players per category.&lt;br /&gt;
&lt;br /&gt;
For more, see [[Options_(object)|Options Object]].&lt;br /&gt;
&lt;br /&gt;
We now come to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
box &lt;br /&gt;
  name box1      # Generally unused&lt;br /&gt;
  position 0 0 0 # X Y Z Position&lt;br /&gt;
  size 10 10 10  # X Y Z Size (bzunits from the position of the box)&lt;br /&gt;
  rotation 0     # Rotation (in degrees)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is a &amp;lt;box&amp;gt; with a &amp;lt;name&amp;gt; of &amp;lt;box1&amp;gt;.&lt;br /&gt;
The &amp;lt;position&amp;gt; is 0,0,0 in R3[http://en.wikipedia.org/wiki/R3].&lt;br /&gt;
The rest is pretty self explanatory.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; EVERY STATEMENT MUST HAVE AN END.&lt;br /&gt;
&lt;br /&gt;
===Basic Definitions===&lt;br /&gt;
;Objects&lt;br /&gt;
:Objects are the basic building blocks of the bzw file.  Objects begin with a line declaring the object, some fields describing that object, and a line that closes the object (usually with &amp;quot;end&amp;quot;).  Each of these sections of the object is important.&lt;br /&gt;
;Comments&lt;br /&gt;
:BZFS ignores anything in a line following the #; the line has been &amp;quot;commented out.&amp;quot;  It is highly recommended that comments be used often, both for the mapmaker and for others that may see the map.&lt;br /&gt;
;3D Cartesian Coordinate System&lt;br /&gt;
:In most objects, you will see three numbers after position and size. These numbers are coordinates on a graph. The first number is the x coordinate (left and right) the middle number is the y coordinate (forward and backward) and the third number is the z coordinate (height and depth). Another way of thinking of it is: x = width, y = depth, z = height. (Those accustomed to the Y axis determining height will have to slightly adjust their thinking.) &lt;br /&gt;
&lt;br /&gt;
==Sample Objects==&lt;br /&gt;
===The Box===&lt;br /&gt;
Perhaps the simplest object is the box.  There is actually nothing special you can do to it (but in versions of BZFlag from 2.0.8 up, you can do a lot more to it).  Here is an example of a box:&lt;br /&gt;
&lt;br /&gt;
 box&lt;br /&gt;
   name box1             # Optional, but good to include&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   rotation 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the first line, notice the word &amp;quot;box&amp;quot;.  It simply says the next object is a box.  The next line is the name of the object.  It is defined with the syntax &amp;quot;&amp;lt;tt&amp;gt;name &#039;&#039;objectName&#039;&#039;&amp;lt;/tt&amp;gt;&amp;quot;.  It is not required, but is good to include (if you have a LOT of boxes, how do you know which is which?  Naming them--as well as other objects--helps you keep track).  The third line defines the position of the center of the bottom of the object.  The three arguments of &amp;lt;tt&amp;gt;position&amp;lt;/tt&amp;gt; are the x, y, and z coordinates of the box, respectively.  The x and y coordinates can be positive or negative, but the z coordinate should just be positive or zero.  On the fourth line, the size of the box is defined.  The arguments of &amp;lt;tt&amp;gt;size&amp;lt;/tt&amp;gt; are the x, y, and z sizes of the object, respectively.  The x and y arguments make the box that wide on both sides of it&#039;s position.  However, the z argument makes the object exactly the number of units tall as defined.  In other words, the box shown above, with a size of &#039;10 10 10&#039; is actually 20 units by 20 units by 10 units high, so if you want a box that is a perfect cube, you would need to make the height, or Z dimension, &#039;20&#039;. The next line just says how much the object is rotated.  This number is the number of degrees of rotation, and can be negative or positive.  The last line just tells BZFlag the object is done, and a new one can be defined.  Be sure to &#039;&#039;&#039;always&#039;&#039;&#039; use this.&lt;br /&gt;
&lt;br /&gt;
Below is an image of a box with a size of 5 5 10.&lt;br /&gt;
&lt;br /&gt;
[[Image:box.jpg]]&lt;br /&gt;
&lt;br /&gt;
===The Cone===&lt;br /&gt;
Most objects have similar parameters as the basic box.  For instance, the code for a cone may look something like this:&lt;br /&gt;
&lt;br /&gt;
 cone&lt;br /&gt;
   name cone1&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 20&lt;br /&gt;
   divisions 128&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Divisions basically decide how smooth the cone is.  The higher the divisions the more smooth the cone is.  A division of 4 would look like a pyramid.  Another parameter that can be added to the cone object is angle. If you say angle 180, that would make 1/2 of a cone, 90 would make 1/4 of a cone, and so on. &lt;br /&gt;
&lt;br /&gt;
===The Arc===&lt;br /&gt;
&lt;br /&gt;
An arc is basically a cylinder. However it doesn’t have to be a perfect cylinder depending on certain options you select. For an arc the only required options are divisions, position and size. Just like the cone divisions have the same effect, position and size are all the same. Once again you can have an oval shaped cylinder type thing. Now, you WILL find more options to an arc than to a cone, for example the ratio option. The ratio options let you basically put a hole in the cylinder. So if you have the option: ratio 1 you would have a full cylinder. If you say for example ratio .3 or any number less than 1 you will get a hole in the cylinder. The bigger the number, the smaller the hole. Angle allows you to do a semicircle. Rotation, once again, isn&#039;t really needed, unless you need a semicircle that has a certain specific orientation in your map. all the options like spin and shear are the same for this object too! phydrv and matref I’ll show later. Let’s move to the sphere:&lt;br /&gt;
&lt;br /&gt;
===The Sphere===&lt;br /&gt;
&lt;br /&gt;
The only options required to make a sphere are position, size, and divisions. &lt;br /&gt;
All these options do the same thing as they did in the objects above.  You may also have an oval like sphere.  You make an oval like sphere simply by making the x and y&#039;s different sizes just like in the cone and arc.  The radius option is just a substitute for size.  You can write size 10 10 10 or radius 10.  Both do the same thing. However if you want an oval shaped sphere you have to use size.  Rotation wouldn&#039;t really have an effect and the shear and spin works the same for this object.&lt;br /&gt;
&lt;br /&gt;
==Getting more help==&lt;br /&gt;
*The links at the bottom of the [[:Category:Map Making|Map Making]] page.&lt;br /&gt;
*The original creator of this page is flight, you can email him at dirtbikerdude_91@yahoo.com and he will be happy to answer any questions that he is capable of answering.&lt;br /&gt;
&lt;br /&gt;
==Special Objects==&lt;br /&gt;
There are certain objects that are often coded by hand because it is simpler or it is impossible to do with graphical map creation tools.  &lt;br /&gt;
&lt;br /&gt;
===Materials ===&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_bolt.png &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
Material is letting the computer know that a material is about to be explained to it.  You name it so that way you can reference it with the matref.  The name can be any thing you want as long as it does not have any spaces.  You type in &amp;lt;tt&amp;gt;addtexture&amp;lt;/tt&amp;gt; and you state a texture name.  Now, how do you know what texture names there are to use?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Linux&#039;&#039;&#039;: Running &amp;lt;tt&amp;gt;ls /usr/share/bzflag/*.png&amp;lt;/tt&amp;gt; in a terminal will show the list of pictures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Mac&#039;&#039;&#039;: If you control click (right click) on the bzflag icon, click show package contents, click contents, and click resources, those are the pictures you may use. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Windows&#039;&#039;&#039;: The default path is &amp;lt;tt&amp;gt;C:\Program Files\BZFlag\data\*.png&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What you will find are images that are used in every day games.  The top of a base, the wall of a base. A bullet which is blue_bolt.png (as was used above).  The full path to the texture needs to be used if the texture is not found in that directory.  Any customized textures should be uploaded to the [http://images.bzflag.org/submitimages/ BZFlag Image Submission System] before the map is hosted publicly.&lt;br /&gt;
&lt;br /&gt;
Servers running bzfs 2.0.8 and earlier will require &amp;quot;meshbox&amp;quot; and &amp;quot;meshpyr&amp;quot; in order to apply textures and physics to these objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instead of creating a new texture, many interesting and creative things can be done with the &amp;quot;diffuse&amp;quot; parameter in the material object.  You can add the diffuse command and it will look like this diffuse 1 1 1 1.  The first number is the amount of red that will be in the meshobject.  The second number is the amount of green, the third is the amount of blue.  So you can mix those colors to make more colors.  You may use a range from 0-1.  For example diffuse .3 .5 .26 1.  The fourth number determines the opacity or transparency (the see-throughability).  0 is invisible, .5 is half invisible, and 1 is normal. &lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   diffuse .5 .25 .1 .6 &lt;br /&gt;
   addtexture mesh.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Physics===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Physics make your tank behave in different ways.  If you have ever played laser mania by Louman than you know on the outskirts of the map there is something you can jump on and you go really fast, that is a physics. Physics and materials work the same way.  Physics is to material as phydrv is to matref.  You must specify a physics then on a meshbox, meshpyr cone arc sphere or whatever, you can reference that physics by using the phydrv command just like you would use the matref command for materials.  There are different physics commands.  Linear, angular, slide and death.  In the Louman map I mentioned above is a linear physics.  Linear physics makes your tank move in a line.  The numbers after a linear command are just like position x y z.  Example:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   linear 50 0 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive x direction you may use -50 and it will make it go the other way.&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy2 &lt;br /&gt;
   linear 0 50 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive y direction &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy3 &lt;br /&gt;
   linear 0 0 50 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank jump at a speed of 50 &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy4 &lt;br /&gt;
   slide 5 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank basically feel like it&#039;s on ice.  Whichever way the tank is moving it will keep moving that way. &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy5 &lt;br /&gt;
   death haha! you died &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make the tank die when it touches the object that refers to this and the message haha! you died will be displayed to that person. &lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   death I like you better dead! &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   phydrv phy1                       # Or what ever you named the physics.&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This works just like the material &lt;br /&gt;
&lt;br /&gt;
The thing about physics and materials is that they have to be written before they are referenced. &lt;br /&gt;
&lt;br /&gt;
This &#039;&#039;&#039;won&#039;t&#039;&#039;&#039; work &lt;br /&gt;
&lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_team.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
A group is cluster of objects that can be &amp;quot;gathered together&amp;quot; and treated as if they were a single object.  Certain things cannot be included in groups:&lt;br /&gt;
&lt;br /&gt;
*textureMatrix&lt;br /&gt;
&lt;br /&gt;
*dynamicColor&lt;br /&gt;
&lt;br /&gt;
*material&lt;br /&gt;
&lt;br /&gt;
*physics&lt;br /&gt;
&lt;br /&gt;
*links&lt;br /&gt;
&lt;br /&gt;
*weapon&lt;br /&gt;
&lt;br /&gt;
*zone&lt;br /&gt;
&lt;br /&gt;
Groups can be nested (you can have a group that is included in another group).&lt;br /&gt;
&lt;br /&gt;
For example if a map editor is making a forest, and each tree contains 2 objects, the editor doesn&#039;t want to type up the code for each tree over and over again. What he can do is tell BZFS that these objects = tree. And then whenever he wants to make a tree he just calls that group, as shown below.&lt;br /&gt;
&lt;br /&gt;
Example-----------&lt;br /&gt;
&lt;br /&gt;
first define a group of obects as a tree &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  define tree&lt;br /&gt;
  &lt;br /&gt;
  box&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  size 2 2 4&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  pyramid&lt;br /&gt;
  position 0 0 3&lt;br /&gt;
  size 5 5 10&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  enddef&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
...then, to call the &amp;quot;tree&amp;quot; group, just:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  group tree&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
==Transformations==&lt;br /&gt;
[[Category:Map Making]]&lt;br /&gt;
Transformations are simple ways of modifying objects so that maps have some variety. These can get complicated so I will only give you a sample of what they can do. There are 3 transformations shift, spin, and shear. You can find a different also helpful page here [[3d Transformations]]&lt;br /&gt;
&lt;br /&gt;
The one is will tell you about is &#039;&#039;&#039;Shift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shift&#039;&#039;&#039; moves an object by the amount of units that you specify from its present position.&lt;br /&gt;
the object..&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at place 10 10 0&lt;br /&gt;
&lt;br /&gt;
while the object..&lt;br /&gt;
&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  shift 0 0 10&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at position 10 10 10.&lt;br /&gt;
&lt;br /&gt;
====Spin====&lt;br /&gt;
Spinning an object is just like rotating an object but can be on a different axis. (y and x)&lt;br /&gt;
When you rotate it is around the center of the object.&lt;br /&gt;
Remember: Only spin-able objects can be spun.&lt;br /&gt;
Here is what the code looks like:&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
 end&lt;br /&gt;
The meshbox will now be tilted 45 degrees on its y axis.&lt;br /&gt;
Spin code has four numbers, the first one is how many degrees to spin.&lt;br /&gt;
The last three are for which axis&#039;s to spin, by placing a value of more than 0.&lt;br /&gt;
Spin can be a bit tricky and unintuitive to use.  It is not exactly like rotate, because it is possible to &amp;quot;spin&amp;quot; something so that it ends up &amp;quot;underneath&amp;quot; the BZFlag playing field.&lt;br /&gt;
&lt;br /&gt;
Spin is often best used with shift.  Think of the center of your map as a sort of &amp;quot;construction yard&amp;quot;.  You position objects at location 0 0 0, then spin and shift them to the location you want.&lt;br /&gt;
&lt;br /&gt;
Here is what you get if you use the above code in a map:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0012.png]]&lt;br /&gt;
&lt;br /&gt;
Looks fairly normal in this screenshot, doesn&#039;t it.  But if you drive around, the box will behave oddly, and appear to &amp;quot;float&amp;quot; in front of your HUD.  What has happened is that the box hasn&#039;t rotated around it&#039;s own axis, but around the world axis for the whole BZFlag arena!  But if we add some code to shift the box up above the z plane, it will look normal in-game.&lt;br /&gt;
&lt;br /&gt;
So if we make a simple change to the above code and add a shift statement and shift the box up in z (this is not the z axis of the box, but the world axis of our game arena):&lt;br /&gt;
&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
   shift 0 0 10&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
...we get this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0013.png]]&lt;br /&gt;
&lt;br /&gt;
... and the box doesn&#039;t do the weird &amp;quot;float&amp;quot; thing any more.  This &amp;quot;construction yard&amp;quot; technique is really handy, you just &amp;quot;build&amp;quot; your stuff smack in the middle of your map, then spin and shift it to where you want it (in the example above, it could have been shifted in x and y as well.  Just don&#039;t shift and then spin, or you will be back to having things &amp;quot;float&amp;quot; again.&lt;br /&gt;
&lt;br /&gt;
With shift and spin you can also work with groups and make a &amp;quot;master&amp;quot; group in the middle of your map, then shift and spin multiple copies to other locations on your map.&lt;/div&gt;</summary>
		<author><name>ClayOgre</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=3d_Transformations&amp;diff=7353</id>
		<title>3d Transformations</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=3d_Transformations&amp;diff=7353"/>
		<updated>2010-11-06T01:17:20Z</updated>

		<summary type="html">&lt;p&gt;ClayOgre: /* Shear */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is ©Petteri Aimonen 2005, Used by permission.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
In version 1.10.8 and older bzflag, objects position, rotation and size where defined by, logically, position, rotation and size keywords. When 2.0 introduced 3d rotation, this had to change. Position and rotation have been obsoleted by their superiors, shift and spin. Size could be replaced with scale, but there is no need for that on traditional objects (mesh are a bit different). All keywords are order-specific. If you do shift before spin, it will still spin the object around 0 0 0, moving it somewhere else than where it was meant to be.&lt;br /&gt;
&lt;br /&gt;
 box&lt;br /&gt;
  position 50 100 0&lt;br /&gt;
  size 20 20 5&lt;br /&gt;
  rotation 45&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
can now be written:&lt;br /&gt;
&lt;br /&gt;
 meshbox&lt;br /&gt;
  size 20 20 5&lt;br /&gt;
  spin 45 0 0 1&lt;br /&gt;
  shift 50 100 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
=Spin=&lt;br /&gt;
&lt;br /&gt;
Spin can be used to rotate object around a specific axis. Axis is a line, defined by two points. First value after spin-keyword is rotation in degrees. The other three values determine which axis the spin will be applied.  It is usually simple to think rotation around the standard axises. You can spin around any axis, diagonal or anything. Anyway, all rotations can be made by rotating around standard axises, and they are usually most simple to think of.&lt;br /&gt;
&lt;br /&gt;
 X-axis eg. spin 45 1 0 0 &lt;br /&gt;
 Y-axis eg. spin 45 0 1 0 &lt;br /&gt;
 Z-axis, normal rotation, eg. spin 45 0 0 1&lt;br /&gt;
&lt;br /&gt;
[[Image:spin.png|alt text]]&lt;br /&gt;
[[Image:spin2.png|alt text]]&lt;br /&gt;
=Shift=&lt;br /&gt;
&lt;br /&gt;
Shifting means moving the object. It is used in same manner as old position-keyword. Without position-keyword, object is placed around 0 0 0. When shift moves it from origin, coordinates are just like with position. However, shift is repeatable, and sequential moves will use last point as origin.&lt;br /&gt;
&lt;br /&gt;
[[Image:shift.png|alt text]]&lt;br /&gt;
&lt;br /&gt;
=Shear=&lt;br /&gt;
&lt;br /&gt;
Shearing is &amp;quot;a deformation of an object in which parallel planes remain parallel but are shifted in a direction parallel to themselves.&amp;quot; If you don&#039;t understand, look at the image below.  The three values after shear-keyword define a vector. Vectors length represents change per Z-axis unit. If you have 10 unit high meshbox, and shear it by 1 0 0, top will move 10 * 1 away from the bottom in X-axis direction. In next example, we use shear to make an escalator with nice ends.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 physics&lt;br /&gt;
  name escalator&lt;br /&gt;
  linear 15 0 15&lt;br /&gt;
 end&lt;br /&gt;
 meshbox&lt;br /&gt;
  size 10 10 100&lt;br /&gt;
  shear 2 0 0&lt;br /&gt;
  phydrv escalator&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 meshbox&lt;br /&gt;
  size 10 10 10&lt;br /&gt;
  shear 1 0 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
[[Image:shear.png|alt text]]&lt;/div&gt;</summary>
		<author><name>ClayOgre</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=3d_Transformations&amp;diff=7352</id>
		<title>3d Transformations</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=3d_Transformations&amp;diff=7352"/>
		<updated>2010-11-06T01:16:26Z</updated>

		<summary type="html">&lt;p&gt;ClayOgre: /* Shift */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The following is ©Petteri Aimonen 2005, Used by permission.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
In version 1.10.8 and older bzflag, objects position, rotation and size where defined by, logically, position, rotation and size keywords. When 2.0 introduced 3d rotation, this had to change. Position and rotation have been obsoleted by their superiors, shift and spin. Size could be replaced with scale, but there is no need for that on traditional objects (mesh are a bit different). All keywords are order-specific. If you do shift before spin, it will still spin the object around 0 0 0, moving it somewhere else than where it was meant to be.&lt;br /&gt;
&lt;br /&gt;
 box&lt;br /&gt;
  position 50 100 0&lt;br /&gt;
  size 20 20 5&lt;br /&gt;
  rotation 45&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
can now be written:&lt;br /&gt;
&lt;br /&gt;
 meshbox&lt;br /&gt;
  size 20 20 5&lt;br /&gt;
  spin 45 0 0 1&lt;br /&gt;
  shift 50 100 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
=Spin=&lt;br /&gt;
&lt;br /&gt;
Spin can be used to rotate object around a specific axis. Axis is a line, defined by two points. First value after spin-keyword is rotation in degrees. The other three values determine which axis the spin will be applied.  It is usually simple to think rotation around the standard axises. You can spin around any axis, diagonal or anything. Anyway, all rotations can be made by rotating around standard axises, and they are usually most simple to think of.&lt;br /&gt;
&lt;br /&gt;
 X-axis eg. spin 45 1 0 0 &lt;br /&gt;
 Y-axis eg. spin 45 0 1 0 &lt;br /&gt;
 Z-axis, normal rotation, eg. spin 45 0 0 1&lt;br /&gt;
&lt;br /&gt;
[[Image:spin.png|alt text]]&lt;br /&gt;
[[Image:spin2.png|alt text]]&lt;br /&gt;
=Shift=&lt;br /&gt;
&lt;br /&gt;
Shifting means moving the object. It is used in same manner as old position-keyword. Without position-keyword, object is placed around 0 0 0. When shift moves it from origin, coordinates are just like with position. However, shift is repeatable, and sequential moves will use last point as origin.&lt;br /&gt;
&lt;br /&gt;
[[Image:shift.png|alt text]]&lt;br /&gt;
&lt;br /&gt;
=Shear=&lt;br /&gt;
&lt;br /&gt;
Shearing is &amp;quot;a deformation of an object in which parallel planes remain parallel but are shifted in a direction parallel to themselves.&amp;quot; If you don&#039;t understand, look at the image below.  The three values after shear-keyword define a vector. Vectors lenght represents change per Z-axis unit. If you have 10 units high meshbox, and shear it by 1 0 0, top will move 10 * 1 away from the bottom in X-axis direction. In next example, we use shear to make an escalator with nice ends.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 physics&lt;br /&gt;
  name escalator&lt;br /&gt;
  linear 15 0 15&lt;br /&gt;
 end&lt;br /&gt;
 meshbox&lt;br /&gt;
  size 10 10 100&lt;br /&gt;
  shear 2 0 0&lt;br /&gt;
  phydrv escalator&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 meshbox&lt;br /&gt;
  size 10 10 10&lt;br /&gt;
  shear 1 0 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
[[Image:shear.png|alt text]]&lt;/div&gt;</summary>
		<author><name>ClayOgre</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7351</id>
		<title>Map making by hand</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7351"/>
		<updated>2010-11-06T01:14:10Z</updated>

		<summary type="html">&lt;p&gt;ClayOgre: /* Spin */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoDoc|Major re-organization, transform away from &amp;quot;chat&amp;quot; style. Need to reference pages elsewhere on the wiki in place of much of the content which appears to be building up here.  Create them if necessary, or see the list [[Special:Allpages|here]].}}&lt;br /&gt;
Although there are a number of GUI options for creating maps such as BZ-Edit, 3D modelers, many map-makers use a basic text-editor.  There are many times when it is necessary to make small changes to a map, such as including objects that are unavailable in GUI map-maker, but there are also some who enjoy the challenge of creating a map entirely from scratch with a text-editor.&lt;br /&gt;
&lt;br /&gt;
==Text Editors==&lt;br /&gt;
Most text-editors designed for coding/programming are more than sufficient for editing bzw files.  Although word-processing programs such as Microsoft Word can be used, there are many cheaper (free) and more efficient programs designed specifically for coding. If you are interested in syntax highlighting, look at the [http://my.bzflag.org/bb/viewtopic.php?f=24&amp;amp;t=16037&amp;amp;p=148953 forum topic].&lt;br /&gt;
===Windows===&lt;br /&gt;
*Notepad&lt;br /&gt;
*PSPad&lt;br /&gt;
*NoteTab&lt;br /&gt;
*[http://notepad-plus-plus.org/ Notepad ++] - a tabbed editor based on Scite.&lt;br /&gt;
&lt;br /&gt;
===Mac===&lt;br /&gt;
*TextWrangler&lt;br /&gt;
*TextEdit&lt;br /&gt;
===Linux===&lt;br /&gt;
*Command-line editors such as nano, emacs, pico, vim, or ed.&lt;br /&gt;
*GEdit&lt;br /&gt;
*Kate&lt;br /&gt;
*Scite&lt;br /&gt;
&lt;br /&gt;
==Editing existing maps==&lt;br /&gt;
Beginning mapmakers should spend some time studying and making small changes in existing maps to see how things work.  In the client, maps can be saved for editing by joining the desired server and choosing: Options&amp;gt;Save World.  Maps can also be saved by issuing the /saveworld command.  The map should be a simple map when getting started.  One may find it easier to create a file in BZEdit and open the resulting file in the text-editor.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
If you have created a box in BZEdit you may see:&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
 world &lt;br /&gt;
   size 400 &lt;br /&gt;
 end &lt;br /&gt;
 options &lt;br /&gt;
   +r &lt;br /&gt;
   -j &lt;br /&gt;
   -set _tankSpeed 25 &lt;br /&gt;
   -ms 5 &lt;br /&gt;
   -mp 0,2,0,2,0,2 &lt;br /&gt;
 end &lt;br /&gt;
 box &lt;br /&gt;
   name box1 &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
 end &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===What that means===&lt;br /&gt;
&amp;quot;There are set variables that define various things such as how fast your tank is, how fast the bullets are, or if it&#039;s raining or foggy.  Put those in the options setting with &amp;quot;-set(space) &amp;quot; in front of it. You can also make those changes as an admin by using /set _variable (notice there is a space between the set and the _).  A full list of these settings can be found on the [[Server Variables]] page.  Other options, such as how many times a flag can be grabbed before it resets or if flags can land on buildings are explained [http://my.bzflag.org/bb/files/antigrav4teamconf_114.txt in this forum post]&lt;br /&gt;
Optionally, the variables can be placed in a separate configuration file and referenced when the server is started.&amp;quot;&lt;br /&gt;
&#039;&#039;&#039;old&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, it says:&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
(Note: the # sign is used for comments.)&lt;br /&gt;
&lt;br /&gt;
This is the text added by the application initially, kind of like advertising. This will be the first thing anyone sees when they look at the map.&lt;br /&gt;
&lt;br /&gt;
The next thing is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
world &lt;br /&gt;
  size 400 # Sets the world size to 400 (800 x 800 total)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is rather self-explanatory. It&#039;s the &amp;lt;size&amp;gt; of the &amp;lt;world&amp;gt; (The BZFlag arena).&lt;br /&gt;
&lt;br /&gt;
Next is an &amp;lt;options&amp;gt; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options &lt;br /&gt;
  +r   # Enable Ricochet&lt;br /&gt;
  -j   # Enable Jumping&lt;br /&gt;
  -set _tankSpeed 25  # Sets the tank speed to 25 bzunits/second&lt;br /&gt;
  -ms 5  # Sets the maximum shots (per tank) to 5&lt;br /&gt;
  -mp 0,2,0,2,0,2  # Maximum of 2 Red Players, 2 Blue Players, and 2 Observers&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This allows you to define in the map file certain options that are also available from the command line when you start the bzfs server, or in the optional server config file.  Options embedded into a world file will override those input on the command line or in a config file.&lt;br /&gt;
&lt;br /&gt;
The commands listed here are:&lt;br /&gt;
Ricochet, Jumping, Tank speed, Max Shots, and Max Players.&lt;br /&gt;
These are rather self explanatory, except for Max Players. Each number represents how many of each of the following team players are allowed in the game (in the order listed): Rogue, Red, Green, Blue, Purple, Observer. Each number defines the max number of players per category.&lt;br /&gt;
&lt;br /&gt;
For more, see [[Options_(object)|Options Object]].&lt;br /&gt;
&lt;br /&gt;
We now come to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
box &lt;br /&gt;
  name box1      # Generally unused&lt;br /&gt;
  position 0 0 0 # X Y Z Position&lt;br /&gt;
  size 10 10 10  # X Y Z Size (bzunits from the position of the box)&lt;br /&gt;
  rotation 0     # Rotation (in degrees)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is a &amp;lt;box&amp;gt; with a &amp;lt;name&amp;gt; of &amp;lt;box1&amp;gt;.&lt;br /&gt;
The &amp;lt;position&amp;gt; is 0,0,0 in R3[http://en.wikipedia.org/wiki/R3].&lt;br /&gt;
The rest is pretty self explanatory.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; EVERY STATEMENT MUST HAVE AN END.&lt;br /&gt;
&lt;br /&gt;
===Basic Definitions===&lt;br /&gt;
;Objects&lt;br /&gt;
:Objects are the basic building blocks of the bzw file.  Objects begin with a line declaring the object, some fields describing that object, and a line that closes the object (usually with &amp;quot;end&amp;quot;).  Each of these sections of the object is important.&lt;br /&gt;
;Comments&lt;br /&gt;
:BZFS ignores anything in a line following the #; the line has been &amp;quot;commented out.&amp;quot;  It is highly recommended that comments be used often, both for the mapmaker and for others that may see the map.&lt;br /&gt;
;3D Cartesian Coordinate System&lt;br /&gt;
:In most objects, you will see three numbers after position and size. These numbers are coordinates on a graph. The first number is the x coordinate (left and right) the middle number is the y coordinate (forward and backward) and the third number is the z coordinate (height and depth). Another way of thinking of it is: x = width, y = depth, z = height. (Those accustomed to the Y axis determining height will have to slightly adjust their thinking.) &lt;br /&gt;
&lt;br /&gt;
==Sample Objects==&lt;br /&gt;
===The Box===&lt;br /&gt;
Perhaps the simplest object is the box.  There is actually nothing special you can do to it (but in versions of BZFlag from 2.0.8 up, you can do a lot more to it).  Here is an example of a box:&lt;br /&gt;
&lt;br /&gt;
 box&lt;br /&gt;
   name box1             # Optional, but good to include&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   rotation 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the first line, notice the word &amp;quot;box&amp;quot;.  It simply says the next object is a box.  The next line is the name of the object.  It is defined with the syntax &amp;quot;&amp;lt;tt&amp;gt;name &#039;&#039;objectName&#039;&#039;&amp;lt;/tt&amp;gt;&amp;quot;.  It is not required, but is good to include (if you have a LOT of boxes, how do you know which is which?  Naming them--as well as other objects--helps you keep track).  The third line defines the position of the center of the bottom of the object.  The three arguments of &amp;lt;tt&amp;gt;position&amp;lt;/tt&amp;gt; are the x, y, and z coordinates of the box, respectively.  The x and y coordinates can be positive or negative, but the z coordinate should just be positive or zero.  On the fourth line, the size of the box is defined.  The arguments of &amp;lt;tt&amp;gt;size&amp;lt;/tt&amp;gt; are the x, y, and z sizes of the object, respectively.  The x and y arguments make the box that wide on both sides of it&#039;s position.  However, the z argument makes the object exactly the number of units tall as defined.  In other words, the box shown above, with a size of &#039;10 10 10&#039; is actually 20 units by 20 units by 10 units high, so if you want a box that is a perfect cube, you would need to make the height, or Z dimension, &#039;20&#039;. The next line just says how much the object is rotated.  This number is the number of degrees of rotation, and can be negative or positive.  The last line just tells BZFlag the object is done, and a new one can be defined.  Be sure to &#039;&#039;&#039;always&#039;&#039;&#039; use this.&lt;br /&gt;
&lt;br /&gt;
Below is an image of a box with a size of 5 5 10.&lt;br /&gt;
&lt;br /&gt;
[[Image:box.jpg]]&lt;br /&gt;
&lt;br /&gt;
===The Cone===&lt;br /&gt;
Most objects have similar parameters as the basic box.  For instance, the code for a cone may look something like this:&lt;br /&gt;
&lt;br /&gt;
 cone&lt;br /&gt;
   name cone1&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 20&lt;br /&gt;
   divisions 128&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Divisions basically decide how smooth the cone is.  The higher the divisions the more smooth the cone is.  A division of 4 would look like a pyramid.  Another parameter that can be added to the cone object is angle. If you say angle 180, that would make 1/2 of a cone, 90 would make 1/4 of a cone, and so on. &lt;br /&gt;
&lt;br /&gt;
===The Arc===&lt;br /&gt;
&lt;br /&gt;
An arc is basically a cylinder. However it doesn’t have to be a perfect cylinder depending on certain options you select. For an arc the only required options are divisions, position and size. Just like the cone divisions have the same effect, position and size are all the same. Once again you can have an oval shaped cylinder type thing. Now, you WILL find more options to an arc than to a cone, for example the ratio option. The ratio options let you basically put a hole in the cylinder. So if you have the option: ratio 1 you would have a full cylinder. If you say for example ratio .3 or any number less than 1 you will get a hole in the cylinder. The bigger the number, the smaller the hole. Angle allows you to do a semicircle. Rotation, once again, isn&#039;t really needed, unless you need a semicircle that has a certain specific orientation in your map. all the options like spin and shear are the same for this object too! phydrv and matref I’ll show later. Let’s move to the sphere:&lt;br /&gt;
&lt;br /&gt;
===The Sphere===&lt;br /&gt;
&lt;br /&gt;
The only options required to make a sphere are position, size, and divisions. &lt;br /&gt;
All these options do the same thing as they did in the objects above.  You may also have an oval like sphere.  You make an oval like sphere simply by making the x and y&#039;s different sizes just like in the cone and arc.  The radius option is just a substitute for size.  You can write size 10 10 10 or radius 10.  Both do the same thing. However if you want an oval shaped sphere you have to use size.  Rotation wouldn&#039;t really have an effect and the shear and spin works the same for this object.&lt;br /&gt;
&lt;br /&gt;
==Getting more help==&lt;br /&gt;
*The links at the bottom of the [[:Category:Map Making|Map Making]] page.&lt;br /&gt;
*The original creator of this page is flight, you can email him at dirtbikerdude_91@yahoo.com and he will be happy to answer any questions that he is capable of answering.&lt;br /&gt;
&lt;br /&gt;
==Special Objects==&lt;br /&gt;
There are certain objects that are often coded by hand because it is simpler or it is impossible to do with graphical map creation tools.  &lt;br /&gt;
&lt;br /&gt;
===Materials ===&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_bolt.png &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
Material is letting the computer know that a material is about to be explained to it.  You name it so that way you can reference it with the matref.  The name can be any thing you want as long as it does not have any spaces.  You type in &amp;lt;tt&amp;gt;addtexture&amp;lt;/tt&amp;gt; and you state a texture name.  Now, how do you know what texture names there are to use?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Linux&#039;&#039;&#039;: Running &amp;lt;tt&amp;gt;ls /usr/share/bzflag/*.png&amp;lt;/tt&amp;gt; in a terminal will show the list of pictures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Mac&#039;&#039;&#039;: If you control click (right click) on the bzflag icon, click show package contents, click contents, and click resources, those are the pictures you may use. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Windows&#039;&#039;&#039;: The default path is &amp;lt;tt&amp;gt;C:\Program Files\BZFlag\data\*.png&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What you will find are images that are used in every day games.  The top of a base, the wall of a base. A bullet which is blue_bolt.png (as was used above).  The full path to the texture needs to be used if the texture is not found in that directory.  Any customized textures should be uploaded to the [http://images.bzflag.org/submitimages/ BZFlag Image Submission System] before the map is hosted publicly.&lt;br /&gt;
&lt;br /&gt;
Servers running bzfs 2.0.8 and earlier will require &amp;quot;meshbox&amp;quot; and &amp;quot;meshpyr&amp;quot; in order to apply textures and physics to these objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instead of creating a new texture, many interesting and creative things can be done with the &amp;quot;diffuse&amp;quot; parameter in the material object.  You can add the diffuse command and it will look like this diffuse 1 1 1 1.  The first number is the amount of red that will be in the meshobject.  The second number is the amount of green, the third is the amount of blue.  So you can mix those colors to make more colors.  You may use a range from 0-1.  For example diffuse .3 .5 .26 1.  The fourth number determines the opacity or transparency (the see-throughability).  0 is invisible, .5 is half invisible, and 1 is normal. &lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   diffuse .5 .25 .1 .6 &lt;br /&gt;
   addtexture mesh.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Physics===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Physics make your tank behave in different ways.  If you have ever played laser mania by Louman than you know on the outskirts of the map there is something you can jump on and you go really fast, that is a physics. Physics and materials work the same way.  Physics is to material as phydrv is to matref.  You must specify a physics then on a meshbox, meshpyr cone arc sphere or whatever, you can reference that physics by using the phydrv command just like you would use the matref command for materials.  There are different physics commands.  Linear, angular, slide and death.  In the Louman map I mentioned above is a linear physics.  Linear physics makes your tank move in a line.  The numbers after a linear command are just like position x y z.  Example:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   linear 50 0 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive x direction you may use -50 and it will make it go the other way.&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy2 &lt;br /&gt;
   linear 0 50 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive y direction &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy3 &lt;br /&gt;
   linear 0 0 50 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank jump at a speed of 50 &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy4 &lt;br /&gt;
   slide 5 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank basically feel like it&#039;s on ice.  Whichever way the tank is moving it will keep moving that way. &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy5 &lt;br /&gt;
   death haha! you died &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make the tank die when it touches the object that refers to this and the message haha! you died will be displayed to that person. &lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   death I like you better dead! &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   phydrv phy1                       # Or what ever you named the physics.&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This works just like the material &lt;br /&gt;
&lt;br /&gt;
The thing about physics and materials is that they have to be written before they are referenced. &lt;br /&gt;
&lt;br /&gt;
This &#039;&#039;&#039;won&#039;t&#039;&#039;&#039; work &lt;br /&gt;
&lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_team.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
A group is a defined group of objects that can be called to gether as one.&lt;br /&gt;
&lt;br /&gt;
For example if a map editor is makeing a forest, and each tree contains 2 objects, the editor doesn&#039;t want to type up the code for each tree over and over again. What he can do is tell BZFS that these objects = tree. and then whenever he wants to make a tree he just types tree.&lt;br /&gt;
&lt;br /&gt;
Example-----------&lt;br /&gt;
&lt;br /&gt;
first define a group of obects as a tree &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  define tree&lt;br /&gt;
  &lt;br /&gt;
  box&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  size 2 2 4&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  pyramid&lt;br /&gt;
  position 0 0 3&lt;br /&gt;
  size 5 5 10&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  enddef&lt;br /&gt;
&lt;br /&gt;
then to add a tree simpily type&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  group tree&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
==Transformations==&lt;br /&gt;
[[Category:Map Making]]&lt;br /&gt;
Transformations are simple ways of modifying objects so that maps have some variety. These can get complicated so I will only give you a sample of what they can do. There are 3 transformations shift, spin, and shear. You can find a different also helpful page here [[3d Transformations]]&lt;br /&gt;
&lt;br /&gt;
The one is will tell you about is &#039;&#039;&#039;Shift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shift&#039;&#039;&#039; moves an object by the amount of units that you specify from its present position.&lt;br /&gt;
the object..&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at place 10 10 0&lt;br /&gt;
&lt;br /&gt;
while the object..&lt;br /&gt;
&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  shift 0 0 10&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at position 10 10 10.&lt;br /&gt;
&lt;br /&gt;
====Spin====&lt;br /&gt;
Spinning an object is just like rotating an object but can be on a different axis. (y and x)&lt;br /&gt;
When you rotate it is around the center of the object.&lt;br /&gt;
Remember: Only spin-able objects can be spun.&lt;br /&gt;
Here is what the code looks like:&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
 end&lt;br /&gt;
The meshbox will now be tilted 45 degrees on its y axis.&lt;br /&gt;
Spin code has four numbers, the first one is how many degrees to spin.&lt;br /&gt;
The last three are for which axis&#039;s to spin, by placing a value of more than 0.&lt;br /&gt;
Spin can be a bit tricky and unintuitive to use.  It is not exactly like rotate, because it is possible to &amp;quot;spin&amp;quot; something so that it ends up &amp;quot;underneath&amp;quot; the BZFlag playing field.&lt;br /&gt;
&lt;br /&gt;
Spin is often best used with shift.  Think of the center of your map as a sort of &amp;quot;construction yard&amp;quot;.  You position objects at location 0 0 0, then spin and shift them to the location you want.&lt;br /&gt;
&lt;br /&gt;
Here is what you get if you use the above code in a map:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0012.png]]&lt;br /&gt;
&lt;br /&gt;
Looks fairly normal in this screenshot, doesn&#039;t it.  But if you drive around, the box will behave oddly, and appear to &amp;quot;float&amp;quot; in front of your HUD.  What has happened is that the box hasn&#039;t rotated around it&#039;s own axis, but around the world axis for the whole BZFlag arena!  But if we add some code to shift the box up above the z plane, it will look normal in-game.&lt;br /&gt;
&lt;br /&gt;
So if we make a simple change to the above code and add a shift statement and shift the box up in z (this is not the z axis of the box, but the world axis of our game arena):&lt;br /&gt;
&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
   shift 0 0 10&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
...we get this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0013.png]]&lt;br /&gt;
&lt;br /&gt;
... and the box doesn&#039;t do the weird &amp;quot;float&amp;quot; thing any more.  This &amp;quot;construction yard&amp;quot; technique is really handy, you just &amp;quot;build&amp;quot; your stuff smack in the middle of your map, then spin and shift it to where you want it (in the example above, it could have been shifted in x and y as well.  Just don&#039;t shift and then spin, or you will be back to having things &amp;quot;float&amp;quot; again.&lt;br /&gt;
&lt;br /&gt;
With shift and spin you can also work with groups and make a &amp;quot;master&amp;quot; group in the middle of your map, then shift and spin multiple copies to other locations on your map.&lt;/div&gt;</summary>
		<author><name>ClayOgre</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7350</id>
		<title>Map making by hand</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7350"/>
		<updated>2010-11-06T01:13:14Z</updated>

		<summary type="html">&lt;p&gt;ClayOgre: /* Spin */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoDoc|Major re-organization, transform away from &amp;quot;chat&amp;quot; style. Need to reference pages elsewhere on the wiki in place of much of the content which appears to be building up here.  Create them if necessary, or see the list [[Special:Allpages|here]].}}&lt;br /&gt;
Although there are a number of GUI options for creating maps such as BZ-Edit, 3D modelers, many map-makers use a basic text-editor.  There are many times when it is necessary to make small changes to a map, such as including objects that are unavailable in GUI map-maker, but there are also some who enjoy the challenge of creating a map entirely from scratch with a text-editor.&lt;br /&gt;
&lt;br /&gt;
==Text Editors==&lt;br /&gt;
Most text-editors designed for coding/programming are more than sufficient for editing bzw files.  Although word-processing programs such as Microsoft Word can be used, there are many cheaper (free) and more efficient programs designed specifically for coding. If you are interested in syntax highlighting, look at the [http://my.bzflag.org/bb/viewtopic.php?f=24&amp;amp;t=16037&amp;amp;p=148953 forum topic].&lt;br /&gt;
===Windows===&lt;br /&gt;
*Notepad&lt;br /&gt;
*PSPad&lt;br /&gt;
*NoteTab&lt;br /&gt;
*[http://notepad-plus-plus.org/ Notepad ++] - a tabbed editor based on Scite.&lt;br /&gt;
&lt;br /&gt;
===Mac===&lt;br /&gt;
*TextWrangler&lt;br /&gt;
*TextEdit&lt;br /&gt;
===Linux===&lt;br /&gt;
*Command-line editors such as nano, emacs, pico, vim, or ed.&lt;br /&gt;
*GEdit&lt;br /&gt;
*Kate&lt;br /&gt;
*Scite&lt;br /&gt;
&lt;br /&gt;
==Editing existing maps==&lt;br /&gt;
Beginning mapmakers should spend some time studying and making small changes in existing maps to see how things work.  In the client, maps can be saved for editing by joining the desired server and choosing: Options&amp;gt;Save World.  Maps can also be saved by issuing the /saveworld command.  The map should be a simple map when getting started.  One may find it easier to create a file in BZEdit and open the resulting file in the text-editor.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
If you have created a box in BZEdit you may see:&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
 world &lt;br /&gt;
   size 400 &lt;br /&gt;
 end &lt;br /&gt;
 options &lt;br /&gt;
   +r &lt;br /&gt;
   -j &lt;br /&gt;
   -set _tankSpeed 25 &lt;br /&gt;
   -ms 5 &lt;br /&gt;
   -mp 0,2,0,2,0,2 &lt;br /&gt;
 end &lt;br /&gt;
 box &lt;br /&gt;
   name box1 &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
 end &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===What that means===&lt;br /&gt;
&amp;quot;There are set variables that define various things such as how fast your tank is, how fast the bullets are, or if it&#039;s raining or foggy.  Put those in the options setting with &amp;quot;-set(space) &amp;quot; in front of it. You can also make those changes as an admin by using /set _variable (notice there is a space between the set and the _).  A full list of these settings can be found on the [[Server Variables]] page.  Other options, such as how many times a flag can be grabbed before it resets or if flags can land on buildings are explained [http://my.bzflag.org/bb/files/antigrav4teamconf_114.txt in this forum post]&lt;br /&gt;
Optionally, the variables can be placed in a separate configuration file and referenced when the server is started.&amp;quot;&lt;br /&gt;
&#039;&#039;&#039;old&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, it says:&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
(Note: the # sign is used for comments.)&lt;br /&gt;
&lt;br /&gt;
This is the text added by the application initially, kind of like advertising. This will be the first thing anyone sees when they look at the map.&lt;br /&gt;
&lt;br /&gt;
The next thing is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
world &lt;br /&gt;
  size 400 # Sets the world size to 400 (800 x 800 total)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is rather self-explanatory. It&#039;s the &amp;lt;size&amp;gt; of the &amp;lt;world&amp;gt; (The BZFlag arena).&lt;br /&gt;
&lt;br /&gt;
Next is an &amp;lt;options&amp;gt; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options &lt;br /&gt;
  +r   # Enable Ricochet&lt;br /&gt;
  -j   # Enable Jumping&lt;br /&gt;
  -set _tankSpeed 25  # Sets the tank speed to 25 bzunits/second&lt;br /&gt;
  -ms 5  # Sets the maximum shots (per tank) to 5&lt;br /&gt;
  -mp 0,2,0,2,0,2  # Maximum of 2 Red Players, 2 Blue Players, and 2 Observers&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This allows you to define in the map file certain options that are also available from the command line when you start the bzfs server, or in the optional server config file.  Options embedded into a world file will override those input on the command line or in a config file.&lt;br /&gt;
&lt;br /&gt;
The commands listed here are:&lt;br /&gt;
Ricochet, Jumping, Tank speed, Max Shots, and Max Players.&lt;br /&gt;
These are rather self explanatory, except for Max Players. Each number represents how many of each of the following team players are allowed in the game (in the order listed): Rogue, Red, Green, Blue, Purple, Observer. Each number defines the max number of players per category.&lt;br /&gt;
&lt;br /&gt;
For more, see [[Options_(object)|Options Object]].&lt;br /&gt;
&lt;br /&gt;
We now come to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
box &lt;br /&gt;
  name box1      # Generally unused&lt;br /&gt;
  position 0 0 0 # X Y Z Position&lt;br /&gt;
  size 10 10 10  # X Y Z Size (bzunits from the position of the box)&lt;br /&gt;
  rotation 0     # Rotation (in degrees)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is a &amp;lt;box&amp;gt; with a &amp;lt;name&amp;gt; of &amp;lt;box1&amp;gt;.&lt;br /&gt;
The &amp;lt;position&amp;gt; is 0,0,0 in R3[http://en.wikipedia.org/wiki/R3].&lt;br /&gt;
The rest is pretty self explanatory.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; EVERY STATEMENT MUST HAVE AN END.&lt;br /&gt;
&lt;br /&gt;
===Basic Definitions===&lt;br /&gt;
;Objects&lt;br /&gt;
:Objects are the basic building blocks of the bzw file.  Objects begin with a line declaring the object, some fields describing that object, and a line that closes the object (usually with &amp;quot;end&amp;quot;).  Each of these sections of the object is important.&lt;br /&gt;
;Comments&lt;br /&gt;
:BZFS ignores anything in a line following the #; the line has been &amp;quot;commented out.&amp;quot;  It is highly recommended that comments be used often, both for the mapmaker and for others that may see the map.&lt;br /&gt;
;3D Cartesian Coordinate System&lt;br /&gt;
:In most objects, you will see three numbers after position and size. These numbers are coordinates on a graph. The first number is the x coordinate (left and right) the middle number is the y coordinate (forward and backward) and the third number is the z coordinate (height and depth). Another way of thinking of it is: x = width, y = depth, z = height. (Those accustomed to the Y axis determining height will have to slightly adjust their thinking.) &lt;br /&gt;
&lt;br /&gt;
==Sample Objects==&lt;br /&gt;
===The Box===&lt;br /&gt;
Perhaps the simplest object is the box.  There is actually nothing special you can do to it (but in versions of BZFlag from 2.0.8 up, you can do a lot more to it).  Here is an example of a box:&lt;br /&gt;
&lt;br /&gt;
 box&lt;br /&gt;
   name box1             # Optional, but good to include&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   rotation 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the first line, notice the word &amp;quot;box&amp;quot;.  It simply says the next object is a box.  The next line is the name of the object.  It is defined with the syntax &amp;quot;&amp;lt;tt&amp;gt;name &#039;&#039;objectName&#039;&#039;&amp;lt;/tt&amp;gt;&amp;quot;.  It is not required, but is good to include (if you have a LOT of boxes, how do you know which is which?  Naming them--as well as other objects--helps you keep track).  The third line defines the position of the center of the bottom of the object.  The three arguments of &amp;lt;tt&amp;gt;position&amp;lt;/tt&amp;gt; are the x, y, and z coordinates of the box, respectively.  The x and y coordinates can be positive or negative, but the z coordinate should just be positive or zero.  On the fourth line, the size of the box is defined.  The arguments of &amp;lt;tt&amp;gt;size&amp;lt;/tt&amp;gt; are the x, y, and z sizes of the object, respectively.  The x and y arguments make the box that wide on both sides of it&#039;s position.  However, the z argument makes the object exactly the number of units tall as defined.  In other words, the box shown above, with a size of &#039;10 10 10&#039; is actually 20 units by 20 units by 10 units high, so if you want a box that is a perfect cube, you would need to make the height, or Z dimension, &#039;20&#039;. The next line just says how much the object is rotated.  This number is the number of degrees of rotation, and can be negative or positive.  The last line just tells BZFlag the object is done, and a new one can be defined.  Be sure to &#039;&#039;&#039;always&#039;&#039;&#039; use this.&lt;br /&gt;
&lt;br /&gt;
Below is an image of a box with a size of 5 5 10.&lt;br /&gt;
&lt;br /&gt;
[[Image:box.jpg]]&lt;br /&gt;
&lt;br /&gt;
===The Cone===&lt;br /&gt;
Most objects have similar parameters as the basic box.  For instance, the code for a cone may look something like this:&lt;br /&gt;
&lt;br /&gt;
 cone&lt;br /&gt;
   name cone1&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 20&lt;br /&gt;
   divisions 128&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Divisions basically decide how smooth the cone is.  The higher the divisions the more smooth the cone is.  A division of 4 would look like a pyramid.  Another parameter that can be added to the cone object is angle. If you say angle 180, that would make 1/2 of a cone, 90 would make 1/4 of a cone, and so on. &lt;br /&gt;
&lt;br /&gt;
===The Arc===&lt;br /&gt;
&lt;br /&gt;
An arc is basically a cylinder. However it doesn’t have to be a perfect cylinder depending on certain options you select. For an arc the only required options are divisions, position and size. Just like the cone divisions have the same effect, position and size are all the same. Once again you can have an oval shaped cylinder type thing. Now, you WILL find more options to an arc than to a cone, for example the ratio option. The ratio options let you basically put a hole in the cylinder. So if you have the option: ratio 1 you would have a full cylinder. If you say for example ratio .3 or any number less than 1 you will get a hole in the cylinder. The bigger the number, the smaller the hole. Angle allows you to do a semicircle. Rotation, once again, isn&#039;t really needed, unless you need a semicircle that has a certain specific orientation in your map. all the options like spin and shear are the same for this object too! phydrv and matref I’ll show later. Let’s move to the sphere:&lt;br /&gt;
&lt;br /&gt;
===The Sphere===&lt;br /&gt;
&lt;br /&gt;
The only options required to make a sphere are position, size, and divisions. &lt;br /&gt;
All these options do the same thing as they did in the objects above.  You may also have an oval like sphere.  You make an oval like sphere simply by making the x and y&#039;s different sizes just like in the cone and arc.  The radius option is just a substitute for size.  You can write size 10 10 10 or radius 10.  Both do the same thing. However if you want an oval shaped sphere you have to use size.  Rotation wouldn&#039;t really have an effect and the shear and spin works the same for this object.&lt;br /&gt;
&lt;br /&gt;
==Getting more help==&lt;br /&gt;
*The links at the bottom of the [[:Category:Map Making|Map Making]] page.&lt;br /&gt;
*The original creator of this page is flight, you can email him at dirtbikerdude_91@yahoo.com and he will be happy to answer any questions that he is capable of answering.&lt;br /&gt;
&lt;br /&gt;
==Special Objects==&lt;br /&gt;
There are certain objects that are often coded by hand because it is simpler or it is impossible to do with graphical map creation tools.  &lt;br /&gt;
&lt;br /&gt;
===Materials ===&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_bolt.png &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
Material is letting the computer know that a material is about to be explained to it.  You name it so that way you can reference it with the matref.  The name can be any thing you want as long as it does not have any spaces.  You type in &amp;lt;tt&amp;gt;addtexture&amp;lt;/tt&amp;gt; and you state a texture name.  Now, how do you know what texture names there are to use?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Linux&#039;&#039;&#039;: Running &amp;lt;tt&amp;gt;ls /usr/share/bzflag/*.png&amp;lt;/tt&amp;gt; in a terminal will show the list of pictures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Mac&#039;&#039;&#039;: If you control click (right click) on the bzflag icon, click show package contents, click contents, and click resources, those are the pictures you may use. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Windows&#039;&#039;&#039;: The default path is &amp;lt;tt&amp;gt;C:\Program Files\BZFlag\data\*.png&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What you will find are images that are used in every day games.  The top of a base, the wall of a base. A bullet which is blue_bolt.png (as was used above).  The full path to the texture needs to be used if the texture is not found in that directory.  Any customized textures should be uploaded to the [http://images.bzflag.org/submitimages/ BZFlag Image Submission System] before the map is hosted publicly.&lt;br /&gt;
&lt;br /&gt;
Servers running bzfs 2.0.8 and earlier will require &amp;quot;meshbox&amp;quot; and &amp;quot;meshpyr&amp;quot; in order to apply textures and physics to these objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instead of creating a new texture, many interesting and creative things can be done with the &amp;quot;diffuse&amp;quot; parameter in the material object.  You can add the diffuse command and it will look like this diffuse 1 1 1 1.  The first number is the amount of red that will be in the meshobject.  The second number is the amount of green, the third is the amount of blue.  So you can mix those colors to make more colors.  You may use a range from 0-1.  For example diffuse .3 .5 .26 1.  The fourth number determines the opacity or transparency (the see-throughability).  0 is invisible, .5 is half invisible, and 1 is normal. &lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   diffuse .5 .25 .1 .6 &lt;br /&gt;
   addtexture mesh.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Physics===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Physics make your tank behave in different ways.  If you have ever played laser mania by Louman than you know on the outskirts of the map there is something you can jump on and you go really fast, that is a physics. Physics and materials work the same way.  Physics is to material as phydrv is to matref.  You must specify a physics then on a meshbox, meshpyr cone arc sphere or whatever, you can reference that physics by using the phydrv command just like you would use the matref command for materials.  There are different physics commands.  Linear, angular, slide and death.  In the Louman map I mentioned above is a linear physics.  Linear physics makes your tank move in a line.  The numbers after a linear command are just like position x y z.  Example:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   linear 50 0 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive x direction you may use -50 and it will make it go the other way.&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy2 &lt;br /&gt;
   linear 0 50 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive y direction &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy3 &lt;br /&gt;
   linear 0 0 50 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank jump at a speed of 50 &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy4 &lt;br /&gt;
   slide 5 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank basically feel like it&#039;s on ice.  Whichever way the tank is moving it will keep moving that way. &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy5 &lt;br /&gt;
   death haha! you died &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make the tank die when it touches the object that refers to this and the message haha! you died will be displayed to that person. &lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   death I like you better dead! &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   phydrv phy1                       # Or what ever you named the physics.&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This works just like the material &lt;br /&gt;
&lt;br /&gt;
The thing about physics and materials is that they have to be written before they are referenced. &lt;br /&gt;
&lt;br /&gt;
This &#039;&#039;&#039;won&#039;t&#039;&#039;&#039; work &lt;br /&gt;
&lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_team.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
A group is a defined group of objects that can be called to gether as one.&lt;br /&gt;
&lt;br /&gt;
For example if a map editor is makeing a forest, and each tree contains 2 objects, the editor doesn&#039;t want to type up the code for each tree over and over again. What he can do is tell BZFS that these objects = tree. and then whenever he wants to make a tree he just types tree.&lt;br /&gt;
&lt;br /&gt;
Example-----------&lt;br /&gt;
&lt;br /&gt;
first define a group of obects as a tree &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  define tree&lt;br /&gt;
  &lt;br /&gt;
  box&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  size 2 2 4&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  pyramid&lt;br /&gt;
  position 0 0 3&lt;br /&gt;
  size 5 5 10&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  enddef&lt;br /&gt;
&lt;br /&gt;
then to add a tree simpily type&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  group tree&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
==Transformations==&lt;br /&gt;
[[Category:Map Making]]&lt;br /&gt;
Transformations are simple ways of modifying objects so that maps have some variety. These can get complicated so I will only give you a sample of what they can do. There are 3 transformations shift, spin, and shear. You can find a different also helpful page here [[3d Transformations]]&lt;br /&gt;
&lt;br /&gt;
The one is will tell you about is &#039;&#039;&#039;Shift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shift&#039;&#039;&#039; moves an object by the amount of units that you specify from its present position.&lt;br /&gt;
the object..&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at place 10 10 0&lt;br /&gt;
&lt;br /&gt;
while the object..&lt;br /&gt;
&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  shift 0 0 10&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at position 10 10 10.&lt;br /&gt;
&lt;br /&gt;
====Spin====&lt;br /&gt;
Spinning an object is just like rotating an object but can be on a different axis. (y and x)&lt;br /&gt;
When you rotate it is around the center of the object.&lt;br /&gt;
Remember: Only spin-able objects can be spun.&lt;br /&gt;
Here is what the code looks like:&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
 end&lt;br /&gt;
The meshbox will now be tilted 45 degrees on its y axis.&lt;br /&gt;
Spin code has four numbers, the first one is how many degrees to spin.&lt;br /&gt;
The last three are for which axis&#039;s to spin, by placing a value of more than 0.&lt;br /&gt;
Spin can be a bit tricky and unintuitive to use.  It is not exactly like rotate, because it is possible to &amp;quot;spin&amp;quot; something so that it ends up &amp;quot;underneath&amp;quot; the BZFlag playing field.&lt;br /&gt;
&lt;br /&gt;
Spin is often best used with shift.  Think of the center of your map as a sort of &amp;quot;construction yard&amp;quot;  You position objects at location 0 0 0, then spin and shift them to the location you want.&lt;br /&gt;
&lt;br /&gt;
Here is what you get if you use the above code in a map:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0012.png]]&lt;br /&gt;
&lt;br /&gt;
Looks fairly normal in this screenshot, doesn&#039;t it.  But if you drive around, the box will behave oddly, and appear to &amp;quot;float&amp;quot; in front of your HUD.  What has happened is that the box hasn&#039;t rotated around it&#039;s own axis, but around the world axis for the whole BZFlag arena!  But if we add some code to shift the box up above the z plane, it will look normal in-game.&lt;br /&gt;
&lt;br /&gt;
So if we make a simple change to the above code and add a shift statement and shift the box up in z (this is not the z axis of the box, but the world axis of our game arena):&lt;br /&gt;
&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
   shift 0 0 10&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
...we get this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0013.png]]&lt;br /&gt;
&lt;br /&gt;
... and the box doesn&#039;t do the weird &amp;quot;float&amp;quot; thing any more.  This &amp;quot;construction yard&amp;quot; technique is really handy, you just &amp;quot;build&amp;quot; your stuff smack in the middle of your map, then spin and shift it to where you want it (in the example above, it could have been shifted in x and y as well.  Just don&#039;t shift and then spin, or you will be back to having things &amp;quot;float&amp;quot; again.&lt;br /&gt;
&lt;br /&gt;
With shift and spin you can also work with groups and make a &amp;quot;master&amp;quot; group in the middle of your map, then shift and spin multiple copies to other locations on your map.&lt;/div&gt;</summary>
		<author><name>ClayOgre</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7349</id>
		<title>Map making by hand</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7349"/>
		<updated>2010-11-06T01:07:47Z</updated>

		<summary type="html">&lt;p&gt;ClayOgre: /* Spin */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoDoc|Major re-organization, transform away from &amp;quot;chat&amp;quot; style. Need to reference pages elsewhere on the wiki in place of much of the content which appears to be building up here.  Create them if necessary, or see the list [[Special:Allpages|here]].}}&lt;br /&gt;
Although there are a number of GUI options for creating maps such as BZ-Edit, 3D modelers, many map-makers use a basic text-editor.  There are many times when it is necessary to make small changes to a map, such as including objects that are unavailable in GUI map-maker, but there are also some who enjoy the challenge of creating a map entirely from scratch with a text-editor.&lt;br /&gt;
&lt;br /&gt;
==Text Editors==&lt;br /&gt;
Most text-editors designed for coding/programming are more than sufficient for editing bzw files.  Although word-processing programs such as Microsoft Word can be used, there are many cheaper (free) and more efficient programs designed specifically for coding. If you are interested in syntax highlighting, look at the [http://my.bzflag.org/bb/viewtopic.php?f=24&amp;amp;t=16037&amp;amp;p=148953 forum topic].&lt;br /&gt;
===Windows===&lt;br /&gt;
*Notepad&lt;br /&gt;
*PSPad&lt;br /&gt;
*NoteTab&lt;br /&gt;
*[http://notepad-plus-plus.org/ Notepad ++] - a tabbed editor based on Scite.&lt;br /&gt;
&lt;br /&gt;
===Mac===&lt;br /&gt;
*TextWrangler&lt;br /&gt;
*TextEdit&lt;br /&gt;
===Linux===&lt;br /&gt;
*Command-line editors such as nano, emacs, pico, vim, or ed.&lt;br /&gt;
*GEdit&lt;br /&gt;
*Kate&lt;br /&gt;
*Scite&lt;br /&gt;
&lt;br /&gt;
==Editing existing maps==&lt;br /&gt;
Beginning mapmakers should spend some time studying and making small changes in existing maps to see how things work.  In the client, maps can be saved for editing by joining the desired server and choosing: Options&amp;gt;Save World.  Maps can also be saved by issuing the /saveworld command.  The map should be a simple map when getting started.  One may find it easier to create a file in BZEdit and open the resulting file in the text-editor.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
If you have created a box in BZEdit you may see:&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
 world &lt;br /&gt;
   size 400 &lt;br /&gt;
 end &lt;br /&gt;
 options &lt;br /&gt;
   +r &lt;br /&gt;
   -j &lt;br /&gt;
   -set _tankSpeed 25 &lt;br /&gt;
   -ms 5 &lt;br /&gt;
   -mp 0,2,0,2,0,2 &lt;br /&gt;
 end &lt;br /&gt;
 box &lt;br /&gt;
   name box1 &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
 end &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===What that means===&lt;br /&gt;
&amp;quot;There are set variables that define various things such as how fast your tank is, how fast the bullets are, or if it&#039;s raining or foggy.  Put those in the options setting with &amp;quot;-set(space) &amp;quot; in front of it. You can also make those changes as an admin by using /set _variable (notice there is a space between the set and the _).  A full list of these settings can be found on the [[Server Variables]] page.  Other options, such as how many times a flag can be grabbed before it resets or if flags can land on buildings are explained [http://my.bzflag.org/bb/files/antigrav4teamconf_114.txt in this forum post]&lt;br /&gt;
Optionally, the variables can be placed in a separate configuration file and referenced when the server is started.&amp;quot;&lt;br /&gt;
&#039;&#039;&#039;old&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, it says:&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
(Note: the # sign is used for comments.)&lt;br /&gt;
&lt;br /&gt;
This is the text added by the application initially, kind of like advertising. This will be the first thing anyone sees when they look at the map.&lt;br /&gt;
&lt;br /&gt;
The next thing is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
world &lt;br /&gt;
  size 400 # Sets the world size to 400 (800 x 800 total)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is rather self-explanatory. It&#039;s the &amp;lt;size&amp;gt; of the &amp;lt;world&amp;gt; (The BZFlag arena).&lt;br /&gt;
&lt;br /&gt;
Next is an &amp;lt;options&amp;gt; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options &lt;br /&gt;
  +r   # Enable Ricochet&lt;br /&gt;
  -j   # Enable Jumping&lt;br /&gt;
  -set _tankSpeed 25  # Sets the tank speed to 25 bzunits/second&lt;br /&gt;
  -ms 5  # Sets the maximum shots (per tank) to 5&lt;br /&gt;
  -mp 0,2,0,2,0,2  # Maximum of 2 Red Players, 2 Blue Players, and 2 Observers&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This allows you to define in the map file certain options that are also available from the command line when you start the bzfs server, or in the optional server config file.  Options embedded into a world file will override those input on the command line or in a config file.&lt;br /&gt;
&lt;br /&gt;
The commands listed here are:&lt;br /&gt;
Ricochet, Jumping, Tank speed, Max Shots, and Max Players.&lt;br /&gt;
These are rather self explanatory, except for Max Players. Each number represents how many of each of the following team players are allowed in the game (in the order listed): Rogue, Red, Green, Blue, Purple, Observer. Each number defines the max number of players per category.&lt;br /&gt;
&lt;br /&gt;
For more, see [[Options_(object)|Options Object]].&lt;br /&gt;
&lt;br /&gt;
We now come to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
box &lt;br /&gt;
  name box1      # Generally unused&lt;br /&gt;
  position 0 0 0 # X Y Z Position&lt;br /&gt;
  size 10 10 10  # X Y Z Size (bzunits from the position of the box)&lt;br /&gt;
  rotation 0     # Rotation (in degrees)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is a &amp;lt;box&amp;gt; with a &amp;lt;name&amp;gt; of &amp;lt;box1&amp;gt;.&lt;br /&gt;
The &amp;lt;position&amp;gt; is 0,0,0 in R3[http://en.wikipedia.org/wiki/R3].&lt;br /&gt;
The rest is pretty self explanatory.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; EVERY STATEMENT MUST HAVE AN END.&lt;br /&gt;
&lt;br /&gt;
===Basic Definitions===&lt;br /&gt;
;Objects&lt;br /&gt;
:Objects are the basic building blocks of the bzw file.  Objects begin with a line declaring the object, some fields describing that object, and a line that closes the object (usually with &amp;quot;end&amp;quot;).  Each of these sections of the object is important.&lt;br /&gt;
;Comments&lt;br /&gt;
:BZFS ignores anything in a line following the #; the line has been &amp;quot;commented out.&amp;quot;  It is highly recommended that comments be used often, both for the mapmaker and for others that may see the map.&lt;br /&gt;
;3D Cartesian Coordinate System&lt;br /&gt;
:In most objects, you will see three numbers after position and size. These numbers are coordinates on a graph. The first number is the x coordinate (left and right) the middle number is the y coordinate (forward and backward) and the third number is the z coordinate (height and depth). Another way of thinking of it is: x = width, y = depth, z = height. (Those accustomed to the Y axis determining height will have to slightly adjust their thinking.) &lt;br /&gt;
&lt;br /&gt;
==Sample Objects==&lt;br /&gt;
===The Box===&lt;br /&gt;
Perhaps the simplest object is the box.  There is actually nothing special you can do to it (but in versions of BZFlag from 2.0.8 up, you can do a lot more to it).  Here is an example of a box:&lt;br /&gt;
&lt;br /&gt;
 box&lt;br /&gt;
   name box1             # Optional, but good to include&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   rotation 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the first line, notice the word &amp;quot;box&amp;quot;.  It simply says the next object is a box.  The next line is the name of the object.  It is defined with the syntax &amp;quot;&amp;lt;tt&amp;gt;name &#039;&#039;objectName&#039;&#039;&amp;lt;/tt&amp;gt;&amp;quot;.  It is not required, but is good to include (if you have a LOT of boxes, how do you know which is which?  Naming them--as well as other objects--helps you keep track).  The third line defines the position of the center of the bottom of the object.  The three arguments of &amp;lt;tt&amp;gt;position&amp;lt;/tt&amp;gt; are the x, y, and z coordinates of the box, respectively.  The x and y coordinates can be positive or negative, but the z coordinate should just be positive or zero.  On the fourth line, the size of the box is defined.  The arguments of &amp;lt;tt&amp;gt;size&amp;lt;/tt&amp;gt; are the x, y, and z sizes of the object, respectively.  The x and y arguments make the box that wide on both sides of it&#039;s position.  However, the z argument makes the object exactly the number of units tall as defined.  In other words, the box shown above, with a size of &#039;10 10 10&#039; is actually 20 units by 20 units by 10 units high, so if you want a box that is a perfect cube, you would need to make the height, or Z dimension, &#039;20&#039;. The next line just says how much the object is rotated.  This number is the number of degrees of rotation, and can be negative or positive.  The last line just tells BZFlag the object is done, and a new one can be defined.  Be sure to &#039;&#039;&#039;always&#039;&#039;&#039; use this.&lt;br /&gt;
&lt;br /&gt;
Below is an image of a box with a size of 5 5 10.&lt;br /&gt;
&lt;br /&gt;
[[Image:box.jpg]]&lt;br /&gt;
&lt;br /&gt;
===The Cone===&lt;br /&gt;
Most objects have similar parameters as the basic box.  For instance, the code for a cone may look something like this:&lt;br /&gt;
&lt;br /&gt;
 cone&lt;br /&gt;
   name cone1&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 20&lt;br /&gt;
   divisions 128&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Divisions basically decide how smooth the cone is.  The higher the divisions the more smooth the cone is.  A division of 4 would look like a pyramid.  Another parameter that can be added to the cone object is angle. If you say angle 180, that would make 1/2 of a cone, 90 would make 1/4 of a cone, and so on. &lt;br /&gt;
&lt;br /&gt;
===The Arc===&lt;br /&gt;
&lt;br /&gt;
An arc is basically a cylinder. However it doesn’t have to be a perfect cylinder depending on certain options you select. For an arc the only required options are divisions, position and size. Just like the cone divisions have the same effect, position and size are all the same. Once again you can have an oval shaped cylinder type thing. Now, you WILL find more options to an arc than to a cone, for example the ratio option. The ratio options let you basically put a hole in the cylinder. So if you have the option: ratio 1 you would have a full cylinder. If you say for example ratio .3 or any number less than 1 you will get a hole in the cylinder. The bigger the number, the smaller the hole. Angle allows you to do a semicircle. Rotation, once again, isn&#039;t really needed, unless you need a semicircle that has a certain specific orientation in your map. all the options like spin and shear are the same for this object too! phydrv and matref I’ll show later. Let’s move to the sphere:&lt;br /&gt;
&lt;br /&gt;
===The Sphere===&lt;br /&gt;
&lt;br /&gt;
The only options required to make a sphere are position, size, and divisions. &lt;br /&gt;
All these options do the same thing as they did in the objects above.  You may also have an oval like sphere.  You make an oval like sphere simply by making the x and y&#039;s different sizes just like in the cone and arc.  The radius option is just a substitute for size.  You can write size 10 10 10 or radius 10.  Both do the same thing. However if you want an oval shaped sphere you have to use size.  Rotation wouldn&#039;t really have an effect and the shear and spin works the same for this object.&lt;br /&gt;
&lt;br /&gt;
==Getting more help==&lt;br /&gt;
*The links at the bottom of the [[:Category:Map Making|Map Making]] page.&lt;br /&gt;
*The original creator of this page is flight, you can email him at dirtbikerdude_91@yahoo.com and he will be happy to answer any questions that he is capable of answering.&lt;br /&gt;
&lt;br /&gt;
==Special Objects==&lt;br /&gt;
There are certain objects that are often coded by hand because it is simpler or it is impossible to do with graphical map creation tools.  &lt;br /&gt;
&lt;br /&gt;
===Materials ===&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_bolt.png &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
Material is letting the computer know that a material is about to be explained to it.  You name it so that way you can reference it with the matref.  The name can be any thing you want as long as it does not have any spaces.  You type in &amp;lt;tt&amp;gt;addtexture&amp;lt;/tt&amp;gt; and you state a texture name.  Now, how do you know what texture names there are to use?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Linux&#039;&#039;&#039;: Running &amp;lt;tt&amp;gt;ls /usr/share/bzflag/*.png&amp;lt;/tt&amp;gt; in a terminal will show the list of pictures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Mac&#039;&#039;&#039;: If you control click (right click) on the bzflag icon, click show package contents, click contents, and click resources, those are the pictures you may use. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Windows&#039;&#039;&#039;: The default path is &amp;lt;tt&amp;gt;C:\Program Files\BZFlag\data\*.png&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What you will find are images that are used in every day games.  The top of a base, the wall of a base. A bullet which is blue_bolt.png (as was used above).  The full path to the texture needs to be used if the texture is not found in that directory.  Any customized textures should be uploaded to the [http://images.bzflag.org/submitimages/ BZFlag Image Submission System] before the map is hosted publicly.&lt;br /&gt;
&lt;br /&gt;
Servers running bzfs 2.0.8 and earlier will require &amp;quot;meshbox&amp;quot; and &amp;quot;meshpyr&amp;quot; in order to apply textures and physics to these objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instead of creating a new texture, many interesting and creative things can be done with the &amp;quot;diffuse&amp;quot; parameter in the material object.  You can add the diffuse command and it will look like this diffuse 1 1 1 1.  The first number is the amount of red that will be in the meshobject.  The second number is the amount of green, the third is the amount of blue.  So you can mix those colors to make more colors.  You may use a range from 0-1.  For example diffuse .3 .5 .26 1.  The fourth number determines the opacity or transparency (the see-throughability).  0 is invisible, .5 is half invisible, and 1 is normal. &lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   diffuse .5 .25 .1 .6 &lt;br /&gt;
   addtexture mesh.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Physics===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Physics make your tank behave in different ways.  If you have ever played laser mania by Louman than you know on the outskirts of the map there is something you can jump on and you go really fast, that is a physics. Physics and materials work the same way.  Physics is to material as phydrv is to matref.  You must specify a physics then on a meshbox, meshpyr cone arc sphere or whatever, you can reference that physics by using the phydrv command just like you would use the matref command for materials.  There are different physics commands.  Linear, angular, slide and death.  In the Louman map I mentioned above is a linear physics.  Linear physics makes your tank move in a line.  The numbers after a linear command are just like position x y z.  Example:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   linear 50 0 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive x direction you may use -50 and it will make it go the other way.&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy2 &lt;br /&gt;
   linear 0 50 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive y direction &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy3 &lt;br /&gt;
   linear 0 0 50 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank jump at a speed of 50 &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy4 &lt;br /&gt;
   slide 5 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank basically feel like it&#039;s on ice.  Whichever way the tank is moving it will keep moving that way. &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy5 &lt;br /&gt;
   death haha! you died &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make the tank die when it touches the object that refers to this and the message haha! you died will be displayed to that person. &lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   death I like you better dead! &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   phydrv phy1                       # Or what ever you named the physics.&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This works just like the material &lt;br /&gt;
&lt;br /&gt;
The thing about physics and materials is that they have to be written before they are referenced. &lt;br /&gt;
&lt;br /&gt;
This &#039;&#039;&#039;won&#039;t&#039;&#039;&#039; work &lt;br /&gt;
&lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_team.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
A group is a defined group of objects that can be called to gether as one.&lt;br /&gt;
&lt;br /&gt;
For example if a map editor is makeing a forest, and each tree contains 2 objects, the editor doesn&#039;t want to type up the code for each tree over and over again. What he can do is tell BZFS that these objects = tree. and then whenever he wants to make a tree he just types tree.&lt;br /&gt;
&lt;br /&gt;
Example-----------&lt;br /&gt;
&lt;br /&gt;
first define a group of obects as a tree &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  define tree&lt;br /&gt;
  &lt;br /&gt;
  box&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  size 2 2 4&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  pyramid&lt;br /&gt;
  position 0 0 3&lt;br /&gt;
  size 5 5 10&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  enddef&lt;br /&gt;
&lt;br /&gt;
then to add a tree simpily type&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  group tree&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
==Transformations==&lt;br /&gt;
[[Category:Map Making]]&lt;br /&gt;
Transformations are simple ways of modifying objects so that maps have some variety. These can get complicated so I will only give you a sample of what they can do. There are 3 transformations shift, spin, and shear. You can find a different also helpful page here [[3d Transformations]]&lt;br /&gt;
&lt;br /&gt;
The one is will tell you about is &#039;&#039;&#039;Shift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shift&#039;&#039;&#039; moves an object by the amount of units that you specify from its present position.&lt;br /&gt;
the object..&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at place 10 10 0&lt;br /&gt;
&lt;br /&gt;
while the object..&lt;br /&gt;
&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  shift 0 0 10&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at position 10 10 10.&lt;br /&gt;
&lt;br /&gt;
====Spin====&lt;br /&gt;
Spinning an object is just like rotating an object but can be on a different axis. (y and x)&lt;br /&gt;
When you rotate it is around the center of the object.&lt;br /&gt;
Remember: Only spin-able objects can be spun.&lt;br /&gt;
Here is what the code looks like:&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
 end&lt;br /&gt;
The meshbox will now be tilted 45 degrees on its y axis.&lt;br /&gt;
Spin code has four numbers, the first one is how many degrees to spin.&lt;br /&gt;
The last three are for which axis&#039;s to spin, by placing a value of more than 0.&lt;br /&gt;
Spin can be a bit tricky and unintuitive to use.  It is not exactly like rotate, because it is possible to &amp;quot;spin&amp;quot; something so that it ends up &amp;quot;underneath&amp;quot; the BZFlag playing field.&lt;br /&gt;
&lt;br /&gt;
Spin is often best used with shift.  Think of the center of your map as a sort of &amp;quot;construction yard&amp;quot;  You position objects at location 0 0 0, then spin and shift them to the location you want.&lt;br /&gt;
&lt;br /&gt;
Here is what you get if you use the above code in a map:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0012.png]]&lt;br /&gt;
&lt;br /&gt;
Looks fairly normal in this screenshot, doesn&#039;t it.  But if you drive around, the box will behave oddly, and appear to &amp;quot;float&amp;quot; in front of your HUD.  What has happened is that the box hasn&#039;t rotated around it&#039;s own axis, but around the world axis for the whole BZFlag arena!  But if we add some code to shift the box up above the z plane, it will look normal in-game.&lt;br /&gt;
&lt;br /&gt;
So if we make a simple change to the above code and add a shift statement and shift the box up in z (this is not the z axis of the box, but the world axis of our game arena):&lt;br /&gt;
&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
   shift 0 0 10&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
...we get this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Bzfi0013.png]]&lt;/div&gt;</summary>
		<author><name>ClayOgre</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=File:Bzfi0013.png&amp;diff=7348</id>
		<title>File:Bzfi0013.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=File:Bzfi0013.png&amp;diff=7348"/>
		<updated>2010-11-06T01:04:25Z</updated>

		<summary type="html">&lt;p&gt;ClayOgre: Box that has been both spun and shifted.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Box that has been both spun and shifted.&lt;/div&gt;</summary>
		<author><name>ClayOgre</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=File:Bzfi0012.png&amp;diff=7347</id>
		<title>File:Bzfi0012.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=File:Bzfi0012.png&amp;diff=7347"/>
		<updated>2010-11-06T00:58:52Z</updated>

		<summary type="html">&lt;p&gt;ClayOgre: Box that has had spin used on it.  However, it has been &amp;quot;spun&amp;quot; below the z plane.  It looks normal in this screenshot, but you will observe so odd effects as you drive around it in the game.  It will appear to &amp;quot;float&amp;quot; in front of you.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Box that has had spin used on it.  However, it has been &amp;quot;spun&amp;quot; below the z plane.  It looks normal in this screenshot, but you will observe so odd effects as you drive around it in the game.  It will appear to &amp;quot;float&amp;quot; in front of you.&lt;/div&gt;</summary>
		<author><name>ClayOgre</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7346</id>
		<title>Map making by hand</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7346"/>
		<updated>2010-11-06T00:44:41Z</updated>

		<summary type="html">&lt;p&gt;ClayOgre: /* The Arc */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoDoc|Major re-organization, transform away from &amp;quot;chat&amp;quot; style. Need to reference pages elsewhere on the wiki in place of much of the content which appears to be building up here.  Create them if necessary, or see the list [[Special:Allpages|here]].}}&lt;br /&gt;
Although there are a number of GUI options for creating maps such as BZ-Edit, 3D modelers, many map-makers use a basic text-editor.  There are many times when it is necessary to make small changes to a map, such as including objects that are unavailable in GUI map-maker, but there are also some who enjoy the challenge of creating a map entirely from scratch with a text-editor.&lt;br /&gt;
&lt;br /&gt;
==Text Editors==&lt;br /&gt;
Most text-editors designed for coding/programming are more than sufficient for editing bzw files.  Although word-processing programs such as Microsoft Word can be used, there are many cheaper (free) and more efficient programs designed specifically for coding. If you are interested in syntax highlighting, look at the [http://my.bzflag.org/bb/viewtopic.php?f=24&amp;amp;t=16037&amp;amp;p=148953 forum topic].&lt;br /&gt;
===Windows===&lt;br /&gt;
*Notepad&lt;br /&gt;
*PSPad&lt;br /&gt;
*NoteTab&lt;br /&gt;
*[http://notepad-plus-plus.org/ Notepad ++] - a tabbed editor based on Scite.&lt;br /&gt;
&lt;br /&gt;
===Mac===&lt;br /&gt;
*TextWrangler&lt;br /&gt;
*TextEdit&lt;br /&gt;
===Linux===&lt;br /&gt;
*Command-line editors such as nano, emacs, pico, vim, or ed.&lt;br /&gt;
*GEdit&lt;br /&gt;
*Kate&lt;br /&gt;
*Scite&lt;br /&gt;
&lt;br /&gt;
==Editing existing maps==&lt;br /&gt;
Beginning mapmakers should spend some time studying and making small changes in existing maps to see how things work.  In the client, maps can be saved for editing by joining the desired server and choosing: Options&amp;gt;Save World.  Maps can also be saved by issuing the /saveworld command.  The map should be a simple map when getting started.  One may find it easier to create a file in BZEdit and open the resulting file in the text-editor.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
If you have created a box in BZEdit you may see:&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
 world &lt;br /&gt;
   size 400 &lt;br /&gt;
 end &lt;br /&gt;
 options &lt;br /&gt;
   +r &lt;br /&gt;
   -j &lt;br /&gt;
   -set _tankSpeed 25 &lt;br /&gt;
   -ms 5 &lt;br /&gt;
   -mp 0,2,0,2,0,2 &lt;br /&gt;
 end &lt;br /&gt;
 box &lt;br /&gt;
   name box1 &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
 end &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===What that means===&lt;br /&gt;
&amp;quot;There are set variables that define various things such as how fast your tank is, how fast the bullets are, or if it&#039;s raining or foggy.  Put those in the options setting with &amp;quot;-set(space) &amp;quot; in front of it. You can also make those changes as an admin by using /set _variable (notice there is a space between the set and the _).  A full list of these settings can be found on the [[Server Variables]] page.  Other options, such as how many times a flag can be grabbed before it resets or if flags can land on buildings are explained [http://my.bzflag.org/bb/files/antigrav4teamconf_114.txt in this forum post]&lt;br /&gt;
Optionally, the variables can be placed in a separate configuration file and referenced when the server is started.&amp;quot;&lt;br /&gt;
&#039;&#039;&#039;old&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, it says:&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
(Note: the # sign is used for comments.)&lt;br /&gt;
&lt;br /&gt;
This is the text added by the application initially, kind of like advertising. This will be the first thing anyone sees when they look at the map.&lt;br /&gt;
&lt;br /&gt;
The next thing is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
world &lt;br /&gt;
  size 400 # Sets the world size to 400 (800 x 800 total)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is rather self-explanatory. It&#039;s the &amp;lt;size&amp;gt; of the &amp;lt;world&amp;gt; (The BZFlag arena).&lt;br /&gt;
&lt;br /&gt;
Next is an &amp;lt;options&amp;gt; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options &lt;br /&gt;
  +r   # Enable Ricochet&lt;br /&gt;
  -j   # Enable Jumping&lt;br /&gt;
  -set _tankSpeed 25  # Sets the tank speed to 25 bzunits/second&lt;br /&gt;
  -ms 5  # Sets the maximum shots (per tank) to 5&lt;br /&gt;
  -mp 0,2,0,2,0,2  # Maximum of 2 Red Players, 2 Blue Players, and 2 Observers&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This allows you to define in the map file certain options that are also available from the command line when you start the bzfs server, or in the optional server config file.  Options embedded into a world file will override those input on the command line or in a config file.&lt;br /&gt;
&lt;br /&gt;
The commands listed here are:&lt;br /&gt;
Ricochet, Jumping, Tank speed, Max Shots, and Max Players.&lt;br /&gt;
These are rather self explanatory, except for Max Players. Each number represents how many of each of the following team players are allowed in the game (in the order listed): Rogue, Red, Green, Blue, Purple, Observer. Each number defines the max number of players per category.&lt;br /&gt;
&lt;br /&gt;
For more, see [[Options_(object)|Options Object]].&lt;br /&gt;
&lt;br /&gt;
We now come to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
box &lt;br /&gt;
  name box1      # Generally unused&lt;br /&gt;
  position 0 0 0 # X Y Z Position&lt;br /&gt;
  size 10 10 10  # X Y Z Size (bzunits from the position of the box)&lt;br /&gt;
  rotation 0     # Rotation (in degrees)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is a &amp;lt;box&amp;gt; with a &amp;lt;name&amp;gt; of &amp;lt;box1&amp;gt;.&lt;br /&gt;
The &amp;lt;position&amp;gt; is 0,0,0 in R3[http://en.wikipedia.org/wiki/R3].&lt;br /&gt;
The rest is pretty self explanatory.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; EVERY STATEMENT MUST HAVE AN END.&lt;br /&gt;
&lt;br /&gt;
===Basic Definitions===&lt;br /&gt;
;Objects&lt;br /&gt;
:Objects are the basic building blocks of the bzw file.  Objects begin with a line declaring the object, some fields describing that object, and a line that closes the object (usually with &amp;quot;end&amp;quot;).  Each of these sections of the object is important.&lt;br /&gt;
;Comments&lt;br /&gt;
:BZFS ignores anything in a line following the #; the line has been &amp;quot;commented out.&amp;quot;  It is highly recommended that comments be used often, both for the mapmaker and for others that may see the map.&lt;br /&gt;
;3D Cartesian Coordinate System&lt;br /&gt;
:In most objects, you will see three numbers after position and size. These numbers are coordinates on a graph. The first number is the x coordinate (left and right) the middle number is the y coordinate (forward and backward) and the third number is the z coordinate (height and depth). Another way of thinking of it is: x = width, y = depth, z = height. (Those accustomed to the Y axis determining height will have to slightly adjust their thinking.) &lt;br /&gt;
&lt;br /&gt;
==Sample Objects==&lt;br /&gt;
===The Box===&lt;br /&gt;
Perhaps the simplest object is the box.  There is actually nothing special you can do to it (but in versions of BZFlag from 2.0.8 up, you can do a lot more to it).  Here is an example of a box:&lt;br /&gt;
&lt;br /&gt;
 box&lt;br /&gt;
   name box1             # Optional, but good to include&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   rotation 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the first line, notice the word &amp;quot;box&amp;quot;.  It simply says the next object is a box.  The next line is the name of the object.  It is defined with the syntax &amp;quot;&amp;lt;tt&amp;gt;name &#039;&#039;objectName&#039;&#039;&amp;lt;/tt&amp;gt;&amp;quot;.  It is not required, but is good to include (if you have a LOT of boxes, how do you know which is which?  Naming them--as well as other objects--helps you keep track).  The third line defines the position of the center of the bottom of the object.  The three arguments of &amp;lt;tt&amp;gt;position&amp;lt;/tt&amp;gt; are the x, y, and z coordinates of the box, respectively.  The x and y coordinates can be positive or negative, but the z coordinate should just be positive or zero.  On the fourth line, the size of the box is defined.  The arguments of &amp;lt;tt&amp;gt;size&amp;lt;/tt&amp;gt; are the x, y, and z sizes of the object, respectively.  The x and y arguments make the box that wide on both sides of it&#039;s position.  However, the z argument makes the object exactly the number of units tall as defined.  In other words, the box shown above, with a size of &#039;10 10 10&#039; is actually 20 units by 20 units by 10 units high, so if you want a box that is a perfect cube, you would need to make the height, or Z dimension, &#039;20&#039;. The next line just says how much the object is rotated.  This number is the number of degrees of rotation, and can be negative or positive.  The last line just tells BZFlag the object is done, and a new one can be defined.  Be sure to &#039;&#039;&#039;always&#039;&#039;&#039; use this.&lt;br /&gt;
&lt;br /&gt;
Below is an image of a box with a size of 5 5 10.&lt;br /&gt;
&lt;br /&gt;
[[Image:box.jpg]]&lt;br /&gt;
&lt;br /&gt;
===The Cone===&lt;br /&gt;
Most objects have similar parameters as the basic box.  For instance, the code for a cone may look something like this:&lt;br /&gt;
&lt;br /&gt;
 cone&lt;br /&gt;
   name cone1&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 20&lt;br /&gt;
   divisions 128&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Divisions basically decide how smooth the cone is.  The higher the divisions the more smooth the cone is.  A division of 4 would look like a pyramid.  Another parameter that can be added to the cone object is angle. If you say angle 180, that would make 1/2 of a cone, 90 would make 1/4 of a cone, and so on. &lt;br /&gt;
&lt;br /&gt;
===The Arc===&lt;br /&gt;
&lt;br /&gt;
An arc is basically a cylinder. However it doesn’t have to be a perfect cylinder depending on certain options you select. For an arc the only required options are divisions, position and size. Just like the cone divisions have the same effect, position and size are all the same. Once again you can have an oval shaped cylinder type thing. Now, you WILL find more options to an arc than to a cone, for example the ratio option. The ratio options let you basically put a hole in the cylinder. So if you have the option: ratio 1 you would have a full cylinder. If you say for example ratio .3 or any number less than 1 you will get a hole in the cylinder. The bigger the number, the smaller the hole. Angle allows you to do a semicircle. Rotation, once again, isn&#039;t really needed, unless you need a semicircle that has a certain specific orientation in your map. all the options like spin and shear are the same for this object too! phydrv and matref I’ll show later. Let’s move to the sphere:&lt;br /&gt;
&lt;br /&gt;
===The Sphere===&lt;br /&gt;
&lt;br /&gt;
The only options required to make a sphere are position, size, and divisions. &lt;br /&gt;
All these options do the same thing as they did in the objects above.  You may also have an oval like sphere.  You make an oval like sphere simply by making the x and y&#039;s different sizes just like in the cone and arc.  The radius option is just a substitute for size.  You can write size 10 10 10 or radius 10.  Both do the same thing. However if you want an oval shaped sphere you have to use size.  Rotation wouldn&#039;t really have an effect and the shear and spin works the same for this object.&lt;br /&gt;
&lt;br /&gt;
==Getting more help==&lt;br /&gt;
*The links at the bottom of the [[:Category:Map Making|Map Making]] page.&lt;br /&gt;
*The original creator of this page is flight, you can email him at dirtbikerdude_91@yahoo.com and he will be happy to answer any questions that he is capable of answering.&lt;br /&gt;
&lt;br /&gt;
==Special Objects==&lt;br /&gt;
There are certain objects that are often coded by hand because it is simpler or it is impossible to do with graphical map creation tools.  &lt;br /&gt;
&lt;br /&gt;
===Materials ===&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_bolt.png &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
Material is letting the computer know that a material is about to be explained to it.  You name it so that way you can reference it with the matref.  The name can be any thing you want as long as it does not have any spaces.  You type in &amp;lt;tt&amp;gt;addtexture&amp;lt;/tt&amp;gt; and you state a texture name.  Now, how do you know what texture names there are to use?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Linux&#039;&#039;&#039;: Running &amp;lt;tt&amp;gt;ls /usr/share/bzflag/*.png&amp;lt;/tt&amp;gt; in a terminal will show the list of pictures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Mac&#039;&#039;&#039;: If you control click (right click) on the bzflag icon, click show package contents, click contents, and click resources, those are the pictures you may use. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Windows&#039;&#039;&#039;: The default path is &amp;lt;tt&amp;gt;C:\Program Files\BZFlag\data\*.png&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What you will find are images that are used in every day games.  The top of a base, the wall of a base. A bullet which is blue_bolt.png (as was used above).  The full path to the texture needs to be used if the texture is not found in that directory.  Any customized textures should be uploaded to the [http://images.bzflag.org/submitimages/ BZFlag Image Submission System] before the map is hosted publicly.&lt;br /&gt;
&lt;br /&gt;
Servers running bzfs 2.0.8 and earlier will require &amp;quot;meshbox&amp;quot; and &amp;quot;meshpyr&amp;quot; in order to apply textures and physics to these objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instead of creating a new texture, many interesting and creative things can be done with the &amp;quot;diffuse&amp;quot; parameter in the material object.  You can add the diffuse command and it will look like this diffuse 1 1 1 1.  The first number is the amount of red that will be in the meshobject.  The second number is the amount of green, the third is the amount of blue.  So you can mix those colors to make more colors.  You may use a range from 0-1.  For example diffuse .3 .5 .26 1.  The fourth number determines the opacity or transparency (the see-throughability).  0 is invisible, .5 is half invisible, and 1 is normal. &lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   diffuse .5 .25 .1 .6 &lt;br /&gt;
   addtexture mesh.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Physics===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Physics make your tank behave in different ways.  If you have ever played laser mania by Louman than you know on the outskirts of the map there is something you can jump on and you go really fast, that is a physics. Physics and materials work the same way.  Physics is to material as phydrv is to matref.  You must specify a physics then on a meshbox, meshpyr cone arc sphere or whatever, you can reference that physics by using the phydrv command just like you would use the matref command for materials.  There are different physics commands.  Linear, angular, slide and death.  In the Louman map I mentioned above is a linear physics.  Linear physics makes your tank move in a line.  The numbers after a linear command are just like position x y z.  Example:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   linear 50 0 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive x direction you may use -50 and it will make it go the other way.&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy2 &lt;br /&gt;
   linear 0 50 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive y direction &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy3 &lt;br /&gt;
   linear 0 0 50 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank jump at a speed of 50 &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy4 &lt;br /&gt;
   slide 5 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank basically feel like it&#039;s on ice.  Whichever way the tank is moving it will keep moving that way. &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy5 &lt;br /&gt;
   death haha! you died &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make the tank die when it touches the object that refers to this and the message haha! you died will be displayed to that person. &lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   death I like you better dead! &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   phydrv phy1                       # Or what ever you named the physics.&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This works just like the material &lt;br /&gt;
&lt;br /&gt;
The thing about physics and materials is that they have to be written before they are referenced. &lt;br /&gt;
&lt;br /&gt;
This &#039;&#039;&#039;won&#039;t&#039;&#039;&#039; work &lt;br /&gt;
&lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_team.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
A group is a defined group of objects that can be called to gether as one.&lt;br /&gt;
&lt;br /&gt;
For example if a map editor is makeing a forest, and each tree contains 2 objects, the editor doesn&#039;t want to type up the code for each tree over and over again. What he can do is tell BZFS that these objects = tree. and then whenever he wants to make a tree he just types tree.&lt;br /&gt;
&lt;br /&gt;
Example-----------&lt;br /&gt;
&lt;br /&gt;
first define a group of obects as a tree &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  define tree&lt;br /&gt;
  &lt;br /&gt;
  box&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  size 2 2 4&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  pyramid&lt;br /&gt;
  position 0 0 3&lt;br /&gt;
  size 5 5 10&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  enddef&lt;br /&gt;
&lt;br /&gt;
then to add a tree simpily type&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  group tree&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
==Transformations==&lt;br /&gt;
[[Category:Map Making]]&lt;br /&gt;
Transformations are simple ways of modifying objects so that maps have some variety. These can get complicated so I will only give you a sample of what they can do. There are 3 transformations shift, spin, and shear. You can find a different also helpful page here [[3d Transformations]]&lt;br /&gt;
&lt;br /&gt;
The one is will tell you about is &#039;&#039;&#039;Shift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shift&#039;&#039;&#039; moves an object by the amount of units that you specify from its present position.&lt;br /&gt;
the object..&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at place 10 10 0&lt;br /&gt;
&lt;br /&gt;
while the object..&lt;br /&gt;
&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  shift 0 0 10&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at position 10 10 10.&lt;br /&gt;
&lt;br /&gt;
====Spin====&lt;br /&gt;
Spinning an object is just like rotating an object but can be on a different axis. (y and x)&lt;br /&gt;
When you rotate it is around the center of the object.&lt;br /&gt;
Remember: Only spin-able objects can be spun.&lt;br /&gt;
Here is what the code looks like:&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
 end&lt;br /&gt;
The meshbox will now be tilted 45 degrees on its y axis.&lt;br /&gt;
Spin code has four numbers, the first one is how many degrees to spin.&lt;br /&gt;
The last three are for which axis&#039;s to spin, by placing a value of more than 0.&lt;/div&gt;</summary>
		<author><name>ClayOgre</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7345</id>
		<title>Map making by hand</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7345"/>
		<updated>2010-11-06T00:43:23Z</updated>

		<summary type="html">&lt;p&gt;ClayOgre: /* The Arc */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoDoc|Major re-organization, transform away from &amp;quot;chat&amp;quot; style. Need to reference pages elsewhere on the wiki in place of much of the content which appears to be building up here.  Create them if necessary, or see the list [[Special:Allpages|here]].}}&lt;br /&gt;
Although there are a number of GUI options for creating maps such as BZ-Edit, 3D modelers, many map-makers use a basic text-editor.  There are many times when it is necessary to make small changes to a map, such as including objects that are unavailable in GUI map-maker, but there are also some who enjoy the challenge of creating a map entirely from scratch with a text-editor.&lt;br /&gt;
&lt;br /&gt;
==Text Editors==&lt;br /&gt;
Most text-editors designed for coding/programming are more than sufficient for editing bzw files.  Although word-processing programs such as Microsoft Word can be used, there are many cheaper (free) and more efficient programs designed specifically for coding. If you are interested in syntax highlighting, look at the [http://my.bzflag.org/bb/viewtopic.php?f=24&amp;amp;t=16037&amp;amp;p=148953 forum topic].&lt;br /&gt;
===Windows===&lt;br /&gt;
*Notepad&lt;br /&gt;
*PSPad&lt;br /&gt;
*NoteTab&lt;br /&gt;
*[http://notepad-plus-plus.org/ Notepad ++] - a tabbed editor based on Scite.&lt;br /&gt;
&lt;br /&gt;
===Mac===&lt;br /&gt;
*TextWrangler&lt;br /&gt;
*TextEdit&lt;br /&gt;
===Linux===&lt;br /&gt;
*Command-line editors such as nano, emacs, pico, vim, or ed.&lt;br /&gt;
*GEdit&lt;br /&gt;
*Kate&lt;br /&gt;
*Scite&lt;br /&gt;
&lt;br /&gt;
==Editing existing maps==&lt;br /&gt;
Beginning mapmakers should spend some time studying and making small changes in existing maps to see how things work.  In the client, maps can be saved for editing by joining the desired server and choosing: Options&amp;gt;Save World.  Maps can also be saved by issuing the /saveworld command.  The map should be a simple map when getting started.  One may find it easier to create a file in BZEdit and open the resulting file in the text-editor.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
If you have created a box in BZEdit you may see:&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
 world &lt;br /&gt;
   size 400 &lt;br /&gt;
 end &lt;br /&gt;
 options &lt;br /&gt;
   +r &lt;br /&gt;
   -j &lt;br /&gt;
   -set _tankSpeed 25 &lt;br /&gt;
   -ms 5 &lt;br /&gt;
   -mp 0,2,0,2,0,2 &lt;br /&gt;
 end &lt;br /&gt;
 box &lt;br /&gt;
   name box1 &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
 end &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===What that means===&lt;br /&gt;
&amp;quot;There are set variables that define various things such as how fast your tank is, how fast the bullets are, or if it&#039;s raining or foggy.  Put those in the options setting with &amp;quot;-set(space) &amp;quot; in front of it. You can also make those changes as an admin by using /set _variable (notice there is a space between the set and the _).  A full list of these settings can be found on the [[Server Variables]] page.  Other options, such as how many times a flag can be grabbed before it resets or if flags can land on buildings are explained [http://my.bzflag.org/bb/files/antigrav4teamconf_114.txt in this forum post]&lt;br /&gt;
Optionally, the variables can be placed in a separate configuration file and referenced when the server is started.&amp;quot;&lt;br /&gt;
&#039;&#039;&#039;old&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, it says:&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
(Note: the # sign is used for comments.)&lt;br /&gt;
&lt;br /&gt;
This is the text added by the application initially, kind of like advertising. This will be the first thing anyone sees when they look at the map.&lt;br /&gt;
&lt;br /&gt;
The next thing is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
world &lt;br /&gt;
  size 400 # Sets the world size to 400 (800 x 800 total)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is rather self-explanatory. It&#039;s the &amp;lt;size&amp;gt; of the &amp;lt;world&amp;gt; (The BZFlag arena).&lt;br /&gt;
&lt;br /&gt;
Next is an &amp;lt;options&amp;gt; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options &lt;br /&gt;
  +r   # Enable Ricochet&lt;br /&gt;
  -j   # Enable Jumping&lt;br /&gt;
  -set _tankSpeed 25  # Sets the tank speed to 25 bzunits/second&lt;br /&gt;
  -ms 5  # Sets the maximum shots (per tank) to 5&lt;br /&gt;
  -mp 0,2,0,2,0,2  # Maximum of 2 Red Players, 2 Blue Players, and 2 Observers&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This allows you to define in the map file certain options that are also available from the command line when you start the bzfs server, or in the optional server config file.  Options embedded into a world file will override those input on the command line or in a config file.&lt;br /&gt;
&lt;br /&gt;
The commands listed here are:&lt;br /&gt;
Ricochet, Jumping, Tank speed, Max Shots, and Max Players.&lt;br /&gt;
These are rather self explanatory, except for Max Players. Each number represents how many of each of the following team players are allowed in the game (in the order listed): Rogue, Red, Green, Blue, Purple, Observer. Each number defines the max number of players per category.&lt;br /&gt;
&lt;br /&gt;
For more, see [[Options_(object)|Options Object]].&lt;br /&gt;
&lt;br /&gt;
We now come to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
box &lt;br /&gt;
  name box1      # Generally unused&lt;br /&gt;
  position 0 0 0 # X Y Z Position&lt;br /&gt;
  size 10 10 10  # X Y Z Size (bzunits from the position of the box)&lt;br /&gt;
  rotation 0     # Rotation (in degrees)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is a &amp;lt;box&amp;gt; with a &amp;lt;name&amp;gt; of &amp;lt;box1&amp;gt;.&lt;br /&gt;
The &amp;lt;position&amp;gt; is 0,0,0 in R3[http://en.wikipedia.org/wiki/R3].&lt;br /&gt;
The rest is pretty self explanatory.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; EVERY STATEMENT MUST HAVE AN END.&lt;br /&gt;
&lt;br /&gt;
===Basic Definitions===&lt;br /&gt;
;Objects&lt;br /&gt;
:Objects are the basic building blocks of the bzw file.  Objects begin with a line declaring the object, some fields describing that object, and a line that closes the object (usually with &amp;quot;end&amp;quot;).  Each of these sections of the object is important.&lt;br /&gt;
;Comments&lt;br /&gt;
:BZFS ignores anything in a line following the #; the line has been &amp;quot;commented out.&amp;quot;  It is highly recommended that comments be used often, both for the mapmaker and for others that may see the map.&lt;br /&gt;
;3D Cartesian Coordinate System&lt;br /&gt;
:In most objects, you will see three numbers after position and size. These numbers are coordinates on a graph. The first number is the x coordinate (left and right) the middle number is the y coordinate (forward and backward) and the third number is the z coordinate (height and depth). Another way of thinking of it is: x = width, y = depth, z = height. (Those accustomed to the Y axis determining height will have to slightly adjust their thinking.) &lt;br /&gt;
&lt;br /&gt;
==Sample Objects==&lt;br /&gt;
===The Box===&lt;br /&gt;
Perhaps the simplest object is the box.  There is actually nothing special you can do to it (but in versions of BZFlag from 2.0.8 up, you can do a lot more to it).  Here is an example of a box:&lt;br /&gt;
&lt;br /&gt;
 box&lt;br /&gt;
   name box1             # Optional, but good to include&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   rotation 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the first line, notice the word &amp;quot;box&amp;quot;.  It simply says the next object is a box.  The next line is the name of the object.  It is defined with the syntax &amp;quot;&amp;lt;tt&amp;gt;name &#039;&#039;objectName&#039;&#039;&amp;lt;/tt&amp;gt;&amp;quot;.  It is not required, but is good to include (if you have a LOT of boxes, how do you know which is which?  Naming them--as well as other objects--helps you keep track).  The third line defines the position of the center of the bottom of the object.  The three arguments of &amp;lt;tt&amp;gt;position&amp;lt;/tt&amp;gt; are the x, y, and z coordinates of the box, respectively.  The x and y coordinates can be positive or negative, but the z coordinate should just be positive or zero.  On the fourth line, the size of the box is defined.  The arguments of &amp;lt;tt&amp;gt;size&amp;lt;/tt&amp;gt; are the x, y, and z sizes of the object, respectively.  The x and y arguments make the box that wide on both sides of it&#039;s position.  However, the z argument makes the object exactly the number of units tall as defined.  In other words, the box shown above, with a size of &#039;10 10 10&#039; is actually 20 units by 20 units by 10 units high, so if you want a box that is a perfect cube, you would need to make the height, or Z dimension, &#039;20&#039;. The next line just says how much the object is rotated.  This number is the number of degrees of rotation, and can be negative or positive.  The last line just tells BZFlag the object is done, and a new one can be defined.  Be sure to &#039;&#039;&#039;always&#039;&#039;&#039; use this.&lt;br /&gt;
&lt;br /&gt;
Below is an image of a box with a size of 5 5 10.&lt;br /&gt;
&lt;br /&gt;
[[Image:box.jpg]]&lt;br /&gt;
&lt;br /&gt;
===The Cone===&lt;br /&gt;
Most objects have similar parameters as the basic box.  For instance, the code for a cone may look something like this:&lt;br /&gt;
&lt;br /&gt;
 cone&lt;br /&gt;
   name cone1&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 20&lt;br /&gt;
   divisions 128&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Divisions basically decide how smooth the cone is.  The higher the divisions the more smooth the cone is.  A division of 4 would look like a pyramid.  Another parameter that can be added to the cone object is angle. If you say angle 180, that would make 1/2 of a cone, 90 would make 1/4 of a cone, and so on. &lt;br /&gt;
&lt;br /&gt;
===The Arc===&lt;br /&gt;
&lt;br /&gt;
An arc is basically a cylinder. However it doesn’t have to be a perfect cylinder depending on certain options you select. For an arc the only required options are divisions, position and size. Just like the cone divisions have the same effect, position and size are all the same. Once again you can have an oval shaped cylinder type thing. Now, you WILL find more options to an arc than to a cone, for example the ratio option. The ratio options let you basically put a hole in the cylinder. So if you have the option: ratio 1 you would have a full cylinder. If you say for example ratio .3 or any number less than 1 you will get a hole in the cylinder. The bigger the number, the smaller the hole. Angle allows you to do a semicircle. Rotation, once again, isn&#039;t really needed, unless you need 1 semicircle that has a certain specific orientation in your map. all the options like spin and shear are the same for this object too! phydrv and matref I’ll show later. Let’s move to the sphere:&lt;br /&gt;
&lt;br /&gt;
===The Sphere===&lt;br /&gt;
&lt;br /&gt;
The only options required to make a sphere are position, size, and divisions. &lt;br /&gt;
All these options do the same thing as they did in the objects above.  You may also have an oval like sphere.  You make an oval like sphere simply by making the x and y&#039;s different sizes just like in the cone and arc.  The radius option is just a substitute for size.  You can write size 10 10 10 or radius 10.  Both do the same thing. However if you want an oval shaped sphere you have to use size.  Rotation wouldn&#039;t really have an effect and the shear and spin works the same for this object.&lt;br /&gt;
&lt;br /&gt;
==Getting more help==&lt;br /&gt;
*The links at the bottom of the [[:Category:Map Making|Map Making]] page.&lt;br /&gt;
*The original creator of this page is flight, you can email him at dirtbikerdude_91@yahoo.com and he will be happy to answer any questions that he is capable of answering.&lt;br /&gt;
&lt;br /&gt;
==Special Objects==&lt;br /&gt;
There are certain objects that are often coded by hand because it is simpler or it is impossible to do with graphical map creation tools.  &lt;br /&gt;
&lt;br /&gt;
===Materials ===&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_bolt.png &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
Material is letting the computer know that a material is about to be explained to it.  You name it so that way you can reference it with the matref.  The name can be any thing you want as long as it does not have any spaces.  You type in &amp;lt;tt&amp;gt;addtexture&amp;lt;/tt&amp;gt; and you state a texture name.  Now, how do you know what texture names there are to use?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Linux&#039;&#039;&#039;: Running &amp;lt;tt&amp;gt;ls /usr/share/bzflag/*.png&amp;lt;/tt&amp;gt; in a terminal will show the list of pictures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Mac&#039;&#039;&#039;: If you control click (right click) on the bzflag icon, click show package contents, click contents, and click resources, those are the pictures you may use. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Windows&#039;&#039;&#039;: The default path is &amp;lt;tt&amp;gt;C:\Program Files\BZFlag\data\*.png&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What you will find are images that are used in every day games.  The top of a base, the wall of a base. A bullet which is blue_bolt.png (as was used above).  The full path to the texture needs to be used if the texture is not found in that directory.  Any customized textures should be uploaded to the [http://images.bzflag.org/submitimages/ BZFlag Image Submission System] before the map is hosted publicly.&lt;br /&gt;
&lt;br /&gt;
Servers running bzfs 2.0.8 and earlier will require &amp;quot;meshbox&amp;quot; and &amp;quot;meshpyr&amp;quot; in order to apply textures and physics to these objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instead of creating a new texture, many interesting and creative things can be done with the &amp;quot;diffuse&amp;quot; parameter in the material object.  You can add the diffuse command and it will look like this diffuse 1 1 1 1.  The first number is the amount of red that will be in the meshobject.  The second number is the amount of green, the third is the amount of blue.  So you can mix those colors to make more colors.  You may use a range from 0-1.  For example diffuse .3 .5 .26 1.  The fourth number determines the opacity or transparency (the see-throughability).  0 is invisible, .5 is half invisible, and 1 is normal. &lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   diffuse .5 .25 .1 .6 &lt;br /&gt;
   addtexture mesh.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Physics===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Physics make your tank behave in different ways.  If you have ever played laser mania by Louman than you know on the outskirts of the map there is something you can jump on and you go really fast, that is a physics. Physics and materials work the same way.  Physics is to material as phydrv is to matref.  You must specify a physics then on a meshbox, meshpyr cone arc sphere or whatever, you can reference that physics by using the phydrv command just like you would use the matref command for materials.  There are different physics commands.  Linear, angular, slide and death.  In the Louman map I mentioned above is a linear physics.  Linear physics makes your tank move in a line.  The numbers after a linear command are just like position x y z.  Example:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   linear 50 0 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive x direction you may use -50 and it will make it go the other way.&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy2 &lt;br /&gt;
   linear 0 50 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive y direction &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy3 &lt;br /&gt;
   linear 0 0 50 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank jump at a speed of 50 &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy4 &lt;br /&gt;
   slide 5 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank basically feel like it&#039;s on ice.  Whichever way the tank is moving it will keep moving that way. &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy5 &lt;br /&gt;
   death haha! you died &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make the tank die when it touches the object that refers to this and the message haha! you died will be displayed to that person. &lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   death I like you better dead! &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   phydrv phy1                       # Or what ever you named the physics.&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This works just like the material &lt;br /&gt;
&lt;br /&gt;
The thing about physics and materials is that they have to be written before they are referenced. &lt;br /&gt;
&lt;br /&gt;
This &#039;&#039;&#039;won&#039;t&#039;&#039;&#039; work &lt;br /&gt;
&lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_team.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
A group is a defined group of objects that can be called to gether as one.&lt;br /&gt;
&lt;br /&gt;
For example if a map editor is makeing a forest, and each tree contains 2 objects, the editor doesn&#039;t want to type up the code for each tree over and over again. What he can do is tell BZFS that these objects = tree. and then whenever he wants to make a tree he just types tree.&lt;br /&gt;
&lt;br /&gt;
Example-----------&lt;br /&gt;
&lt;br /&gt;
first define a group of obects as a tree &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  define tree&lt;br /&gt;
  &lt;br /&gt;
  box&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  size 2 2 4&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  pyramid&lt;br /&gt;
  position 0 0 3&lt;br /&gt;
  size 5 5 10&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  enddef&lt;br /&gt;
&lt;br /&gt;
then to add a tree simpily type&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  group tree&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
==Transformations==&lt;br /&gt;
[[Category:Map Making]]&lt;br /&gt;
Transformations are simple ways of modifying objects so that maps have some variety. These can get complicated so I will only give you a sample of what they can do. There are 3 transformations shift, spin, and shear. You can find a different also helpful page here [[3d Transformations]]&lt;br /&gt;
&lt;br /&gt;
The one is will tell you about is &#039;&#039;&#039;Shift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shift&#039;&#039;&#039; moves an object by the amount of units that you specify from its present position.&lt;br /&gt;
the object..&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at place 10 10 0&lt;br /&gt;
&lt;br /&gt;
while the object..&lt;br /&gt;
&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  shift 0 0 10&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at position 10 10 10.&lt;br /&gt;
&lt;br /&gt;
====Spin====&lt;br /&gt;
Spinning an object is just like rotating an object but can be on a different axis. (y and x)&lt;br /&gt;
When you rotate it is around the center of the object.&lt;br /&gt;
Remember: Only spin-able objects can be spun.&lt;br /&gt;
Here is what the code looks like:&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
 end&lt;br /&gt;
The meshbox will now be tilted 45 degrees on its y axis.&lt;br /&gt;
Spin code has four numbers, the first one is how many degrees to spin.&lt;br /&gt;
The last three are for which axis&#039;s to spin, by placing a value of more than 0.&lt;/div&gt;</summary>
		<author><name>ClayOgre</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7344</id>
		<title>Map making by hand</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7344"/>
		<updated>2010-11-06T00:37:23Z</updated>

		<summary type="html">&lt;p&gt;ClayOgre: /* The Box */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoDoc|Major re-organization, transform away from &amp;quot;chat&amp;quot; style. Need to reference pages elsewhere on the wiki in place of much of the content which appears to be building up here.  Create them if necessary, or see the list [[Special:Allpages|here]].}}&lt;br /&gt;
Although there are a number of GUI options for creating maps such as BZ-Edit, 3D modelers, many map-makers use a basic text-editor.  There are many times when it is necessary to make small changes to a map, such as including objects that are unavailable in GUI map-maker, but there are also some who enjoy the challenge of creating a map entirely from scratch with a text-editor.&lt;br /&gt;
&lt;br /&gt;
==Text Editors==&lt;br /&gt;
Most text-editors designed for coding/programming are more than sufficient for editing bzw files.  Although word-processing programs such as Microsoft Word can be used, there are many cheaper (free) and more efficient programs designed specifically for coding. If you are interested in syntax highlighting, look at the [http://my.bzflag.org/bb/viewtopic.php?f=24&amp;amp;t=16037&amp;amp;p=148953 forum topic].&lt;br /&gt;
===Windows===&lt;br /&gt;
*Notepad&lt;br /&gt;
*PSPad&lt;br /&gt;
*NoteTab&lt;br /&gt;
*[http://notepad-plus-plus.org/ Notepad ++] - a tabbed editor based on Scite.&lt;br /&gt;
&lt;br /&gt;
===Mac===&lt;br /&gt;
*TextWrangler&lt;br /&gt;
*TextEdit&lt;br /&gt;
===Linux===&lt;br /&gt;
*Command-line editors such as nano, emacs, pico, vim, or ed.&lt;br /&gt;
*GEdit&lt;br /&gt;
*Kate&lt;br /&gt;
*Scite&lt;br /&gt;
&lt;br /&gt;
==Editing existing maps==&lt;br /&gt;
Beginning mapmakers should spend some time studying and making small changes in existing maps to see how things work.  In the client, maps can be saved for editing by joining the desired server and choosing: Options&amp;gt;Save World.  Maps can also be saved by issuing the /saveworld command.  The map should be a simple map when getting started.  One may find it easier to create a file in BZEdit and open the resulting file in the text-editor.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
If you have created a box in BZEdit you may see:&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
 world &lt;br /&gt;
   size 400 &lt;br /&gt;
 end &lt;br /&gt;
 options &lt;br /&gt;
   +r &lt;br /&gt;
   -j &lt;br /&gt;
   -set _tankSpeed 25 &lt;br /&gt;
   -ms 5 &lt;br /&gt;
   -mp 0,2,0,2,0,2 &lt;br /&gt;
 end &lt;br /&gt;
 box &lt;br /&gt;
   name box1 &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
 end &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===What that means===&lt;br /&gt;
&amp;quot;There are set variables that define various things such as how fast your tank is, how fast the bullets are, or if it&#039;s raining or foggy.  Put those in the options setting with &amp;quot;-set(space) &amp;quot; in front of it. You can also make those changes as an admin by using /set _variable (notice there is a space between the set and the _).  A full list of these settings can be found on the [[Server Variables]] page.  Other options, such as how many times a flag can be grabbed before it resets or if flags can land on buildings are explained [http://my.bzflag.org/bb/files/antigrav4teamconf_114.txt in this forum post]&lt;br /&gt;
Optionally, the variables can be placed in a separate configuration file and referenced when the server is started.&amp;quot;&lt;br /&gt;
&#039;&#039;&#039;old&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, it says:&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
(Note: the # sign is used for comments.)&lt;br /&gt;
&lt;br /&gt;
This is the text added by the application initially, kind of like advertising. This will be the first thing anyone sees when they look at the map.&lt;br /&gt;
&lt;br /&gt;
The next thing is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
world &lt;br /&gt;
  size 400 # Sets the world size to 400 (800 x 800 total)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is rather self-explanatory. It&#039;s the &amp;lt;size&amp;gt; of the &amp;lt;world&amp;gt; (The BZFlag arena).&lt;br /&gt;
&lt;br /&gt;
Next is an &amp;lt;options&amp;gt; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options &lt;br /&gt;
  +r   # Enable Ricochet&lt;br /&gt;
  -j   # Enable Jumping&lt;br /&gt;
  -set _tankSpeed 25  # Sets the tank speed to 25 bzunits/second&lt;br /&gt;
  -ms 5  # Sets the maximum shots (per tank) to 5&lt;br /&gt;
  -mp 0,2,0,2,0,2  # Maximum of 2 Red Players, 2 Blue Players, and 2 Observers&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This allows you to define in the map file certain options that are also available from the command line when you start the bzfs server, or in the optional server config file.  Options embedded into a world file will override those input on the command line or in a config file.&lt;br /&gt;
&lt;br /&gt;
The commands listed here are:&lt;br /&gt;
Ricochet, Jumping, Tank speed, Max Shots, and Max Players.&lt;br /&gt;
These are rather self explanatory, except for Max Players. Each number represents how many of each of the following team players are allowed in the game (in the order listed): Rogue, Red, Green, Blue, Purple, Observer. Each number defines the max number of players per category.&lt;br /&gt;
&lt;br /&gt;
For more, see [[Options_(object)|Options Object]].&lt;br /&gt;
&lt;br /&gt;
We now come to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
box &lt;br /&gt;
  name box1      # Generally unused&lt;br /&gt;
  position 0 0 0 # X Y Z Position&lt;br /&gt;
  size 10 10 10  # X Y Z Size (bzunits from the position of the box)&lt;br /&gt;
  rotation 0     # Rotation (in degrees)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is a &amp;lt;box&amp;gt; with a &amp;lt;name&amp;gt; of &amp;lt;box1&amp;gt;.&lt;br /&gt;
The &amp;lt;position&amp;gt; is 0,0,0 in R3[http://en.wikipedia.org/wiki/R3].&lt;br /&gt;
The rest is pretty self explanatory.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; EVERY STATEMENT MUST HAVE AN END.&lt;br /&gt;
&lt;br /&gt;
===Basic Definitions===&lt;br /&gt;
;Objects&lt;br /&gt;
:Objects are the basic building blocks of the bzw file.  Objects begin with a line declaring the object, some fields describing that object, and a line that closes the object (usually with &amp;quot;end&amp;quot;).  Each of these sections of the object is important.&lt;br /&gt;
;Comments&lt;br /&gt;
:BZFS ignores anything in a line following the #; the line has been &amp;quot;commented out.&amp;quot;  It is highly recommended that comments be used often, both for the mapmaker and for others that may see the map.&lt;br /&gt;
;3D Cartesian Coordinate System&lt;br /&gt;
:In most objects, you will see three numbers after position and size. These numbers are coordinates on a graph. The first number is the x coordinate (left and right) the middle number is the y coordinate (forward and backward) and the third number is the z coordinate (height and depth). Another way of thinking of it is: x = width, y = depth, z = height. (Those accustomed to the Y axis determining height will have to slightly adjust their thinking.) &lt;br /&gt;
&lt;br /&gt;
==Sample Objects==&lt;br /&gt;
===The Box===&lt;br /&gt;
Perhaps the simplest object is the box.  There is actually nothing special you can do to it (but in versions of BZFlag from 2.0.8 up, you can do a lot more to it).  Here is an example of a box:&lt;br /&gt;
&lt;br /&gt;
 box&lt;br /&gt;
   name box1             # Optional, but good to include&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   rotation 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the first line, notice the word &amp;quot;box&amp;quot;.  It simply says the next object is a box.  The next line is the name of the object.  It is defined with the syntax &amp;quot;&amp;lt;tt&amp;gt;name &#039;&#039;objectName&#039;&#039;&amp;lt;/tt&amp;gt;&amp;quot;.  It is not required, but is good to include (if you have a LOT of boxes, how do you know which is which?  Naming them--as well as other objects--helps you keep track).  The third line defines the position of the center of the bottom of the object.  The three arguments of &amp;lt;tt&amp;gt;position&amp;lt;/tt&amp;gt; are the x, y, and z coordinates of the box, respectively.  The x and y coordinates can be positive or negative, but the z coordinate should just be positive or zero.  On the fourth line, the size of the box is defined.  The arguments of &amp;lt;tt&amp;gt;size&amp;lt;/tt&amp;gt; are the x, y, and z sizes of the object, respectively.  The x and y arguments make the box that wide on both sides of it&#039;s position.  However, the z argument makes the object exactly the number of units tall as defined.  In other words, the box shown above, with a size of &#039;10 10 10&#039; is actually 20 units by 20 units by 10 units high, so if you want a box that is a perfect cube, you would need to make the height, or Z dimension, &#039;20&#039;. The next line just says how much the object is rotated.  This number is the number of degrees of rotation, and can be negative or positive.  The last line just tells BZFlag the object is done, and a new one can be defined.  Be sure to &#039;&#039;&#039;always&#039;&#039;&#039; use this.&lt;br /&gt;
&lt;br /&gt;
Below is an image of a box with a size of 5 5 10.&lt;br /&gt;
&lt;br /&gt;
[[Image:box.jpg]]&lt;br /&gt;
&lt;br /&gt;
===The Cone===&lt;br /&gt;
Most objects have similar parameters as the basic box.  For instance, the code for a cone may look something like this:&lt;br /&gt;
&lt;br /&gt;
 cone&lt;br /&gt;
   name cone1&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 20&lt;br /&gt;
   divisions 128&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Divisions basically decide how smooth the cone is.  The higher the divisions the more smooth the cone is.  A division of 4 would look like a pyramid.  Another parameter that can be added to the cone object is angle. If you say angle 180, that would make 1/2 of a cone, 90 would make 1/4 of a cone, and so on. &lt;br /&gt;
&lt;br /&gt;
===The Arc===&lt;br /&gt;
&lt;br /&gt;
An arc is basically a cylinder. However it doesn’t have to be a perfect cylinder depending on certain options you select. For an arc the only required options are divisions, position and size. Just like the cone divisions have the same effect, position and size are all the same. Once again you can have an oval shaped cylinder type thing. Now, you WILL find more options to an arc than to a cone, for example the ratio option. The ratio options let you basically put a hole in the cylinder. So if you have the option: ratio 1 you would have a full cylinder. If you say for example ratio .3 or any number less than 1 you will get a whole in the cylinder. The bigger the number, the smaller the hole. Angle allows you to do a simi-circle. Rotation once again isn&#039;t really needed. all the options like spin and shear are the same for this object too! phydrv and matref I’ll show later. Let’s move to the sphere &lt;br /&gt;
&lt;br /&gt;
===The Sphere===&lt;br /&gt;
&lt;br /&gt;
The only options required to make a sphere are position, size, and divisions. &lt;br /&gt;
All these options do the same thing as they did in the objects above.  You may also have an oval like sphere.  You make an oval like sphere simply by making the x and y&#039;s different sizes just like in the cone and arc.  The radius option is just a substitute for size.  You can write size 10 10 10 or radius 10.  Both do the same thing. However if you want an oval shaped sphere you have to use size.  Rotation wouldn&#039;t really have an effect and the shear and spin works the same for this object.&lt;br /&gt;
&lt;br /&gt;
==Getting more help==&lt;br /&gt;
*The links at the bottom of the [[:Category:Map Making|Map Making]] page.&lt;br /&gt;
*The original creator of this page is flight, you can email him at dirtbikerdude_91@yahoo.com and he will be happy to answer any questions that he is capable of answering.&lt;br /&gt;
&lt;br /&gt;
==Special Objects==&lt;br /&gt;
There are certain objects that are often coded by hand because it is simpler or it is impossible to do with graphical map creation tools.  &lt;br /&gt;
&lt;br /&gt;
===Materials ===&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_bolt.png &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
Material is letting the computer know that a material is about to be explained to it.  You name it so that way you can reference it with the matref.  The name can be any thing you want as long as it does not have any spaces.  You type in &amp;lt;tt&amp;gt;addtexture&amp;lt;/tt&amp;gt; and you state a texture name.  Now, how do you know what texture names there are to use?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Linux&#039;&#039;&#039;: Running &amp;lt;tt&amp;gt;ls /usr/share/bzflag/*.png&amp;lt;/tt&amp;gt; in a terminal will show the list of pictures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Mac&#039;&#039;&#039;: If you control click (right click) on the bzflag icon, click show package contents, click contents, and click resources, those are the pictures you may use. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Windows&#039;&#039;&#039;: The default path is &amp;lt;tt&amp;gt;C:\Program Files\BZFlag\data\*.png&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What you will find are images that are used in every day games.  The top of a base, the wall of a base. A bullet which is blue_bolt.png (as was used above).  The full path to the texture needs to be used if the texture is not found in that directory.  Any customized textures should be uploaded to the [http://images.bzflag.org/submitimages/ BZFlag Image Submission System] before the map is hosted publicly.&lt;br /&gt;
&lt;br /&gt;
Servers running bzfs 2.0.8 and earlier will require &amp;quot;meshbox&amp;quot; and &amp;quot;meshpyr&amp;quot; in order to apply textures and physics to these objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instead of creating a new texture, many interesting and creative things can be done with the &amp;quot;diffuse&amp;quot; parameter in the material object.  You can add the diffuse command and it will look like this diffuse 1 1 1 1.  The first number is the amount of red that will be in the meshobject.  The second number is the amount of green, the third is the amount of blue.  So you can mix those colors to make more colors.  You may use a range from 0-1.  For example diffuse .3 .5 .26 1.  The fourth number determines the opacity or transparency (the see-throughability).  0 is invisible, .5 is half invisible, and 1 is normal. &lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   diffuse .5 .25 .1 .6 &lt;br /&gt;
   addtexture mesh.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Physics===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Physics make your tank behave in different ways.  If you have ever played laser mania by Louman than you know on the outskirts of the map there is something you can jump on and you go really fast, that is a physics. Physics and materials work the same way.  Physics is to material as phydrv is to matref.  You must specify a physics then on a meshbox, meshpyr cone arc sphere or whatever, you can reference that physics by using the phydrv command just like you would use the matref command for materials.  There are different physics commands.  Linear, angular, slide and death.  In the Louman map I mentioned above is a linear physics.  Linear physics makes your tank move in a line.  The numbers after a linear command are just like position x y z.  Example:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   linear 50 0 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive x direction you may use -50 and it will make it go the other way.&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy2 &lt;br /&gt;
   linear 0 50 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive y direction &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy3 &lt;br /&gt;
   linear 0 0 50 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank jump at a speed of 50 &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy4 &lt;br /&gt;
   slide 5 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank basically feel like it&#039;s on ice.  Whichever way the tank is moving it will keep moving that way. &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy5 &lt;br /&gt;
   death haha! you died &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make the tank die when it touches the object that refers to this and the message haha! you died will be displayed to that person. &lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   death I like you better dead! &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   phydrv phy1                       # Or what ever you named the physics.&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This works just like the material &lt;br /&gt;
&lt;br /&gt;
The thing about physics and materials is that they have to be written before they are referenced. &lt;br /&gt;
&lt;br /&gt;
This &#039;&#039;&#039;won&#039;t&#039;&#039;&#039; work &lt;br /&gt;
&lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_team.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
A group is a defined group of objects that can be called to gether as one.&lt;br /&gt;
&lt;br /&gt;
For example if a map editor is makeing a forest, and each tree contains 2 objects, the editor doesn&#039;t want to type up the code for each tree over and over again. What he can do is tell BZFS that these objects = tree. and then whenever he wants to make a tree he just types tree.&lt;br /&gt;
&lt;br /&gt;
Example-----------&lt;br /&gt;
&lt;br /&gt;
first define a group of obects as a tree &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  define tree&lt;br /&gt;
  &lt;br /&gt;
  box&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  size 2 2 4&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  pyramid&lt;br /&gt;
  position 0 0 3&lt;br /&gt;
  size 5 5 10&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  enddef&lt;br /&gt;
&lt;br /&gt;
then to add a tree simpily type&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  group tree&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
==Transformations==&lt;br /&gt;
[[Category:Map Making]]&lt;br /&gt;
Transformations are simple ways of modifying objects so that maps have some variety. These can get complicated so I will only give you a sample of what they can do. There are 3 transformations shift, spin, and shear. You can find a different also helpful page here [[3d Transformations]]&lt;br /&gt;
&lt;br /&gt;
The one is will tell you about is &#039;&#039;&#039;Shift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shift&#039;&#039;&#039; moves an object by the amount of units that you specify from its present position.&lt;br /&gt;
the object..&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at place 10 10 0&lt;br /&gt;
&lt;br /&gt;
while the object..&lt;br /&gt;
&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  shift 0 0 10&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at position 10 10 10.&lt;br /&gt;
&lt;br /&gt;
====Spin====&lt;br /&gt;
Spinning an object is just like rotating an object but can be on a different axis. (y and x)&lt;br /&gt;
When you rotate it is around the center of the object.&lt;br /&gt;
Remember: Only spin-able objects can be spun.&lt;br /&gt;
Here is what the code looks like:&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
 end&lt;br /&gt;
The meshbox will now be tilted 45 degrees on its y axis.&lt;br /&gt;
Spin code has four numbers, the first one is how many degrees to spin.&lt;br /&gt;
The last three are for which axis&#039;s to spin, by placing a value of more than 0.&lt;/div&gt;</summary>
		<author><name>ClayOgre</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=File:Box.jpg&amp;diff=7343</id>
		<title>File:Box.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=File:Box.jpg&amp;diff=7343"/>
		<updated>2010-11-06T00:32:15Z</updated>

		<summary type="html">&lt;p&gt;ClayOgre: A simple BZFlag box object, size 5 5 10.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A simple BZFlag box object, size 5 5 10.&lt;/div&gt;</summary>
		<author><name>ClayOgre</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7342</id>
		<title>Map making by hand</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7342"/>
		<updated>2010-11-06T00:29:57Z</updated>

		<summary type="html">&lt;p&gt;ClayOgre: /* The Box */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoDoc|Major re-organization, transform away from &amp;quot;chat&amp;quot; style. Need to reference pages elsewhere on the wiki in place of much of the content which appears to be building up here.  Create them if necessary, or see the list [[Special:Allpages|here]].}}&lt;br /&gt;
Although there are a number of GUI options for creating maps such as BZ-Edit, 3D modelers, many map-makers use a basic text-editor.  There are many times when it is necessary to make small changes to a map, such as including objects that are unavailable in GUI map-maker, but there are also some who enjoy the challenge of creating a map entirely from scratch with a text-editor.&lt;br /&gt;
&lt;br /&gt;
==Text Editors==&lt;br /&gt;
Most text-editors designed for coding/programming are more than sufficient for editing bzw files.  Although word-processing programs such as Microsoft Word can be used, there are many cheaper (free) and more efficient programs designed specifically for coding. If you are interested in syntax highlighting, look at the [http://my.bzflag.org/bb/viewtopic.php?f=24&amp;amp;t=16037&amp;amp;p=148953 forum topic].&lt;br /&gt;
===Windows===&lt;br /&gt;
*Notepad&lt;br /&gt;
*PSPad&lt;br /&gt;
*NoteTab&lt;br /&gt;
*[http://notepad-plus-plus.org/ Notepad ++] - a tabbed editor based on Scite.&lt;br /&gt;
&lt;br /&gt;
===Mac===&lt;br /&gt;
*TextWrangler&lt;br /&gt;
*TextEdit&lt;br /&gt;
===Linux===&lt;br /&gt;
*Command-line editors such as nano, emacs, pico, vim, or ed.&lt;br /&gt;
*GEdit&lt;br /&gt;
*Kate&lt;br /&gt;
*Scite&lt;br /&gt;
&lt;br /&gt;
==Editing existing maps==&lt;br /&gt;
Beginning mapmakers should spend some time studying and making small changes in existing maps to see how things work.  In the client, maps can be saved for editing by joining the desired server and choosing: Options&amp;gt;Save World.  Maps can also be saved by issuing the /saveworld command.  The map should be a simple map when getting started.  One may find it easier to create a file in BZEdit and open the resulting file in the text-editor.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
If you have created a box in BZEdit you may see:&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
 world &lt;br /&gt;
   size 400 &lt;br /&gt;
 end &lt;br /&gt;
 options &lt;br /&gt;
   +r &lt;br /&gt;
   -j &lt;br /&gt;
   -set _tankSpeed 25 &lt;br /&gt;
   -ms 5 &lt;br /&gt;
   -mp 0,2,0,2,0,2 &lt;br /&gt;
 end &lt;br /&gt;
 box &lt;br /&gt;
   name box1 &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
 end &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===What that means===&lt;br /&gt;
&amp;quot;There are set variables that define various things such as how fast your tank is, how fast the bullets are, or if it&#039;s raining or foggy.  Put those in the options setting with &amp;quot;-set(space) &amp;quot; in front of it. You can also make those changes as an admin by using /set _variable (notice there is a space between the set and the _).  A full list of these settings can be found on the [[Server Variables]] page.  Other options, such as how many times a flag can be grabbed before it resets or if flags can land on buildings are explained [http://my.bzflag.org/bb/files/antigrav4teamconf_114.txt in this forum post]&lt;br /&gt;
Optionally, the variables can be placed in a separate configuration file and referenced when the server is started.&amp;quot;&lt;br /&gt;
&#039;&#039;&#039;old&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, it says:&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
(Note: the # sign is used for comments.)&lt;br /&gt;
&lt;br /&gt;
This is the text added by the application initially, kind of like advertising. This will be the first thing anyone sees when they look at the map.&lt;br /&gt;
&lt;br /&gt;
The next thing is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
world &lt;br /&gt;
  size 400 # Sets the world size to 400 (800 x 800 total)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is rather self-explanatory. It&#039;s the &amp;lt;size&amp;gt; of the &amp;lt;world&amp;gt; (The BZFlag arena).&lt;br /&gt;
&lt;br /&gt;
Next is an &amp;lt;options&amp;gt; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options &lt;br /&gt;
  +r   # Enable Ricochet&lt;br /&gt;
  -j   # Enable Jumping&lt;br /&gt;
  -set _tankSpeed 25  # Sets the tank speed to 25 bzunits/second&lt;br /&gt;
  -ms 5  # Sets the maximum shots (per tank) to 5&lt;br /&gt;
  -mp 0,2,0,2,0,2  # Maximum of 2 Red Players, 2 Blue Players, and 2 Observers&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This allows you to define in the map file certain options that are also available from the command line when you start the bzfs server, or in the optional server config file.  Options embedded into a world file will override those input on the command line or in a config file.&lt;br /&gt;
&lt;br /&gt;
The commands listed here are:&lt;br /&gt;
Ricochet, Jumping, Tank speed, Max Shots, and Max Players.&lt;br /&gt;
These are rather self explanatory, except for Max Players. Each number represents how many of each of the following team players are allowed in the game (in the order listed): Rogue, Red, Green, Blue, Purple, Observer. Each number defines the max number of players per category.&lt;br /&gt;
&lt;br /&gt;
For more, see [[Options_(object)|Options Object]].&lt;br /&gt;
&lt;br /&gt;
We now come to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
box &lt;br /&gt;
  name box1      # Generally unused&lt;br /&gt;
  position 0 0 0 # X Y Z Position&lt;br /&gt;
  size 10 10 10  # X Y Z Size (bzunits from the position of the box)&lt;br /&gt;
  rotation 0     # Rotation (in degrees)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is a &amp;lt;box&amp;gt; with a &amp;lt;name&amp;gt; of &amp;lt;box1&amp;gt;.&lt;br /&gt;
The &amp;lt;position&amp;gt; is 0,0,0 in R3[http://en.wikipedia.org/wiki/R3].&lt;br /&gt;
The rest is pretty self explanatory.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; EVERY STATEMENT MUST HAVE AN END.&lt;br /&gt;
&lt;br /&gt;
===Basic Definitions===&lt;br /&gt;
;Objects&lt;br /&gt;
:Objects are the basic building blocks of the bzw file.  Objects begin with a line declaring the object, some fields describing that object, and a line that closes the object (usually with &amp;quot;end&amp;quot;).  Each of these sections of the object is important.&lt;br /&gt;
;Comments&lt;br /&gt;
:BZFS ignores anything in a line following the #; the line has been &amp;quot;commented out.&amp;quot;  It is highly recommended that comments be used often, both for the mapmaker and for others that may see the map.&lt;br /&gt;
;3D Cartesian Coordinate System&lt;br /&gt;
:In most objects, you will see three numbers after position and size. These numbers are coordinates on a graph. The first number is the x coordinate (left and right) the middle number is the y coordinate (forward and backward) and the third number is the z coordinate (height and depth). Another way of thinking of it is: x = width, y = depth, z = height. (Those accustomed to the Y axis determining height will have to slightly adjust their thinking.) &lt;br /&gt;
&lt;br /&gt;
==Sample Objects==&lt;br /&gt;
===The Box===&lt;br /&gt;
Perhaps the simplest object is the box.  There is actually nothing special you can do to it (but in versions of BZFlag from 2.0.8 up, you can do a lot more to it).  Here is an example of a box:&lt;br /&gt;
&lt;br /&gt;
 box&lt;br /&gt;
   name box1             # Optional, but good to include&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   rotation 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the first line, notice the word &amp;quot;box&amp;quot;.  It simply says the next object is a box.  The next line is the name of the object.  It is defined with the syntax &amp;quot;&amp;lt;tt&amp;gt;name &#039;&#039;objectName&#039;&#039;&amp;lt;/tt&amp;gt;&amp;quot;.  It is not required, but is good to include (if you have a LOT of boxes, how do you know which is which?  Naming them--as well as other objects--helps you keep track).  The third line defines the position of the center of the bottom of the object.  The three arguments of &amp;lt;tt&amp;gt;position&amp;lt;/tt&amp;gt; are the x, y, and z coordinates of the box, respectively.  The x and y coordinates can be positive or negative, but the z coordinate should just be positive or zero.  On the fourth line, the size of the box is defined.  The arguments of &amp;lt;tt&amp;gt;size&amp;lt;/tt&amp;gt; are the x, y, and z sizes of the object, respectively.  The x and y arguments make the box that wide on both sides of it&#039;s position.  However, the z argument makes the object exactly the number of units tall as defined.  In other words, the box shown above, with a size of &#039;10 10 10&#039; is actually 20 units by 20 units by 10 units high, so if you want a box that is a perfect cube, you would need to make the height, or Z dimension, &#039;20&#039;. The next line just says how much the object is rotated.  This number is the number of degrees of rotation, and can be negative or positive.  The last line just tells BZFlag the object is done, and a new one can be defined.  Be sure to &#039;&#039;&#039;always&#039;&#039;&#039; use this.&lt;br /&gt;
&lt;br /&gt;
===The Cone===&lt;br /&gt;
Most objects have similar parameters as the basic box.  For instance, the code for a cone may look something like this:&lt;br /&gt;
&lt;br /&gt;
 cone&lt;br /&gt;
   name cone1&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 20&lt;br /&gt;
   divisions 128&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Divisions basically decide how smooth the cone is.  The higher the divisions the more smooth the cone is.  A division of 4 would look like a pyramid.  Another parameter that can be added to the cone object is angle. If you say angle 180, that would make 1/2 of a cone, 90 would make 1/4 of a cone, and so on. &lt;br /&gt;
&lt;br /&gt;
===The Arc===&lt;br /&gt;
&lt;br /&gt;
An arc is basically a cylinder. However it doesn’t have to be a perfect cylinder depending on certain options you select. For an arc the only required options are divisions, position and size. Just like the cone divisions have the same effect, position and size are all the same. Once again you can have an oval shaped cylinder type thing. Now, you WILL find more options to an arc than to a cone, for example the ratio option. The ratio options let you basically put a hole in the cylinder. So if you have the option: ratio 1 you would have a full cylinder. If you say for example ratio .3 or any number less than 1 you will get a whole in the cylinder. The bigger the number, the smaller the hole. Angle allows you to do a simi-circle. Rotation once again isn&#039;t really needed. all the options like spin and shear are the same for this object too! phydrv and matref I’ll show later. Let’s move to the sphere &lt;br /&gt;
&lt;br /&gt;
===The Sphere===&lt;br /&gt;
&lt;br /&gt;
The only options required to make a sphere are position, size, and divisions. &lt;br /&gt;
All these options do the same thing as they did in the objects above.  You may also have an oval like sphere.  You make an oval like sphere simply by making the x and y&#039;s different sizes just like in the cone and arc.  The radius option is just a substitute for size.  You can write size 10 10 10 or radius 10.  Both do the same thing. However if you want an oval shaped sphere you have to use size.  Rotation wouldn&#039;t really have an effect and the shear and spin works the same for this object.&lt;br /&gt;
&lt;br /&gt;
==Getting more help==&lt;br /&gt;
*The links at the bottom of the [[:Category:Map Making|Map Making]] page.&lt;br /&gt;
*The original creator of this page is flight, you can email him at dirtbikerdude_91@yahoo.com and he will be happy to answer any questions that he is capable of answering.&lt;br /&gt;
&lt;br /&gt;
==Special Objects==&lt;br /&gt;
There are certain objects that are often coded by hand because it is simpler or it is impossible to do with graphical map creation tools.  &lt;br /&gt;
&lt;br /&gt;
===Materials ===&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_bolt.png &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
Material is letting the computer know that a material is about to be explained to it.  You name it so that way you can reference it with the matref.  The name can be any thing you want as long as it does not have any spaces.  You type in &amp;lt;tt&amp;gt;addtexture&amp;lt;/tt&amp;gt; and you state a texture name.  Now, how do you know what texture names there are to use?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Linux&#039;&#039;&#039;: Running &amp;lt;tt&amp;gt;ls /usr/share/bzflag/*.png&amp;lt;/tt&amp;gt; in a terminal will show the list of pictures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Mac&#039;&#039;&#039;: If you control click (right click) on the bzflag icon, click show package contents, click contents, and click resources, those are the pictures you may use. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Windows&#039;&#039;&#039;: The default path is &amp;lt;tt&amp;gt;C:\Program Files\BZFlag\data\*.png&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What you will find are images that are used in every day games.  The top of a base, the wall of a base. A bullet which is blue_bolt.png (as was used above).  The full path to the texture needs to be used if the texture is not found in that directory.  Any customized textures should be uploaded to the [http://images.bzflag.org/submitimages/ BZFlag Image Submission System] before the map is hosted publicly.&lt;br /&gt;
&lt;br /&gt;
Servers running bzfs 2.0.8 and earlier will require &amp;quot;meshbox&amp;quot; and &amp;quot;meshpyr&amp;quot; in order to apply textures and physics to these objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instead of creating a new texture, many interesting and creative things can be done with the &amp;quot;diffuse&amp;quot; parameter in the material object.  You can add the diffuse command and it will look like this diffuse 1 1 1 1.  The first number is the amount of red that will be in the meshobject.  The second number is the amount of green, the third is the amount of blue.  So you can mix those colors to make more colors.  You may use a range from 0-1.  For example diffuse .3 .5 .26 1.  The fourth number determines the opacity or transparency (the see-throughability).  0 is invisible, .5 is half invisible, and 1 is normal. &lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   diffuse .5 .25 .1 .6 &lt;br /&gt;
   addtexture mesh.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Physics===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Physics make your tank behave in different ways.  If you have ever played laser mania by Louman than you know on the outskirts of the map there is something you can jump on and you go really fast, that is a physics. Physics and materials work the same way.  Physics is to material as phydrv is to matref.  You must specify a physics then on a meshbox, meshpyr cone arc sphere or whatever, you can reference that physics by using the phydrv command just like you would use the matref command for materials.  There are different physics commands.  Linear, angular, slide and death.  In the Louman map I mentioned above is a linear physics.  Linear physics makes your tank move in a line.  The numbers after a linear command are just like position x y z.  Example:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   linear 50 0 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive x direction you may use -50 and it will make it go the other way.&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy2 &lt;br /&gt;
   linear 0 50 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive y direction &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy3 &lt;br /&gt;
   linear 0 0 50 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank jump at a speed of 50 &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy4 &lt;br /&gt;
   slide 5 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank basically feel like it&#039;s on ice.  Whichever way the tank is moving it will keep moving that way. &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy5 &lt;br /&gt;
   death haha! you died &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make the tank die when it touches the object that refers to this and the message haha! you died will be displayed to that person. &lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   death I like you better dead! &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   phydrv phy1                       # Or what ever you named the physics.&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This works just like the material &lt;br /&gt;
&lt;br /&gt;
The thing about physics and materials is that they have to be written before they are referenced. &lt;br /&gt;
&lt;br /&gt;
This &#039;&#039;&#039;won&#039;t&#039;&#039;&#039; work &lt;br /&gt;
&lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_team.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
A group is a defined group of objects that can be called to gether as one.&lt;br /&gt;
&lt;br /&gt;
For example if a map editor is makeing a forest, and each tree contains 2 objects, the editor doesn&#039;t want to type up the code for each tree over and over again. What he can do is tell BZFS that these objects = tree. and then whenever he wants to make a tree he just types tree.&lt;br /&gt;
&lt;br /&gt;
Example-----------&lt;br /&gt;
&lt;br /&gt;
first define a group of obects as a tree &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  define tree&lt;br /&gt;
  &lt;br /&gt;
  box&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  size 2 2 4&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  pyramid&lt;br /&gt;
  position 0 0 3&lt;br /&gt;
  size 5 5 10&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  enddef&lt;br /&gt;
&lt;br /&gt;
then to add a tree simpily type&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  group tree&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
==Transformations==&lt;br /&gt;
[[Category:Map Making]]&lt;br /&gt;
Transformations are simple ways of modifying objects so that maps have some variety. These can get complicated so I will only give you a sample of what they can do. There are 3 transformations shift, spin, and shear. You can find a different also helpful page here [[3d Transformations]]&lt;br /&gt;
&lt;br /&gt;
The one is will tell you about is &#039;&#039;&#039;Shift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shift&#039;&#039;&#039; moves an object by the amount of units that you specify from its present position.&lt;br /&gt;
the object..&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at place 10 10 0&lt;br /&gt;
&lt;br /&gt;
while the object..&lt;br /&gt;
&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  shift 0 0 10&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at position 10 10 10.&lt;br /&gt;
&lt;br /&gt;
====Spin====&lt;br /&gt;
Spinning an object is just like rotating an object but can be on a different axis. (y and x)&lt;br /&gt;
When you rotate it is around the center of the object.&lt;br /&gt;
Remember: Only spin-able objects can be spun.&lt;br /&gt;
Here is what the code looks like:&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
 end&lt;br /&gt;
The meshbox will now be tilted 45 degrees on its y axis.&lt;br /&gt;
Spin code has four numbers, the first one is how many degrees to spin.&lt;br /&gt;
The last three are for which axis&#039;s to spin, by placing a value of more than 0.&lt;/div&gt;</summary>
		<author><name>ClayOgre</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7340</id>
		<title>Map making by hand</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7340"/>
		<updated>2010-11-06T00:06:29Z</updated>

		<summary type="html">&lt;p&gt;ClayOgre: /* Sample Objects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoDoc|Major re-organization, transform away from &amp;quot;chat&amp;quot; style. Need to reference pages elsewhere on the wiki in place of much of the content which appears to be building up here.  Create them if necessary, or see the list [[Special:Allpages|here]].}}&lt;br /&gt;
Although there are a number of GUI options for creating maps such as BZ-Edit, 3D modelers, many map-makers use a basic text-editor.  There are many times when it is necessary to make small changes to a map, such as including objects that are unavailable in GUI map-maker, but there are also some who enjoy the challenge of creating a map entirely from scratch with a text-editor.&lt;br /&gt;
&lt;br /&gt;
==Text Editors==&lt;br /&gt;
Most text-editors designed for coding/programming are more than sufficient for editing bzw files.  Although word-processing programs such as Microsoft Word can be used, there are many cheaper (free) and more efficient programs designed specifically for coding. If you are interested in syntax highlighting, look at the [http://my.bzflag.org/bb/viewtopic.php?f=24&amp;amp;t=16037&amp;amp;p=148953 forum topic].&lt;br /&gt;
===Windows===&lt;br /&gt;
*Notepad&lt;br /&gt;
*PSPad&lt;br /&gt;
*NoteTab&lt;br /&gt;
*[http://notepad-plus-plus.org/ Notepad ++] - a tabbed editor based on Scite.&lt;br /&gt;
&lt;br /&gt;
===Mac===&lt;br /&gt;
*TextWrangler&lt;br /&gt;
*TextEdit&lt;br /&gt;
===Linux===&lt;br /&gt;
*Command-line editors such as nano, emacs, pico, vim, or ed.&lt;br /&gt;
*GEdit&lt;br /&gt;
*Kate&lt;br /&gt;
*Scite&lt;br /&gt;
&lt;br /&gt;
==Editing existing maps==&lt;br /&gt;
Beginning mapmakers should spend some time studying and making small changes in existing maps to see how things work.  In the client, maps can be saved for editing by joining the desired server and choosing: Options&amp;gt;Save World.  Maps can also be saved by issuing the /saveworld command.  The map should be a simple map when getting started.  One may find it easier to create a file in BZEdit and open the resulting file in the text-editor.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
If you have created a box in BZEdit you may see:&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
 world &lt;br /&gt;
   size 400 &lt;br /&gt;
 end &lt;br /&gt;
 options &lt;br /&gt;
   +r &lt;br /&gt;
   -j &lt;br /&gt;
   -set _tankSpeed 25 &lt;br /&gt;
   -ms 5 &lt;br /&gt;
   -mp 0,2,0,2,0,2 &lt;br /&gt;
 end &lt;br /&gt;
 box &lt;br /&gt;
   name box1 &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
 end &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===What that means===&lt;br /&gt;
&amp;quot;There are set variables that define various things such as how fast your tank is, how fast the bullets are, or if it&#039;s raining or foggy.  Put those in the options setting with &amp;quot;-set(space) &amp;quot; in front of it. You can also make those changes as an admin by using /set _variable (notice there is a space between the set and the _).  A full list of these settings can be found on the [[Server Variables]] page.  Other options, such as how many times a flag can be grabbed before it resets or if flags can land on buildings are explained [http://my.bzflag.org/bb/files/antigrav4teamconf_114.txt in this forum post]&lt;br /&gt;
Optionally, the variables can be placed in a separate configuration file and referenced when the server is started.&amp;quot;&lt;br /&gt;
&#039;&#039;&#039;old&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, it says:&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
(Note: the # sign is used for comments.)&lt;br /&gt;
&lt;br /&gt;
This is the text added by the application initially, kind of like advertising. This will be the first thing anyone sees when they look at the map.&lt;br /&gt;
&lt;br /&gt;
The next thing is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
world &lt;br /&gt;
  size 400 # Sets the world size to 400 (800 x 800 total)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is rather self-explanatory. It&#039;s the &amp;lt;size&amp;gt; of the &amp;lt;world&amp;gt; (The BZFlag arena).&lt;br /&gt;
&lt;br /&gt;
Next is an &amp;lt;options&amp;gt; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options &lt;br /&gt;
  +r   # Enable Ricochet&lt;br /&gt;
  -j   # Enable Jumping&lt;br /&gt;
  -set _tankSpeed 25  # Sets the tank speed to 25 bzunits/second&lt;br /&gt;
  -ms 5  # Sets the maximum shots (per tank) to 5&lt;br /&gt;
  -mp 0,2,0,2,0,2  # Maximum of 2 Red Players, 2 Blue Players, and 2 Observers&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This allows you to define in the map file certain options that are also available from the command line when you start the bzfs server, or in the optional server config file.  Options embedded into a world file will override those input on the command line or in a config file.&lt;br /&gt;
&lt;br /&gt;
The commands listed here are:&lt;br /&gt;
Ricochet, Jumping, Tank speed, Max Shots, and Max Players.&lt;br /&gt;
These are rather self explanatory, except for Max Players. Each number represents how many of each of the following team players are allowed in the game (in the order listed): Rogue, Red, Green, Blue, Purple, Observer. Each number defines the max number of players per category.&lt;br /&gt;
&lt;br /&gt;
For more, see [[Options_(object)|Options Object]].&lt;br /&gt;
&lt;br /&gt;
We now come to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
box &lt;br /&gt;
  name box1      # Generally unused&lt;br /&gt;
  position 0 0 0 # X Y Z Position&lt;br /&gt;
  size 10 10 10  # X Y Z Size (bzunits from the position of the box)&lt;br /&gt;
  rotation 0     # Rotation (in degrees)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is a &amp;lt;box&amp;gt; with a &amp;lt;name&amp;gt; of &amp;lt;box1&amp;gt;.&lt;br /&gt;
The &amp;lt;position&amp;gt; is 0,0,0 in R3[http://en.wikipedia.org/wiki/R3].&lt;br /&gt;
The rest is pretty self explanatory.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; EVERY STATEMENT MUST HAVE AN END.&lt;br /&gt;
&lt;br /&gt;
===Basic Definitions===&lt;br /&gt;
;Objects&lt;br /&gt;
:Objects are the basic building blocks of the bzw file.  Objects begin with a line declaring the object, some fields describing that object, and a line that closes the object (usually with &amp;quot;end&amp;quot;).  Each of these sections of the object is important.&lt;br /&gt;
;Comments&lt;br /&gt;
:BZFS ignores anything in a line following the #; the line has been &amp;quot;commented out.&amp;quot;  It is highly recommended that comments be used often, both for the mapmaker and for others that may see the map.&lt;br /&gt;
;3D Cartesian Coordinate System&lt;br /&gt;
:In most objects, you will see three numbers after position and size. These numbers are coordinates on a graph. The first number is the x coordinate (left and right) the middle number is the y coordinate (forward and backward) and the third number is the z coordinate (height and depth). Another way of thinking of it is: x = width, y = depth, z = height. (Those accustomed to the Y axis determining height will have to slightly adjust their thinking.) &lt;br /&gt;
&lt;br /&gt;
==Sample Objects==&lt;br /&gt;
===The Box===&lt;br /&gt;
Perhaps the simplest object is the box.  There is actually nothing special you can do to it (but in versions of BZFlag from 2.0.8 up, you can do a lot more to it).  Here is an example of a box:&lt;br /&gt;
&lt;br /&gt;
 box&lt;br /&gt;
   name box1             # Optional, but good to include&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   rotation 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the first line, notice the word &amp;quot;box&amp;quot;.  It simply says the next object is a box.  The next line is the name of the object.  It is defined with the syntax &amp;quot;&amp;lt;tt&amp;gt;name &#039;&#039;objectName&#039;&#039;&amp;lt;/tt&amp;gt;&amp;quot;.  It is not required, but is good to include (if you have a LOT of boxes, how do you know which is which?  Naming them--as well as other objects--helps you keep track).  The third line defines the position of the center of the bottom of the object.  The three arguments of &amp;lt;tt&amp;gt;position&amp;lt;/tt&amp;gt; are the x, y, and z coordinates of the box, respectively.  The x and y coordinates can be positive or negative, but the z coordinate should just be positive or zero.  On the fourth line, the size of the box is defined.  The arguments of &amp;lt;tt&amp;gt;size&amp;lt;/tt&amp;gt; are the x, y, and z sizes of the object, respectively.  The x and y arguments make the box that wide on both sides of it&#039;s position.  However, the z argument makes the object exactly the number of units tall as defined.  In other words the box shown above, with a size of &#039;10 10 10&#039; is actually 20 units by 20 units by 10 units high, so if you want a box that is a perfect cube, you would need to make the height, or Z dimension, &#039;20&#039;. The next line just says how much the object is rotated.  This number is the number of degrees of rotation, and can be negative or positive.  The last line just tells BZFlag the object is done, and a new one can be defined.  Be sure to &#039;&#039;&#039;always&#039;&#039;&#039; use this.&lt;br /&gt;
&lt;br /&gt;
===The Cone===&lt;br /&gt;
Most objects have similar parameters as the basic box.  For instance, the code for a cone may look something like this:&lt;br /&gt;
&lt;br /&gt;
 cone&lt;br /&gt;
   name cone1&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 20&lt;br /&gt;
   divisions 128&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Divisions basically decide how smooth the cone is.  The higher the divisions the more smooth the cone is.  A division of 4 would look like a pyramid.  Another parameter that can be added to the cone object is angle. If you say angle 180, that would make 1/2 of a cone, 90 would make 1/4 of a cone, and so on. &lt;br /&gt;
&lt;br /&gt;
===The Arc===&lt;br /&gt;
&lt;br /&gt;
An arc is basically a cylinder. However it doesn’t have to be a perfect cylinder depending on certain options you select. For an arc the only required options are divisions, position and size. Just like the cone divisions have the same effect, position and size are all the same. Once again you can have an oval shaped cylinder type thing. Now, you WILL find more options to an arc than to a cone, for example the ratio option. The ratio options let you basically put a hole in the cylinder. So if you have the option: ratio 1 you would have a full cylinder. If you say for example ratio .3 or any number less than 1 you will get a whole in the cylinder. The bigger the number, the smaller the hole. Angle allows you to do a simi-circle. Rotation once again isn&#039;t really needed. all the options like spin and shear are the same for this object too! phydrv and matref I’ll show later. Let’s move to the sphere &lt;br /&gt;
&lt;br /&gt;
===The Sphere===&lt;br /&gt;
&lt;br /&gt;
The only options required to make a sphere are position, size, and divisions. &lt;br /&gt;
All these options do the same thing as they did in the objects above.  You may also have an oval like sphere.  You make an oval like sphere simply by making the x and y&#039;s different sizes just like in the cone and arc.  The radius option is just a substitute for size.  You can write size 10 10 10 or radius 10.  Both do the same thing. However if you want an oval shaped sphere you have to use size.  Rotation wouldn&#039;t really have an effect and the shear and spin works the same for this object.&lt;br /&gt;
&lt;br /&gt;
==Getting more help==&lt;br /&gt;
*The links at the bottom of the [[:Category:Map Making|Map Making]] page.&lt;br /&gt;
*The original creator of this page is flight, you can email him at dirtbikerdude_91@yahoo.com and he will be happy to answer any questions that he is capable of answering.&lt;br /&gt;
&lt;br /&gt;
==Special Objects==&lt;br /&gt;
There are certain objects that are often coded by hand because it is simpler or it is impossible to do with graphical map creation tools.  &lt;br /&gt;
&lt;br /&gt;
===Materials ===&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_bolt.png &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
Material is letting the computer know that a material is about to be explained to it.  You name it so that way you can reference it with the matref.  The name can be any thing you want as long as it does not have any spaces.  You type in &amp;lt;tt&amp;gt;addtexture&amp;lt;/tt&amp;gt; and you state a texture name.  Now, how do you know what texture names there are to use?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Linux&#039;&#039;&#039;: Running &amp;lt;tt&amp;gt;ls /usr/share/bzflag/*.png&amp;lt;/tt&amp;gt; in a terminal will show the list of pictures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Mac&#039;&#039;&#039;: If you control click (right click) on the bzflag icon, click show package contents, click contents, and click resources, those are the pictures you may use. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Windows&#039;&#039;&#039;: The default path is &amp;lt;tt&amp;gt;C:\Program Files\BZFlag\data\*.png&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What you will find are images that are used in every day games.  The top of a base, the wall of a base. A bullet which is blue_bolt.png (as was used above).  The full path to the texture needs to be used if the texture is not found in that directory.  Any customized textures should be uploaded to the [http://images.bzflag.org/submitimages/ BZFlag Image Submission System] before the map is hosted publicly.&lt;br /&gt;
&lt;br /&gt;
Servers running bzfs 2.0.8 and earlier will require &amp;quot;meshbox&amp;quot; and &amp;quot;meshpyr&amp;quot; in order to apply textures and physics to these objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instead of creating a new texture, many interesting and creative things can be done with the &amp;quot;diffuse&amp;quot; parameter in the material object.  You can add the diffuse command and it will look like this diffuse 1 1 1 1.  The first number is the amount of red that will be in the meshobject.  The second number is the amount of green, the third is the amount of blue.  So you can mix those colors to make more colors.  You may use a range from 0-1.  For example diffuse .3 .5 .26 1.  The fourth number determines the opacity or transparency (the see-throughability).  0 is invisible, .5 is half invisible, and 1 is normal. &lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   diffuse .5 .25 .1 .6 &lt;br /&gt;
   addtexture mesh.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Physics===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Physics make your tank behave in different ways.  If you have ever played laser mania by Louman than you know on the outskirts of the map there is something you can jump on and you go really fast, that is a physics. Physics and materials work the same way.  Physics is to material as phydrv is to matref.  You must specify a physics then on a meshbox, meshpyr cone arc sphere or whatever, you can reference that physics by using the phydrv command just like you would use the matref command for materials.  There are different physics commands.  Linear, angular, slide and death.  In the Louman map I mentioned above is a linear physics.  Linear physics makes your tank move in a line.  The numbers after a linear command are just like position x y z.  Example:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   linear 50 0 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive x direction you may use -50 and it will make it go the other way.&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy2 &lt;br /&gt;
   linear 0 50 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive y direction &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy3 &lt;br /&gt;
   linear 0 0 50 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank jump at a speed of 50 &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy4 &lt;br /&gt;
   slide 5 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank basically feel like it&#039;s on ice.  Whichever way the tank is moving it will keep moving that way. &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy5 &lt;br /&gt;
   death haha! you died &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make the tank die when it touches the object that refers to this and the message haha! you died will be displayed to that person. &lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   death I like you better dead! &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   phydrv phy1                       # Or what ever you named the physics.&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This works just like the material &lt;br /&gt;
&lt;br /&gt;
The thing about physics and materials is that they have to be written before they are referenced. &lt;br /&gt;
&lt;br /&gt;
This &#039;&#039;&#039;won&#039;t&#039;&#039;&#039; work &lt;br /&gt;
&lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_team.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
A group is a defined group of objects that can be called to gether as one.&lt;br /&gt;
&lt;br /&gt;
For example if a map editor is makeing a forest, and each tree contains 2 objects, the editor doesn&#039;t want to type up the code for each tree over and over again. What he can do is tell BZFS that these objects = tree. and then whenever he wants to make a tree he just types tree.&lt;br /&gt;
&lt;br /&gt;
Example-----------&lt;br /&gt;
&lt;br /&gt;
first define a group of obects as a tree &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  define tree&lt;br /&gt;
  &lt;br /&gt;
  box&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  size 2 2 4&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  pyramid&lt;br /&gt;
  position 0 0 3&lt;br /&gt;
  size 5 5 10&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  enddef&lt;br /&gt;
&lt;br /&gt;
then to add a tree simpily type&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  group tree&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
==Transformations==&lt;br /&gt;
[[Category:Map Making]]&lt;br /&gt;
Transformations are simple ways of modifying objects so that maps have some variety. These can get complicated so I will only give you a sample of what they can do. There are 3 transformations shift, spin, and shear. You can find a different also helpful page here [[3d Transformations]]&lt;br /&gt;
&lt;br /&gt;
The one is will tell you about is &#039;&#039;&#039;Shift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shift&#039;&#039;&#039; moves an object by the amount of units that you specify from its present position.&lt;br /&gt;
the object..&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at place 10 10 0&lt;br /&gt;
&lt;br /&gt;
while the object..&lt;br /&gt;
&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  shift 0 0 10&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at position 10 10 10.&lt;br /&gt;
&lt;br /&gt;
====Spin====&lt;br /&gt;
Spinning an object is just like rotating an object but can be on a different axis. (y and x)&lt;br /&gt;
When you rotate it is around the center of the object.&lt;br /&gt;
Remember: Only spin-able objects can be spun.&lt;br /&gt;
Here is what the code looks like:&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
 end&lt;br /&gt;
The meshbox will now be tilted 45 degrees on its y axis.&lt;br /&gt;
Spin code has four numbers, the first one is how many degrees to spin.&lt;br /&gt;
The last three are for which axis&#039;s to spin, by placing a value of more than 0.&lt;/div&gt;</summary>
		<author><name>ClayOgre</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7339</id>
		<title>Map making by hand</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7339"/>
		<updated>2010-11-06T00:05:15Z</updated>

		<summary type="html">&lt;p&gt;ClayOgre: /* The Box */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoDoc|Major re-organization, transform away from &amp;quot;chat&amp;quot; style. Need to reference pages elsewhere on the wiki in place of much of the content which appears to be building up here.  Create them if necessary, or see the list [[Special:Allpages|here]].}}&lt;br /&gt;
Although there are a number of GUI options for creating maps such as BZ-Edit, 3D modelers, many map-makers use a basic text-editor.  There are many times when it is necessary to make small changes to a map, such as including objects that are unavailable in GUI map-maker, but there are also some who enjoy the challenge of creating a map entirely from scratch with a text-editor.&lt;br /&gt;
&lt;br /&gt;
==Text Editors==&lt;br /&gt;
Most text-editors designed for coding/programming are more than sufficient for editing bzw files.  Although word-processing programs such as Microsoft Word can be used, there are many cheaper (free) and more efficient programs designed specifically for coding. If you are interested in syntax highlighting, look at the [http://my.bzflag.org/bb/viewtopic.php?f=24&amp;amp;t=16037&amp;amp;p=148953 forum topic].&lt;br /&gt;
===Windows===&lt;br /&gt;
*Notepad&lt;br /&gt;
*PSPad&lt;br /&gt;
*NoteTab&lt;br /&gt;
*[http://notepad-plus-plus.org/ Notepad ++] - a tabbed editor based on Scite.&lt;br /&gt;
&lt;br /&gt;
===Mac===&lt;br /&gt;
*TextWrangler&lt;br /&gt;
*TextEdit&lt;br /&gt;
===Linux===&lt;br /&gt;
*Command-line editors such as nano, emacs, pico, vim, or ed.&lt;br /&gt;
*GEdit&lt;br /&gt;
*Kate&lt;br /&gt;
*Scite&lt;br /&gt;
&lt;br /&gt;
==Editing existing maps==&lt;br /&gt;
Beginning mapmakers should spend some time studying and making small changes in existing maps to see how things work.  In the client, maps can be saved for editing by joining the desired server and choosing: Options&amp;gt;Save World.  Maps can also be saved by issuing the /saveworld command.  The map should be a simple map when getting started.  One may find it easier to create a file in BZEdit and open the resulting file in the text-editor.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
If you have created a box in BZEdit you may see:&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
 world &lt;br /&gt;
   size 400 &lt;br /&gt;
 end &lt;br /&gt;
 options &lt;br /&gt;
   +r &lt;br /&gt;
   -j &lt;br /&gt;
   -set _tankSpeed 25 &lt;br /&gt;
   -ms 5 &lt;br /&gt;
   -mp 0,2,0,2,0,2 &lt;br /&gt;
 end &lt;br /&gt;
 box &lt;br /&gt;
   name box1 &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
 end &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===What that means===&lt;br /&gt;
&amp;quot;There are set variables that define various things such as how fast your tank is, how fast the bullets are, or if it&#039;s raining or foggy.  Put those in the options setting with &amp;quot;-set(space) &amp;quot; in front of it. You can also make those changes as an admin by using /set _variable (notice there is a space between the set and the _).  A full list of these settings can be found on the [[Server Variables]] page.  Other options, such as how many times a flag can be grabbed before it resets or if flags can land on buildings are explained [http://my.bzflag.org/bb/files/antigrav4teamconf_114.txt in this forum post]&lt;br /&gt;
Optionally, the variables can be placed in a separate configuration file and referenced when the server is started.&amp;quot;&lt;br /&gt;
&#039;&#039;&#039;old&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, it says:&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
(Note: the # sign is used for comments.)&lt;br /&gt;
&lt;br /&gt;
This is the text added by the application initially, kind of like advertising. This will be the first thing anyone sees when they look at the map.&lt;br /&gt;
&lt;br /&gt;
The next thing is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
world &lt;br /&gt;
  size 400 # Sets the world size to 400 (800 x 800 total)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is rather self-explanatory. It&#039;s the &amp;lt;size&amp;gt; of the &amp;lt;world&amp;gt; (The BZFlag arena).&lt;br /&gt;
&lt;br /&gt;
Next is an &amp;lt;options&amp;gt; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options &lt;br /&gt;
  +r   # Enable Ricochet&lt;br /&gt;
  -j   # Enable Jumping&lt;br /&gt;
  -set _tankSpeed 25  # Sets the tank speed to 25 bzunits/second&lt;br /&gt;
  -ms 5  # Sets the maximum shots (per tank) to 5&lt;br /&gt;
  -mp 0,2,0,2,0,2  # Maximum of 2 Red Players, 2 Blue Players, and 2 Observers&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This allows you to define in the map file certain options that are also available from the command line when you start the bzfs server, or in the optional server config file.  Options embedded into a world file will override those input on the command line or in a config file.&lt;br /&gt;
&lt;br /&gt;
The commands listed here are:&lt;br /&gt;
Ricochet, Jumping, Tank speed, Max Shots, and Max Players.&lt;br /&gt;
These are rather self explanatory, except for Max Players. Each number represents how many of each of the following team players are allowed in the game (in the order listed): Rogue, Red, Green, Blue, Purple, Observer. Each number defines the max number of players per category.&lt;br /&gt;
&lt;br /&gt;
For more, see [[Options_(object)|Options Object]].&lt;br /&gt;
&lt;br /&gt;
We now come to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
box &lt;br /&gt;
  name box1      # Generally unused&lt;br /&gt;
  position 0 0 0 # X Y Z Position&lt;br /&gt;
  size 10 10 10  # X Y Z Size (bzunits from the position of the box)&lt;br /&gt;
  rotation 0     # Rotation (in degrees)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is a &amp;lt;box&amp;gt; with a &amp;lt;name&amp;gt; of &amp;lt;box1&amp;gt;.&lt;br /&gt;
The &amp;lt;position&amp;gt; is 0,0,0 in R3[http://en.wikipedia.org/wiki/R3].&lt;br /&gt;
The rest is pretty self explanatory.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; EVERY STATEMENT MUST HAVE AN END.&lt;br /&gt;
&lt;br /&gt;
===Basic Definitions===&lt;br /&gt;
;Objects&lt;br /&gt;
:Objects are the basic building blocks of the bzw file.  Objects begin with a line declaring the object, some fields describing that object, and a line that closes the object (usually with &amp;quot;end&amp;quot;).  Each of these sections of the object is important.&lt;br /&gt;
;Comments&lt;br /&gt;
:BZFS ignores anything in a line following the #; the line has been &amp;quot;commented out.&amp;quot;  It is highly recommended that comments be used often, both for the mapmaker and for others that may see the map.&lt;br /&gt;
;3D Cartesian Coordinate System&lt;br /&gt;
:In most objects, you will see three numbers after position and size. These numbers are coordinates on a graph. The first number is the x coordinate (left and right) the middle number is the y coordinate (forward and backward) and the third number is the z coordinate (height and depth). Another way of thinking of it is: x = width, y = depth, z = height. (Those accustomed to the Y axis determining height will have to slightly adjust their thinking.) &lt;br /&gt;
&lt;br /&gt;
==Sample Objects==&lt;br /&gt;
===The Box===&lt;br /&gt;
Perhaps the simplest object is the box.  There is actually nothing special you can do to it (but in versions of BZFlag from 2.0.8 up, you can do a lot more to it).  Here is an example of a box:&lt;br /&gt;
&lt;br /&gt;
 box&lt;br /&gt;
   name box1             # Optional, but good to include&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   rotation 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the first line, notice the word &amp;quot;box&amp;quot;.  It simply says the next object is a box.  The next line is the name of the object.  It is defined with the syntax &amp;quot;&amp;lt;tt&amp;gt;name &#039;&#039;objectName&#039;&#039;&amp;lt;/tt&amp;gt;&amp;quot;.  It is not required, but is good to include (if you have a LOT of boxes, how do you know which is which?  Naming them--as well as other objects--helps you keep track).  The third line defines the position of the center of the bottom of the object.  The three arguments of &amp;lt;tt&amp;gt;position&amp;lt;/tt&amp;gt; are the x, y, and z coordinates of the box, respectively.  The x and y coordinates can be positive or negative, but the z coordinate should just be positive or zero.  On the fourth line, the size of the box is defined.  The arguments of &amp;lt;tt&amp;gt;size&amp;lt;/tt&amp;gt; are the x, y, and z sizes of the object, respectively.  The x and y arguments make the box that wide on both sides of it&#039;s position (in other words the box shown above, with a size of &#039;10 10 10&#039; is actually 20 units by 20 units by 10 units high, so if you want a box that is a perfect cube, you would need to make the height, or Z dimension, &#039;20&#039;.).  However, the z argument makes the object exactly the number of units tall as defined.  The next line just says how much the object is rotated.  This number is the number of degrees of rotation, and can be negative or positive.  The last line just tells BZFlag the object is done, and a new one can be defined.  Be sure to &#039;&#039;&#039;always&#039;&#039;&#039; use this.&lt;br /&gt;
&lt;br /&gt;
===The Cone===&lt;br /&gt;
Most objects have similar parameters as the basic box.  For instance, the code for a cone may look something like this:&lt;br /&gt;
&lt;br /&gt;
 cone&lt;br /&gt;
   name cone1&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 20&lt;br /&gt;
   divisions 128&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Divisions basically decide how smooth the cone is.  The higher the divisions the more smooth the cone is.  A division of 4 would look like a pyramid.  Another parameter that can be added to the cone object is angle. If you say angle 180, that would make 1/2 of a cone, 90 would make 1/4 of a cone, and so on. &lt;br /&gt;
&lt;br /&gt;
===The Arc===&lt;br /&gt;
&lt;br /&gt;
An arc is basically a cylinder. However it doesn’t have to be a perfect cylinder depending on certain options you select. For an arc the only required options are divisions, position and size. Just like the cone divisions have the same effect, position and size are all the same. Once again you can have an oval shaped cylinder type thing. Now, you WILL find more options to an arc than to a cone, for example the ratio option. The ratio options let you basically put a hole in the cylinder. So if you have the option: ratio 1 you would have a full cylinder. If you say for example ratio .3 or any number less than 1 you will get a whole in the cylinder. The bigger the number, the smaller the hole. Angle allows you to do a simi-circle. Rotation once again isn&#039;t really needed. all the options like spin and shear are the same for this object too! phydrv and matref I’ll show later. Let’s move to the sphere &lt;br /&gt;
&lt;br /&gt;
===The Sphere===&lt;br /&gt;
&lt;br /&gt;
The only options required to make a sphere are position, size, and divisions. &lt;br /&gt;
All these options do the same thing as they did in the objects above.  You may also have an oval like sphere.  You make an oval like sphere simply by making the x and y&#039;s different sizes just like in the cone and arc.  The radius option is just a substitute for size.  You can write size 10 10 10 or radius 10.  Both do the same thing. However if you want an oval shaped sphere you have to use size.  Rotation wouldn&#039;t really have an effect and the shear and spin works the same for this object.&lt;br /&gt;
&lt;br /&gt;
==Getting more help==&lt;br /&gt;
*The links at the bottom of the [[:Category:Map Making|Map Making]] page.&lt;br /&gt;
*The original creator of this page is flight, you can email him at dirtbikerdude_91@yahoo.com and he will be happy to answer any questions that he is capable of answering.&lt;br /&gt;
&lt;br /&gt;
==Special Objects==&lt;br /&gt;
There are certain objects that are often coded by hand because it is simpler or it is impossible to do with graphical map creation tools.  &lt;br /&gt;
&lt;br /&gt;
===Materials ===&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_bolt.png &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
Material is letting the computer know that a material is about to be explained to it.  You name it so that way you can reference it with the matref.  The name can be any thing you want as long as it does not have any spaces.  You type in &amp;lt;tt&amp;gt;addtexture&amp;lt;/tt&amp;gt; and you state a texture name.  Now, how do you know what texture names there are to use?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Linux&#039;&#039;&#039;: Running &amp;lt;tt&amp;gt;ls /usr/share/bzflag/*.png&amp;lt;/tt&amp;gt; in a terminal will show the list of pictures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Mac&#039;&#039;&#039;: If you control click (right click) on the bzflag icon, click show package contents, click contents, and click resources, those are the pictures you may use. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Windows&#039;&#039;&#039;: The default path is &amp;lt;tt&amp;gt;C:\Program Files\BZFlag\data\*.png&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What you will find are images that are used in every day games.  The top of a base, the wall of a base. A bullet which is blue_bolt.png (as was used above).  The full path to the texture needs to be used if the texture is not found in that directory.  Any customized textures should be uploaded to the [http://images.bzflag.org/submitimages/ BZFlag Image Submission System] before the map is hosted publicly.&lt;br /&gt;
&lt;br /&gt;
Servers running bzfs 2.0.8 and earlier will require &amp;quot;meshbox&amp;quot; and &amp;quot;meshpyr&amp;quot; in order to apply textures and physics to these objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instead of creating a new texture, many interesting and creative things can be done with the &amp;quot;diffuse&amp;quot; parameter in the material object.  You can add the diffuse command and it will look like this diffuse 1 1 1 1.  The first number is the amount of red that will be in the meshobject.  The second number is the amount of green, the third is the amount of blue.  So you can mix those colors to make more colors.  You may use a range from 0-1.  For example diffuse .3 .5 .26 1.  The fourth number determines the opacity or transparency (the see-throughability).  0 is invisible, .5 is half invisible, and 1 is normal. &lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   diffuse .5 .25 .1 .6 &lt;br /&gt;
   addtexture mesh.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Physics===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Physics make your tank behave in different ways.  If you have ever played laser mania by Louman than you know on the outskirts of the map there is something you can jump on and you go really fast, that is a physics. Physics and materials work the same way.  Physics is to material as phydrv is to matref.  You must specify a physics then on a meshbox, meshpyr cone arc sphere or whatever, you can reference that physics by using the phydrv command just like you would use the matref command for materials.  There are different physics commands.  Linear, angular, slide and death.  In the Louman map I mentioned above is a linear physics.  Linear physics makes your tank move in a line.  The numbers after a linear command are just like position x y z.  Example:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   linear 50 0 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive x direction you may use -50 and it will make it go the other way.&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy2 &lt;br /&gt;
   linear 0 50 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive y direction &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy3 &lt;br /&gt;
   linear 0 0 50 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank jump at a speed of 50 &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy4 &lt;br /&gt;
   slide 5 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank basically feel like it&#039;s on ice.  Whichever way the tank is moving it will keep moving that way. &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy5 &lt;br /&gt;
   death haha! you died &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make the tank die when it touches the object that refers to this and the message haha! you died will be displayed to that person. &lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   death I like you better dead! &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   phydrv phy1                       # Or what ever you named the physics.&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This works just like the material &lt;br /&gt;
&lt;br /&gt;
The thing about physics and materials is that they have to be written before they are referenced. &lt;br /&gt;
&lt;br /&gt;
This &#039;&#039;&#039;won&#039;t&#039;&#039;&#039; work &lt;br /&gt;
&lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_team.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
A group is a defined group of objects that can be called to gether as one.&lt;br /&gt;
&lt;br /&gt;
For example if a map editor is makeing a forest, and each tree contains 2 objects, the editor doesn&#039;t want to type up the code for each tree over and over again. What he can do is tell BZFS that these objects = tree. and then whenever he wants to make a tree he just types tree.&lt;br /&gt;
&lt;br /&gt;
Example-----------&lt;br /&gt;
&lt;br /&gt;
first define a group of obects as a tree &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  define tree&lt;br /&gt;
  &lt;br /&gt;
  box&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  size 2 2 4&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  pyramid&lt;br /&gt;
  position 0 0 3&lt;br /&gt;
  size 5 5 10&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  enddef&lt;br /&gt;
&lt;br /&gt;
then to add a tree simpily type&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  group tree&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
==Transformations==&lt;br /&gt;
[[Category:Map Making]]&lt;br /&gt;
Transformations are simple ways of modifying objects so that maps have some variety. These can get complicated so I will only give you a sample of what they can do. There are 3 transformations shift, spin, and shear. You can find a different also helpful page here [[3d Transformations]]&lt;br /&gt;
&lt;br /&gt;
The one is will tell you about is &#039;&#039;&#039;Shift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shift&#039;&#039;&#039; moves an object by the amount of units that you specify from its present position.&lt;br /&gt;
the object..&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at place 10 10 0&lt;br /&gt;
&lt;br /&gt;
while the object..&lt;br /&gt;
&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  shift 0 0 10&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at position 10 10 10.&lt;br /&gt;
&lt;br /&gt;
====Spin====&lt;br /&gt;
Spinning an object is just like rotating an object but can be on a different axis. (y and x)&lt;br /&gt;
When you rotate it is around the center of the object.&lt;br /&gt;
Remember: Only spin-able objects can be spun.&lt;br /&gt;
Here is what the code looks like:&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
 end&lt;br /&gt;
The meshbox will now be tilted 45 degrees on its y axis.&lt;br /&gt;
Spin code has four numbers, the first one is how many degrees to spin.&lt;br /&gt;
The last three are for which axis&#039;s to spin, by placing a value of more than 0.&lt;/div&gt;</summary>
		<author><name>ClayOgre</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7338</id>
		<title>Map making by hand</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7338"/>
		<updated>2010-11-06T00:02:13Z</updated>

		<summary type="html">&lt;p&gt;ClayOgre: /* The Box */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoDoc|Major re-organization, transform away from &amp;quot;chat&amp;quot; style. Need to reference pages elsewhere on the wiki in place of much of the content which appears to be building up here.  Create them if necessary, or see the list [[Special:Allpages|here]].}}&lt;br /&gt;
Although there are a number of GUI options for creating maps such as BZ-Edit, 3D modelers, many map-makers use a basic text-editor.  There are many times when it is necessary to make small changes to a map, such as including objects that are unavailable in GUI map-maker, but there are also some who enjoy the challenge of creating a map entirely from scratch with a text-editor.&lt;br /&gt;
&lt;br /&gt;
==Text Editors==&lt;br /&gt;
Most text-editors designed for coding/programming are more than sufficient for editing bzw files.  Although word-processing programs such as Microsoft Word can be used, there are many cheaper (free) and more efficient programs designed specifically for coding. If you are interested in syntax highlighting, look at the [http://my.bzflag.org/bb/viewtopic.php?f=24&amp;amp;t=16037&amp;amp;p=148953 forum topic].&lt;br /&gt;
===Windows===&lt;br /&gt;
*Notepad&lt;br /&gt;
*PSPad&lt;br /&gt;
*NoteTab&lt;br /&gt;
*[http://notepad-plus-plus.org/ Notepad ++] - a tabbed editor based on Scite.&lt;br /&gt;
&lt;br /&gt;
===Mac===&lt;br /&gt;
*TextWrangler&lt;br /&gt;
*TextEdit&lt;br /&gt;
===Linux===&lt;br /&gt;
*Command-line editors such as nano, emacs, pico, vim, or ed.&lt;br /&gt;
*GEdit&lt;br /&gt;
*Kate&lt;br /&gt;
*Scite&lt;br /&gt;
&lt;br /&gt;
==Editing existing maps==&lt;br /&gt;
Beginning mapmakers should spend some time studying and making small changes in existing maps to see how things work.  In the client, maps can be saved for editing by joining the desired server and choosing: Options&amp;gt;Save World.  Maps can also be saved by issuing the /saveworld command.  The map should be a simple map when getting started.  One may find it easier to create a file in BZEdit and open the resulting file in the text-editor.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
If you have created a box in BZEdit you may see:&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
 world &lt;br /&gt;
   size 400 &lt;br /&gt;
 end &lt;br /&gt;
 options &lt;br /&gt;
   +r &lt;br /&gt;
   -j &lt;br /&gt;
   -set _tankSpeed 25 &lt;br /&gt;
   -ms 5 &lt;br /&gt;
   -mp 0,2,0,2,0,2 &lt;br /&gt;
 end &lt;br /&gt;
 box &lt;br /&gt;
   name box1 &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
 end &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===What that means===&lt;br /&gt;
&amp;quot;There are set variables that define various things such as how fast your tank is, how fast the bullets are, or if it&#039;s raining or foggy.  Put those in the options setting with &amp;quot;-set(space) &amp;quot; in front of it. You can also make those changes as an admin by using /set _variable (notice there is a space between the set and the _).  A full list of these settings can be found on the [[Server Variables]] page.  Other options, such as how many times a flag can be grabbed before it resets or if flags can land on buildings are explained [http://my.bzflag.org/bb/files/antigrav4teamconf_114.txt in this forum post]&lt;br /&gt;
Optionally, the variables can be placed in a separate configuration file and referenced when the server is started.&amp;quot;&lt;br /&gt;
&#039;&#039;&#039;old&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, it says:&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
(Note: the # sign is used for comments.)&lt;br /&gt;
&lt;br /&gt;
This is the text added by the application initially, kind of like advertising. This will be the first thing anyone sees when they look at the map.&lt;br /&gt;
&lt;br /&gt;
The next thing is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
world &lt;br /&gt;
  size 400 # Sets the world size to 400 (800 x 800 total)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is rather self-explanatory. It&#039;s the &amp;lt;size&amp;gt; of the &amp;lt;world&amp;gt; (The BZFlag arena).&lt;br /&gt;
&lt;br /&gt;
Next is an &amp;lt;options&amp;gt; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options &lt;br /&gt;
  +r   # Enable Ricochet&lt;br /&gt;
  -j   # Enable Jumping&lt;br /&gt;
  -set _tankSpeed 25  # Sets the tank speed to 25 bzunits/second&lt;br /&gt;
  -ms 5  # Sets the maximum shots (per tank) to 5&lt;br /&gt;
  -mp 0,2,0,2,0,2  # Maximum of 2 Red Players, 2 Blue Players, and 2 Observers&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This allows you to define in the map file certain options that are also available from the command line when you start the bzfs server, or in the optional server config file.  Options embedded into a world file will override those input on the command line or in a config file.&lt;br /&gt;
&lt;br /&gt;
The commands listed here are:&lt;br /&gt;
Ricochet, Jumping, Tank speed, Max Shots, and Max Players.&lt;br /&gt;
These are rather self explanatory, except for Max Players. Each number represents how many of each of the following team players are allowed in the game (in the order listed): Rogue, Red, Green, Blue, Purple, Observer. Each number defines the max number of players per category.&lt;br /&gt;
&lt;br /&gt;
For more, see [[Options_(object)|Options Object]].&lt;br /&gt;
&lt;br /&gt;
We now come to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
box &lt;br /&gt;
  name box1      # Generally unused&lt;br /&gt;
  position 0 0 0 # X Y Z Position&lt;br /&gt;
  size 10 10 10  # X Y Z Size (bzunits from the position of the box)&lt;br /&gt;
  rotation 0     # Rotation (in degrees)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is a &amp;lt;box&amp;gt; with a &amp;lt;name&amp;gt; of &amp;lt;box1&amp;gt;.&lt;br /&gt;
The &amp;lt;position&amp;gt; is 0,0,0 in R3[http://en.wikipedia.org/wiki/R3].&lt;br /&gt;
The rest is pretty self explanatory.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; EVERY STATEMENT MUST HAVE AN END.&lt;br /&gt;
&lt;br /&gt;
===Basic Definitions===&lt;br /&gt;
;Objects&lt;br /&gt;
:Objects are the basic building blocks of the bzw file.  Objects begin with a line declaring the object, some fields describing that object, and a line that closes the object (usually with &amp;quot;end&amp;quot;).  Each of these sections of the object is important.&lt;br /&gt;
;Comments&lt;br /&gt;
:BZFS ignores anything in a line following the #; the line has been &amp;quot;commented out.&amp;quot;  It is highly recommended that comments be used often, both for the mapmaker and for others that may see the map.&lt;br /&gt;
;3D Cartesian Coordinate System&lt;br /&gt;
:In most objects, you will see three numbers after position and size. These numbers are coordinates on a graph. The first number is the x coordinate (left and right) the middle number is the y coordinate (forward and backward) and the third number is the z coordinate (height and depth). Another way of thinking of it is: x = width, y = depth, z = height. (Those accustomed to the Y axis determining height will have to slightly adjust their thinking.) &lt;br /&gt;
&lt;br /&gt;
==Sample Objects==&lt;br /&gt;
===The Box===&lt;br /&gt;
Perhaps the simplest object is the box.  There is actually nothing special you can do to it (but in versions of BZFlag from 2.0.8 up, you can do a lot more to it).  Here is an example of a box:&lt;br /&gt;
&lt;br /&gt;
 box&lt;br /&gt;
   name box1             # Optional, but good to include&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   rotation 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the first line, notice the word &amp;quot;box&amp;quot;.  It simply says the next object is a box.  The next line is the name of the object.  It is defined with the syntax &amp;quot;&amp;lt;tt&amp;gt;name &#039;&#039;objectName&#039;&#039;&amp;lt;/tt&amp;gt;&amp;quot;.  It is not required, but is good to include (if you have a LOT of boxes, how do you know which is which?  Naming them--as well as other objects--helps you keep track).  The third line defines the position of the center of the bottom of the object.  The three arguments of &amp;lt;tt&amp;gt;position&amp;lt;/tt&amp;gt; are the x, y, and z coordinates of the box, respectively.  The x and y coordinates can be positive or negative, but the z coordinate should just be positive or zero.  On the fourth line, the size of the box is defined.  The arguments of &amp;lt;tt&amp;gt;size&amp;lt;/tt&amp;gt; are the x, y, and z sizes of the object, respectively.  The x and y arguments make the box that wide on both sides of it&#039;s position.  However, the z argument makes the object exactly the number of units tall as defined.  The next line just says how much the object is rotated.  This number is the number of degrees of rotation, and can be negative or positive.  The last line just tells BZFlag the object is done, and a new one can be defined.  Be sure to &#039;&#039;&#039;always&#039;&#039;&#039; use this.&lt;br /&gt;
&lt;br /&gt;
===The Cone===&lt;br /&gt;
Most objects have similar parameters as the basic box.  For instance, the code for a cone may look something like this:&lt;br /&gt;
&lt;br /&gt;
 cone&lt;br /&gt;
   name cone1&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 20&lt;br /&gt;
   divisions 128&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Divisions basically decide how smooth the cone is.  The higher the divisions the more smooth the cone is.  A division of 4 would look like a pyramid.  Another parameter that can be added to the cone object is angle. If you say angle 180, that would make 1/2 of a cone, 90 would make 1/4 of a cone, and so on. &lt;br /&gt;
&lt;br /&gt;
===The Arc===&lt;br /&gt;
&lt;br /&gt;
An arc is basically a cylinder. However it doesn’t have to be a perfect cylinder depending on certain options you select. For an arc the only required options are divisions, position and size. Just like the cone divisions have the same effect, position and size are all the same. Once again you can have an oval shaped cylinder type thing. Now, you WILL find more options to an arc than to a cone, for example the ratio option. The ratio options let you basically put a hole in the cylinder. So if you have the option: ratio 1 you would have a full cylinder. If you say for example ratio .3 or any number less than 1 you will get a whole in the cylinder. The bigger the number, the smaller the hole. Angle allows you to do a simi-circle. Rotation once again isn&#039;t really needed. all the options like spin and shear are the same for this object too! phydrv and matref I’ll show later. Let’s move to the sphere &lt;br /&gt;
&lt;br /&gt;
===The Sphere===&lt;br /&gt;
&lt;br /&gt;
The only options required to make a sphere are position, size, and divisions. &lt;br /&gt;
All these options do the same thing as they did in the objects above.  You may also have an oval like sphere.  You make an oval like sphere simply by making the x and y&#039;s different sizes just like in the cone and arc.  The radius option is just a substitute for size.  You can write size 10 10 10 or radius 10.  Both do the same thing. However if you want an oval shaped sphere you have to use size.  Rotation wouldn&#039;t really have an effect and the shear and spin works the same for this object.&lt;br /&gt;
&lt;br /&gt;
==Getting more help==&lt;br /&gt;
*The links at the bottom of the [[:Category:Map Making|Map Making]] page.&lt;br /&gt;
*The original creator of this page is flight, you can email him at dirtbikerdude_91@yahoo.com and he will be happy to answer any questions that he is capable of answering.&lt;br /&gt;
&lt;br /&gt;
==Special Objects==&lt;br /&gt;
There are certain objects that are often coded by hand because it is simpler or it is impossible to do with graphical map creation tools.  &lt;br /&gt;
&lt;br /&gt;
===Materials ===&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_bolt.png &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
Material is letting the computer know that a material is about to be explained to it.  You name it so that way you can reference it with the matref.  The name can be any thing you want as long as it does not have any spaces.  You type in &amp;lt;tt&amp;gt;addtexture&amp;lt;/tt&amp;gt; and you state a texture name.  Now, how do you know what texture names there are to use?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Linux&#039;&#039;&#039;: Running &amp;lt;tt&amp;gt;ls /usr/share/bzflag/*.png&amp;lt;/tt&amp;gt; in a terminal will show the list of pictures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Mac&#039;&#039;&#039;: If you control click (right click) on the bzflag icon, click show package contents, click contents, and click resources, those are the pictures you may use. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Windows&#039;&#039;&#039;: The default path is &amp;lt;tt&amp;gt;C:\Program Files\BZFlag\data\*.png&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What you will find are images that are used in every day games.  The top of a base, the wall of a base. A bullet which is blue_bolt.png (as was used above).  The full path to the texture needs to be used if the texture is not found in that directory.  Any customized textures should be uploaded to the [http://images.bzflag.org/submitimages/ BZFlag Image Submission System] before the map is hosted publicly.&lt;br /&gt;
&lt;br /&gt;
Servers running bzfs 2.0.8 and earlier will require &amp;quot;meshbox&amp;quot; and &amp;quot;meshpyr&amp;quot; in order to apply textures and physics to these objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instead of creating a new texture, many interesting and creative things can be done with the &amp;quot;diffuse&amp;quot; parameter in the material object.  You can add the diffuse command and it will look like this diffuse 1 1 1 1.  The first number is the amount of red that will be in the meshobject.  The second number is the amount of green, the third is the amount of blue.  So you can mix those colors to make more colors.  You may use a range from 0-1.  For example diffuse .3 .5 .26 1.  The fourth number determines the opacity or transparency (the see-throughability).  0 is invisible, .5 is half invisible, and 1 is normal. &lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   diffuse .5 .25 .1 .6 &lt;br /&gt;
   addtexture mesh.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Physics===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Physics make your tank behave in different ways.  If you have ever played laser mania by Louman than you know on the outskirts of the map there is something you can jump on and you go really fast, that is a physics. Physics and materials work the same way.  Physics is to material as phydrv is to matref.  You must specify a physics then on a meshbox, meshpyr cone arc sphere or whatever, you can reference that physics by using the phydrv command just like you would use the matref command for materials.  There are different physics commands.  Linear, angular, slide and death.  In the Louman map I mentioned above is a linear physics.  Linear physics makes your tank move in a line.  The numbers after a linear command are just like position x y z.  Example:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   linear 50 0 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive x direction you may use -50 and it will make it go the other way.&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy2 &lt;br /&gt;
   linear 0 50 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive y direction &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy3 &lt;br /&gt;
   linear 0 0 50 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank jump at a speed of 50 &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy4 &lt;br /&gt;
   slide 5 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank basically feel like it&#039;s on ice.  Whichever way the tank is moving it will keep moving that way. &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy5 &lt;br /&gt;
   death haha! you died &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make the tank die when it touches the object that refers to this and the message haha! you died will be displayed to that person. &lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   death I like you better dead! &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   phydrv phy1                       # Or what ever you named the physics.&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This works just like the material &lt;br /&gt;
&lt;br /&gt;
The thing about physics and materials is that they have to be written before they are referenced. &lt;br /&gt;
&lt;br /&gt;
This &#039;&#039;&#039;won&#039;t&#039;&#039;&#039; work &lt;br /&gt;
&lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_team.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
A group is a defined group of objects that can be called to gether as one.&lt;br /&gt;
&lt;br /&gt;
For example if a map editor is makeing a forest, and each tree contains 2 objects, the editor doesn&#039;t want to type up the code for each tree over and over again. What he can do is tell BZFS that these objects = tree. and then whenever he wants to make a tree he just types tree.&lt;br /&gt;
&lt;br /&gt;
Example-----------&lt;br /&gt;
&lt;br /&gt;
first define a group of obects as a tree &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  define tree&lt;br /&gt;
  &lt;br /&gt;
  box&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  size 2 2 4&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  pyramid&lt;br /&gt;
  position 0 0 3&lt;br /&gt;
  size 5 5 10&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  enddef&lt;br /&gt;
&lt;br /&gt;
then to add a tree simpily type&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  group tree&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
==Transformations==&lt;br /&gt;
[[Category:Map Making]]&lt;br /&gt;
Transformations are simple ways of modifying objects so that maps have some variety. These can get complicated so I will only give you a sample of what they can do. There are 3 transformations shift, spin, and shear. You can find a different also helpful page here [[3d Transformations]]&lt;br /&gt;
&lt;br /&gt;
The one is will tell you about is &#039;&#039;&#039;Shift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shift&#039;&#039;&#039; moves an object by the amount of units that you specify from its present position.&lt;br /&gt;
the object..&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at place 10 10 0&lt;br /&gt;
&lt;br /&gt;
while the object..&lt;br /&gt;
&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  shift 0 0 10&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at position 10 10 10.&lt;br /&gt;
&lt;br /&gt;
====Spin====&lt;br /&gt;
Spinning an object is just like rotating an object but can be on a different axis. (y and x)&lt;br /&gt;
When you rotate it is around the center of the object.&lt;br /&gt;
Remember: Only spin-able objects can be spun.&lt;br /&gt;
Here is what the code looks like:&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
 end&lt;br /&gt;
The meshbox will now be tilted 45 degrees on its y axis.&lt;br /&gt;
Spin code has four numbers, the first one is how many degrees to spin.&lt;br /&gt;
The last three are for which axis&#039;s to spin, by placing a value of more than 0.&lt;/div&gt;</summary>
		<author><name>ClayOgre</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7337</id>
		<title>Map making by hand</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7337"/>
		<updated>2010-11-05T23:51:14Z</updated>

		<summary type="html">&lt;p&gt;ClayOgre: /* What that means */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoDoc|Major re-organization, transform away from &amp;quot;chat&amp;quot; style. Need to reference pages elsewhere on the wiki in place of much of the content which appears to be building up here.  Create them if necessary, or see the list [[Special:Allpages|here]].}}&lt;br /&gt;
Although there are a number of GUI options for creating maps such as BZ-Edit, 3D modelers, many map-makers use a basic text-editor.  There are many times when it is necessary to make small changes to a map, such as including objects that are unavailable in GUI map-maker, but there are also some who enjoy the challenge of creating a map entirely from scratch with a text-editor.&lt;br /&gt;
&lt;br /&gt;
==Text Editors==&lt;br /&gt;
Most text-editors designed for coding/programming are more than sufficient for editing bzw files.  Although word-processing programs such as Microsoft Word can be used, there are many cheaper (free) and more efficient programs designed specifically for coding. If you are interested in syntax highlighting, look at the [http://my.bzflag.org/bb/viewtopic.php?f=24&amp;amp;t=16037&amp;amp;p=148953 forum topic].&lt;br /&gt;
===Windows===&lt;br /&gt;
*Notepad&lt;br /&gt;
*PSPad&lt;br /&gt;
*NoteTab&lt;br /&gt;
*[http://notepad-plus-plus.org/ Notepad ++] - a tabbed editor based on Scite.&lt;br /&gt;
&lt;br /&gt;
===Mac===&lt;br /&gt;
*TextWrangler&lt;br /&gt;
*TextEdit&lt;br /&gt;
===Linux===&lt;br /&gt;
*Command-line editors such as nano, emacs, pico, vim, or ed.&lt;br /&gt;
*GEdit&lt;br /&gt;
*Kate&lt;br /&gt;
*Scite&lt;br /&gt;
&lt;br /&gt;
==Editing existing maps==&lt;br /&gt;
Beginning mapmakers should spend some time studying and making small changes in existing maps to see how things work.  In the client, maps can be saved for editing by joining the desired server and choosing: Options&amp;gt;Save World.  Maps can also be saved by issuing the /saveworld command.  The map should be a simple map when getting started.  One may find it easier to create a file in BZEdit and open the resulting file in the text-editor.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
If you have created a box in BZEdit you may see:&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
 world &lt;br /&gt;
   size 400 &lt;br /&gt;
 end &lt;br /&gt;
 options &lt;br /&gt;
   +r &lt;br /&gt;
   -j &lt;br /&gt;
   -set _tankSpeed 25 &lt;br /&gt;
   -ms 5 &lt;br /&gt;
   -mp 0,2,0,2,0,2 &lt;br /&gt;
 end &lt;br /&gt;
 box &lt;br /&gt;
   name box1 &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
 end &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===What that means===&lt;br /&gt;
&amp;quot;There are set variables that define various things such as how fast your tank is, how fast the bullets are, or if it&#039;s raining or foggy.  Put those in the options setting with &amp;quot;-set(space) &amp;quot; in front of it. You can also make those changes as an admin by using /set _variable (notice there is a space between the set and the _).  A full list of these settings can be found on the [[Server Variables]] page.  Other options, such as how many times a flag can be grabbed before it resets or if flags can land on buildings are explained [http://my.bzflag.org/bb/files/antigrav4teamconf_114.txt in this forum post]&lt;br /&gt;
Optionally, the variables can be placed in a separate configuration file and referenced when the server is started.&amp;quot;&lt;br /&gt;
&#039;&#039;&#039;old&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, it says:&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
(Note: the # sign is used for comments.)&lt;br /&gt;
&lt;br /&gt;
This is the text added by the application initially, kind of like advertising. This will be the first thing anyone sees when they look at the map.&lt;br /&gt;
&lt;br /&gt;
The next thing is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
world &lt;br /&gt;
  size 400 # Sets the world size to 400 (800 x 800 total)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is rather self-explanatory. It&#039;s the &amp;lt;size&amp;gt; of the &amp;lt;world&amp;gt; (The BZFlag arena).&lt;br /&gt;
&lt;br /&gt;
Next is an &amp;lt;options&amp;gt; section:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options &lt;br /&gt;
  +r   # Enable Ricochet&lt;br /&gt;
  -j   # Enable Jumping&lt;br /&gt;
  -set _tankSpeed 25  # Sets the tank speed to 25 bzunits/second&lt;br /&gt;
  -ms 5  # Sets the maximum shots (per tank) to 5&lt;br /&gt;
  -mp 0,2,0,2,0,2  # Maximum of 2 Red Players, 2 Blue Players, and 2 Observers&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This allows you to define in the map file certain options that are also available from the command line when you start the bzfs server, or in the optional server config file.  Options embedded into a world file will override those input on the command line or in a config file.&lt;br /&gt;
&lt;br /&gt;
The commands listed here are:&lt;br /&gt;
Ricochet, Jumping, Tank speed, Max Shots, and Max Players.&lt;br /&gt;
These are rather self explanatory, except for Max Players. Each number represents how many of each of the following team players are allowed in the game (in the order listed): Rogue, Red, Green, Blue, Purple, Observer. Each number defines the max number of players per category.&lt;br /&gt;
&lt;br /&gt;
For more, see [[Options_(object)|Options Object]].&lt;br /&gt;
&lt;br /&gt;
We now come to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
box &lt;br /&gt;
  name box1      # Generally unused&lt;br /&gt;
  position 0 0 0 # X Y Z Position&lt;br /&gt;
  size 10 10 10  # X Y Z Size (bzunits from the position of the box)&lt;br /&gt;
  rotation 0     # Rotation (in degrees)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is a &amp;lt;box&amp;gt; with a &amp;lt;name&amp;gt; of &amp;lt;box1&amp;gt;.&lt;br /&gt;
The &amp;lt;position&amp;gt; is 0,0,0 in R3[http://en.wikipedia.org/wiki/R3].&lt;br /&gt;
The rest is pretty self explanatory.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; EVERY STATEMENT MUST HAVE AN END.&lt;br /&gt;
&lt;br /&gt;
===Basic Definitions===&lt;br /&gt;
;Objects&lt;br /&gt;
:Objects are the basic building blocks of the bzw file.  Objects begin with a line declaring the object, some fields describing that object, and a line that closes the object (usually with &amp;quot;end&amp;quot;).  Each of these sections of the object is important.&lt;br /&gt;
;Comments&lt;br /&gt;
:BZFS ignores anything in a line following the #; the line has been &amp;quot;commented out.&amp;quot;  It is highly recommended that comments be used often, both for the mapmaker and for others that may see the map.&lt;br /&gt;
;3D Cartesian Coordinate System&lt;br /&gt;
:In most objects, you will see three numbers after position and size. These numbers are coordinates on a graph. The first number is the x coordinate (left and right) the middle number is the y coordinate (forward and backward) and the third number is the z coordinate (height and depth). Another way of thinking of it is: x = width, y = depth, z = height. (Those accustomed to the Y axis determining height will have to slightly adjust their thinking.) &lt;br /&gt;
&lt;br /&gt;
==Sample Objects==&lt;br /&gt;
===The Box===&lt;br /&gt;
Perhaps the simplest object is the box.  There is actually nothing special you can do to it (but in versions of BZFlag from 2.0.8 up, you can do a lot more to it).  Here is an example of a box:&lt;br /&gt;
&lt;br /&gt;
 box&lt;br /&gt;
   name box1             # Optional, but good to include&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   rotation 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the first line, notice the word &amp;quot;box&amp;quot;.  It simply says the next object is a box.  The next line is the name of the object.  It is defined with the syntax &amp;quot;&amp;lt;tt&amp;gt;name &#039;&#039;objectName&#039;&#039;&amp;lt;/tt&amp;gt;&amp;quot;.  It is not required, but is good to include.  The third line defines the position of the center of the bottom of the object.  The three arguments of &amp;lt;tt&amp;gt;position&amp;lt;/tt&amp;gt; are the x, y, and z coordinates of the box, respectively.  The x and y coordinates can be positive or negative, but the z coordinate should just be positive or zero.  On the fourth line, the size of the box is defined.  The arguments of &amp;lt;tt&amp;gt;size&amp;lt;/tt&amp;gt; are the x, y, and z sizes of the object, respectively.  The x and y arguments make the box that wide on both sides of it&#039;s position.  However, the z argument makes the object exactly the number of units tall as defined.  The next line just says how much the object is rotated.  This number is the number of degrees of rotation, and can be negative or positive.  The last line just tells BZFlag the object is done, and a new one can be defined.  Be sure to &#039;&#039;&#039;always&#039;&#039;&#039; use this.&lt;br /&gt;
&lt;br /&gt;
===The Cone===&lt;br /&gt;
Most objects have similar parameters as the basic box.  For instance, the code for a cone may look something like this:&lt;br /&gt;
&lt;br /&gt;
 cone&lt;br /&gt;
   name cone1&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 20&lt;br /&gt;
   divisions 128&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Divisions basically decide how smooth the cone is.  The higher the divisions the more smooth the cone is.  A division of 4 would look like a pyramid.  Another parameter that can be added to the cone object is angle. If you say angle 180, that would make 1/2 of a cone, 90 would make 1/4 of a cone, and so on. &lt;br /&gt;
&lt;br /&gt;
===The Arc===&lt;br /&gt;
&lt;br /&gt;
An arc is basically a cylinder. However it doesn’t have to be a perfect cylinder depending on certain options you select. For an arc the only required options are divisions, position and size. Just like the cone divisions have the same effect, position and size are all the same. Once again you can have an oval shaped cylinder type thing. Now, you WILL find more options to an arc than to a cone, for example the ratio option. The ratio options let you basically put a hole in the cylinder. So if you have the option: ratio 1 you would have a full cylinder. If you say for example ratio .3 or any number less than 1 you will get a whole in the cylinder. The bigger the number, the smaller the hole. Angle allows you to do a simi-circle. Rotation once again isn&#039;t really needed. all the options like spin and shear are the same for this object too! phydrv and matref I’ll show later. Let’s move to the sphere &lt;br /&gt;
&lt;br /&gt;
===The Sphere===&lt;br /&gt;
&lt;br /&gt;
The only options required to make a sphere are position, size, and divisions. &lt;br /&gt;
All these options do the same thing as they did in the objects above.  You may also have an oval like sphere.  You make an oval like sphere simply by making the x and y&#039;s different sizes just like in the cone and arc.  The radius option is just a substitute for size.  You can write size 10 10 10 or radius 10.  Both do the same thing. However if you want an oval shaped sphere you have to use size.  Rotation wouldn&#039;t really have an effect and the shear and spin works the same for this object.&lt;br /&gt;
&lt;br /&gt;
==Getting more help==&lt;br /&gt;
*The links at the bottom of the [[:Category:Map Making|Map Making]] page.&lt;br /&gt;
*The original creator of this page is flight, you can email him at dirtbikerdude_91@yahoo.com and he will be happy to answer any questions that he is capable of answering.&lt;br /&gt;
&lt;br /&gt;
==Special Objects==&lt;br /&gt;
There are certain objects that are often coded by hand because it is simpler or it is impossible to do with graphical map creation tools.  &lt;br /&gt;
&lt;br /&gt;
===Materials ===&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_bolt.png &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
Material is letting the computer know that a material is about to be explained to it.  You name it so that way you can reference it with the matref.  The name can be any thing you want as long as it does not have any spaces.  You type in &amp;lt;tt&amp;gt;addtexture&amp;lt;/tt&amp;gt; and you state a texture name.  Now, how do you know what texture names there are to use?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Linux&#039;&#039;&#039;: Running &amp;lt;tt&amp;gt;ls /usr/share/bzflag/*.png&amp;lt;/tt&amp;gt; in a terminal will show the list of pictures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Mac&#039;&#039;&#039;: If you control click (right click) on the bzflag icon, click show package contents, click contents, and click resources, those are the pictures you may use. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Windows&#039;&#039;&#039;: The default path is &amp;lt;tt&amp;gt;C:\Program Files\BZFlag\data\*.png&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What you will find are images that are used in every day games.  The top of a base, the wall of a base. A bullet which is blue_bolt.png (as was used above).  The full path to the texture needs to be used if the texture is not found in that directory.  Any customized textures should be uploaded to the [http://images.bzflag.org/submitimages/ BZFlag Image Submission System] before the map is hosted publicly.&lt;br /&gt;
&lt;br /&gt;
Servers running bzfs 2.0.8 and earlier will require &amp;quot;meshbox&amp;quot; and &amp;quot;meshpyr&amp;quot; in order to apply textures and physics to these objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instead of creating a new texture, many interesting and creative things can be done with the &amp;quot;diffuse&amp;quot; parameter in the material object.  You can add the diffuse command and it will look like this diffuse 1 1 1 1.  The first number is the amount of red that will be in the meshobject.  The second number is the amount of green, the third is the amount of blue.  So you can mix those colors to make more colors.  You may use a range from 0-1.  For example diffuse .3 .5 .26 1.  The fourth number determines the opacity or transparency (the see-throughability).  0 is invisible, .5 is half invisible, and 1 is normal. &lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   diffuse .5 .25 .1 .6 &lt;br /&gt;
   addtexture mesh.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Physics===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Physics make your tank behave in different ways.  If you have ever played laser mania by Louman than you know on the outskirts of the map there is something you can jump on and you go really fast, that is a physics. Physics and materials work the same way.  Physics is to material as phydrv is to matref.  You must specify a physics then on a meshbox, meshpyr cone arc sphere or whatever, you can reference that physics by using the phydrv command just like you would use the matref command for materials.  There are different physics commands.  Linear, angular, slide and death.  In the Louman map I mentioned above is a linear physics.  Linear physics makes your tank move in a line.  The numbers after a linear command are just like position x y z.  Example:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   linear 50 0 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive x direction you may use -50 and it will make it go the other way.&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy2 &lt;br /&gt;
   linear 0 50 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive y direction &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy3 &lt;br /&gt;
   linear 0 0 50 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank jump at a speed of 50 &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy4 &lt;br /&gt;
   slide 5 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank basically feel like it&#039;s on ice.  Whichever way the tank is moving it will keep moving that way. &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy5 &lt;br /&gt;
   death haha! you died &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make the tank die when it touches the object that refers to this and the message haha! you died will be displayed to that person. &lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   death I like you better dead! &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   phydrv phy1                       # Or what ever you named the physics.&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This works just like the material &lt;br /&gt;
&lt;br /&gt;
The thing about physics and materials is that they have to be written before they are referenced. &lt;br /&gt;
&lt;br /&gt;
This &#039;&#039;&#039;won&#039;t&#039;&#039;&#039; work &lt;br /&gt;
&lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_team.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
A group is a defined group of objects that can be called to gether as one.&lt;br /&gt;
&lt;br /&gt;
For example if a map editor is makeing a forest, and each tree contains 2 objects, the editor doesn&#039;t want to type up the code for each tree over and over again. What he can do is tell BZFS that these objects = tree. and then whenever he wants to make a tree he just types tree.&lt;br /&gt;
&lt;br /&gt;
Example-----------&lt;br /&gt;
&lt;br /&gt;
first define a group of obects as a tree &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  define tree&lt;br /&gt;
  &lt;br /&gt;
  box&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  size 2 2 4&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  pyramid&lt;br /&gt;
  position 0 0 3&lt;br /&gt;
  size 5 5 10&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  enddef&lt;br /&gt;
&lt;br /&gt;
then to add a tree simpily type&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  group tree&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
==Transformations==&lt;br /&gt;
[[Category:Map Making]]&lt;br /&gt;
Transformations are simple ways of modifying objects so that maps have some variety. These can get complicated so I will only give you a sample of what they can do. There are 3 transformations shift, spin, and shear. You can find a different also helpful page here [[3d Transformations]]&lt;br /&gt;
&lt;br /&gt;
The one is will tell you about is &#039;&#039;&#039;Shift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shift&#039;&#039;&#039; moves an object by the amount of units that you specify from its present position.&lt;br /&gt;
the object..&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at place 10 10 0&lt;br /&gt;
&lt;br /&gt;
while the object..&lt;br /&gt;
&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  shift 0 0 10&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at position 10 10 10.&lt;br /&gt;
&lt;br /&gt;
====Spin====&lt;br /&gt;
Spinning an object is just like rotating an object but can be on a different axis. (y and x)&lt;br /&gt;
When you rotate it is around the center of the object.&lt;br /&gt;
Remember: Only spin-able objects can be spun.&lt;br /&gt;
Here is what the code looks like:&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
 end&lt;br /&gt;
The meshbox will now be tilted 45 degrees on its y axis.&lt;br /&gt;
Spin code has four numbers, the first one is how many degrees to spin.&lt;br /&gt;
The last three are for which axis&#039;s to spin, by placing a value of more than 0.&lt;/div&gt;</summary>
		<author><name>ClayOgre</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7336</id>
		<title>Map making by hand</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7336"/>
		<updated>2010-11-05T23:46:47Z</updated>

		<summary type="html">&lt;p&gt;ClayOgre: /* What that means */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoDoc|Major re-organization, transform away from &amp;quot;chat&amp;quot; style. Need to reference pages elsewhere on the wiki in place of much of the content which appears to be building up here.  Create them if necessary, or see the list [[Special:Allpages|here]].}}&lt;br /&gt;
Although there are a number of GUI options for creating maps such as BZ-Edit, 3D modelers, many map-makers use a basic text-editor.  There are many times when it is necessary to make small changes to a map, such as including objects that are unavailable in GUI map-maker, but there are also some who enjoy the challenge of creating a map entirely from scratch with a text-editor.&lt;br /&gt;
&lt;br /&gt;
==Text Editors==&lt;br /&gt;
Most text-editors designed for coding/programming are more than sufficient for editing bzw files.  Although word-processing programs such as Microsoft Word can be used, there are many cheaper (free) and more efficient programs designed specifically for coding. If you are interested in syntax highlighting, look at the [http://my.bzflag.org/bb/viewtopic.php?f=24&amp;amp;t=16037&amp;amp;p=148953 forum topic].&lt;br /&gt;
===Windows===&lt;br /&gt;
*Notepad&lt;br /&gt;
*PSPad&lt;br /&gt;
*NoteTab&lt;br /&gt;
*[http://notepad-plus-plus.org/ Notepad ++] - a tabbed editor based on Scite.&lt;br /&gt;
&lt;br /&gt;
===Mac===&lt;br /&gt;
*TextWrangler&lt;br /&gt;
*TextEdit&lt;br /&gt;
===Linux===&lt;br /&gt;
*Command-line editors such as nano, emacs, pico, vim, or ed.&lt;br /&gt;
*GEdit&lt;br /&gt;
*Kate&lt;br /&gt;
*Scite&lt;br /&gt;
&lt;br /&gt;
==Editing existing maps==&lt;br /&gt;
Beginning mapmakers should spend some time studying and making small changes in existing maps to see how things work.  In the client, maps can be saved for editing by joining the desired server and choosing: Options&amp;gt;Save World.  Maps can also be saved by issuing the /saveworld command.  The map should be a simple map when getting started.  One may find it easier to create a file in BZEdit and open the resulting file in the text-editor.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
If you have created a box in BZEdit you may see:&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
 world &lt;br /&gt;
   size 400 &lt;br /&gt;
 end &lt;br /&gt;
 options &lt;br /&gt;
   +r &lt;br /&gt;
   -j &lt;br /&gt;
   -set _tankSpeed 25 &lt;br /&gt;
   -ms 5 &lt;br /&gt;
   -mp 0,2,0,2,0,2 &lt;br /&gt;
 end &lt;br /&gt;
 box &lt;br /&gt;
   name box1 &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
 end &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===What that means===&lt;br /&gt;
&amp;quot;There are set variables that define various things such as how fast your tank is, how fast the bullets are, or if it&#039;s raining or foggy.  Put those in the options setting with &amp;quot;-set(space) &amp;quot; in front of it. You can also make those changes as an admin by using /set _variable (notice there is a space between the set and the _).  A full list of these settings can be found on the [[Server Variables]] page.  Other options, such as how many times a flag can be grabbed before it resets or if flags can land on buildings are explained [http://my.bzflag.org/bb/files/antigrav4teamconf_114.txt in this forum post]&lt;br /&gt;
Optionally, the variables can be placed in a separate configuration file and referenced when the server is started.&amp;quot;&lt;br /&gt;
&#039;&#039;&#039;old&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, it says:&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
(Note: the # sign is used for comments.)&lt;br /&gt;
&lt;br /&gt;
This is the text added by the application initially, kind of like advertising. This will be the first thing anyone sees when they look at the map.&lt;br /&gt;
&lt;br /&gt;
The next thing is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
world &lt;br /&gt;
  size 400 # Sets the world size to 400 (800 x 800 total)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is rather self-explanatory. It&#039;s the &amp;lt;size&amp;gt; of the &amp;lt;world&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Next is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options &lt;br /&gt;
  +r   # Enable Ricochet&lt;br /&gt;
  -j   # Enable Jumping&lt;br /&gt;
  -set _tankSpeed 25  # Sets the tank speed to 25 bzunits/second&lt;br /&gt;
  -ms 5  # Sets the maximum shots (per tank) to 5&lt;br /&gt;
  -mp 0,2,0,2,0,2  # Maximum of 2 Red Players, 2 Blue Players, and 2 Observers&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is the &amp;lt;options&amp;gt;.&lt;br /&gt;
The commands listed here are:&lt;br /&gt;
Ricochet, Jumping, Tank speed, Max Shots, and Max Players.&lt;br /&gt;
These are rather self explanatory, except for Max Players. Each number represents how many of each of the following team players are allowed in the game (in the order listed): Rogue, Red, Green, Blue, Purple, Observer. Each number defines the max number of players per category.&lt;br /&gt;
&lt;br /&gt;
For more, see [[Options_(object)|Options Object]].&lt;br /&gt;
&lt;br /&gt;
We now come to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
box &lt;br /&gt;
  name box1      # Generally unused&lt;br /&gt;
  position 0 0 0 # X Y Z Position&lt;br /&gt;
  size 10 10 10  # X Y Z Size (bzunits from the position of the box)&lt;br /&gt;
  rotation 0     # Rotation (in degrees)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is a &amp;lt;box&amp;gt; with a &amp;lt;name&amp;gt; of &amp;lt;box1&amp;gt;.&lt;br /&gt;
The &amp;lt;position&amp;gt; is 0,0,0 in R3[http://en.wikipedia.org/wiki/R3].&lt;br /&gt;
The rest is pretty self explanatory.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; EVERY STATEMENT MUST HAVE AN END.&lt;br /&gt;
&lt;br /&gt;
===Basic Definitions===&lt;br /&gt;
;Objects&lt;br /&gt;
:Objects are the basic building blocks of the bzw file.  Objects begin with a line declaring the object, some fields describing that object, and a line that closes the object (usually with &amp;quot;end&amp;quot;).  Each of these sections of the object is important.&lt;br /&gt;
;Comments&lt;br /&gt;
:BZFS ignores anything in a line following the #; the line has been &amp;quot;commented out.&amp;quot;  It is highly recommended that comments be used often, both for the mapmaker and for others that may see the map.&lt;br /&gt;
;3D Cartesian Coordinate System&lt;br /&gt;
:In most objects, you will see three numbers after position and size. These numbers are coordinates on a graph. The first number is the x coordinate (left and right) the middle number is the y coordinate (forward and backward) and the third number is the z coordinate (height and depth). Another way of thinking of it is: x = width, y = depth, z = height. (Those accustomed to the Y axis determining height will have to slightly adjust their thinking.) &lt;br /&gt;
&lt;br /&gt;
==Sample Objects==&lt;br /&gt;
===The Box===&lt;br /&gt;
Perhaps the simplest object is the box.  There is actually nothing special you can do to it (but in versions of BZFlag from 2.0.8 up, you can do a lot more to it).  Here is an example of a box:&lt;br /&gt;
&lt;br /&gt;
 box&lt;br /&gt;
   name box1             # Optional, but good to include&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   rotation 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the first line, notice the word &amp;quot;box&amp;quot;.  It simply says the next object is a box.  The next line is the name of the object.  It is defined with the syntax &amp;quot;&amp;lt;tt&amp;gt;name &#039;&#039;objectName&#039;&#039;&amp;lt;/tt&amp;gt;&amp;quot;.  It is not required, but is good to include.  The third line defines the position of the center of the bottom of the object.  The three arguments of &amp;lt;tt&amp;gt;position&amp;lt;/tt&amp;gt; are the x, y, and z coordinates of the box, respectively.  The x and y coordinates can be positive or negative, but the z coordinate should just be positive or zero.  On the fourth line, the size of the box is defined.  The arguments of &amp;lt;tt&amp;gt;size&amp;lt;/tt&amp;gt; are the x, y, and z sizes of the object, respectively.  The x and y arguments make the box that wide on both sides of it&#039;s position.  However, the z argument makes the object exactly the number of units tall as defined.  The next line just says how much the object is rotated.  This number is the number of degrees of rotation, and can be negative or positive.  The last line just tells BZFlag the object is done, and a new one can be defined.  Be sure to &#039;&#039;&#039;always&#039;&#039;&#039; use this.&lt;br /&gt;
&lt;br /&gt;
===The Cone===&lt;br /&gt;
Most objects have similar parameters as the basic box.  For instance, the code for a cone may look something like this:&lt;br /&gt;
&lt;br /&gt;
 cone&lt;br /&gt;
   name cone1&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 20&lt;br /&gt;
   divisions 128&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Divisions basically decide how smooth the cone is.  The higher the divisions the more smooth the cone is.  A division of 4 would look like a pyramid.  Another parameter that can be added to the cone object is angle. If you say angle 180, that would make 1/2 of a cone, 90 would make 1/4 of a cone, and so on. &lt;br /&gt;
&lt;br /&gt;
===The Arc===&lt;br /&gt;
&lt;br /&gt;
An arc is basically a cylinder. However it doesn’t have to be a perfect cylinder depending on certain options you select. For an arc the only required options are divisions, position and size. Just like the cone divisions have the same effect, position and size are all the same. Once again you can have an oval shaped cylinder type thing. Now, you WILL find more options to an arc than to a cone, for example the ratio option. The ratio options let you basically put a hole in the cylinder. So if you have the option: ratio 1 you would have a full cylinder. If you say for example ratio .3 or any number less than 1 you will get a whole in the cylinder. The bigger the number, the smaller the hole. Angle allows you to do a simi-circle. Rotation once again isn&#039;t really needed. all the options like spin and shear are the same for this object too! phydrv and matref I’ll show later. Let’s move to the sphere &lt;br /&gt;
&lt;br /&gt;
===The Sphere===&lt;br /&gt;
&lt;br /&gt;
The only options required to make a sphere are position, size, and divisions. &lt;br /&gt;
All these options do the same thing as they did in the objects above.  You may also have an oval like sphere.  You make an oval like sphere simply by making the x and y&#039;s different sizes just like in the cone and arc.  The radius option is just a substitute for size.  You can write size 10 10 10 or radius 10.  Both do the same thing. However if you want an oval shaped sphere you have to use size.  Rotation wouldn&#039;t really have an effect and the shear and spin works the same for this object.&lt;br /&gt;
&lt;br /&gt;
==Getting more help==&lt;br /&gt;
*The links at the bottom of the [[:Category:Map Making|Map Making]] page.&lt;br /&gt;
*The original creator of this page is flight, you can email him at dirtbikerdude_91@yahoo.com and he will be happy to answer any questions that he is capable of answering.&lt;br /&gt;
&lt;br /&gt;
==Special Objects==&lt;br /&gt;
There are certain objects that are often coded by hand because it is simpler or it is impossible to do with graphical map creation tools.  &lt;br /&gt;
&lt;br /&gt;
===Materials ===&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_bolt.png &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
Material is letting the computer know that a material is about to be explained to it.  You name it so that way you can reference it with the matref.  The name can be any thing you want as long as it does not have any spaces.  You type in &amp;lt;tt&amp;gt;addtexture&amp;lt;/tt&amp;gt; and you state a texture name.  Now, how do you know what texture names there are to use?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Linux&#039;&#039;&#039;: Running &amp;lt;tt&amp;gt;ls /usr/share/bzflag/*.png&amp;lt;/tt&amp;gt; in a terminal will show the list of pictures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Mac&#039;&#039;&#039;: If you control click (right click) on the bzflag icon, click show package contents, click contents, and click resources, those are the pictures you may use. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Windows&#039;&#039;&#039;: The default path is &amp;lt;tt&amp;gt;C:\Program Files\BZFlag\data\*.png&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What you will find are images that are used in every day games.  The top of a base, the wall of a base. A bullet which is blue_bolt.png (as was used above).  The full path to the texture needs to be used if the texture is not found in that directory.  Any customized textures should be uploaded to the [http://images.bzflag.org/submitimages/ BZFlag Image Submission System] before the map is hosted publicly.&lt;br /&gt;
&lt;br /&gt;
Servers running bzfs 2.0.8 and earlier will require &amp;quot;meshbox&amp;quot; and &amp;quot;meshpyr&amp;quot; in order to apply textures and physics to these objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instead of creating a new texture, many interesting and creative things can be done with the &amp;quot;diffuse&amp;quot; parameter in the material object.  You can add the diffuse command and it will look like this diffuse 1 1 1 1.  The first number is the amount of red that will be in the meshobject.  The second number is the amount of green, the third is the amount of blue.  So you can mix those colors to make more colors.  You may use a range from 0-1.  For example diffuse .3 .5 .26 1.  The fourth number determines the opacity or transparency (the see-throughability).  0 is invisible, .5 is half invisible, and 1 is normal. &lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   diffuse .5 .25 .1 .6 &lt;br /&gt;
   addtexture mesh.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Physics===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Physics make your tank behave in different ways.  If you have ever played laser mania by Louman than you know on the outskirts of the map there is something you can jump on and you go really fast, that is a physics. Physics and materials work the same way.  Physics is to material as phydrv is to matref.  You must specify a physics then on a meshbox, meshpyr cone arc sphere or whatever, you can reference that physics by using the phydrv command just like you would use the matref command for materials.  There are different physics commands.  Linear, angular, slide and death.  In the Louman map I mentioned above is a linear physics.  Linear physics makes your tank move in a line.  The numbers after a linear command are just like position x y z.  Example:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   linear 50 0 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive x direction you may use -50 and it will make it go the other way.&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy2 &lt;br /&gt;
   linear 0 50 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive y direction &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy3 &lt;br /&gt;
   linear 0 0 50 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank jump at a speed of 50 &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy4 &lt;br /&gt;
   slide 5 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank basically feel like it&#039;s on ice.  Whichever way the tank is moving it will keep moving that way. &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy5 &lt;br /&gt;
   death haha! you died &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make the tank die when it touches the object that refers to this and the message haha! you died will be displayed to that person. &lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   death I like you better dead! &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   phydrv phy1                       # Or what ever you named the physics.&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This works just like the material &lt;br /&gt;
&lt;br /&gt;
The thing about physics and materials is that they have to be written before they are referenced. &lt;br /&gt;
&lt;br /&gt;
This &#039;&#039;&#039;won&#039;t&#039;&#039;&#039; work &lt;br /&gt;
&lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_team.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
A group is a defined group of objects that can be called to gether as one.&lt;br /&gt;
&lt;br /&gt;
For example if a map editor is makeing a forest, and each tree contains 2 objects, the editor doesn&#039;t want to type up the code for each tree over and over again. What he can do is tell BZFS that these objects = tree. and then whenever he wants to make a tree he just types tree.&lt;br /&gt;
&lt;br /&gt;
Example-----------&lt;br /&gt;
&lt;br /&gt;
first define a group of obects as a tree &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  define tree&lt;br /&gt;
  &lt;br /&gt;
  box&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  size 2 2 4&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  pyramid&lt;br /&gt;
  position 0 0 3&lt;br /&gt;
  size 5 5 10&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  enddef&lt;br /&gt;
&lt;br /&gt;
then to add a tree simpily type&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  group tree&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
==Transformations==&lt;br /&gt;
[[Category:Map Making]]&lt;br /&gt;
Transformations are simple ways of modifying objects so that maps have some variety. These can get complicated so I will only give you a sample of what they can do. There are 3 transformations shift, spin, and shear. You can find a different also helpful page here [[3d Transformations]]&lt;br /&gt;
&lt;br /&gt;
The one is will tell you about is &#039;&#039;&#039;Shift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shift&#039;&#039;&#039; moves an object by the amount of units that you specify from its present position.&lt;br /&gt;
the object..&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at place 10 10 0&lt;br /&gt;
&lt;br /&gt;
while the object..&lt;br /&gt;
&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  shift 0 0 10&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at position 10 10 10.&lt;br /&gt;
&lt;br /&gt;
====Spin====&lt;br /&gt;
Spinning an object is just like rotating an object but can be on a different axis. (y and x)&lt;br /&gt;
When you rotate it is around the center of the object.&lt;br /&gt;
Remember: Only spin-able objects can be spun.&lt;br /&gt;
Here is what the code looks like:&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
 end&lt;br /&gt;
The meshbox will now be tilted 45 degrees on its y axis.&lt;br /&gt;
Spin code has four numbers, the first one is how many degrees to spin.&lt;br /&gt;
The last three are for which axis&#039;s to spin, by placing a value of more than 0.&lt;/div&gt;</summary>
		<author><name>ClayOgre</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7335</id>
		<title>Map making by hand</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7335"/>
		<updated>2010-11-05T23:43:49Z</updated>

		<summary type="html">&lt;p&gt;ClayOgre: /* What that means */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoDoc|Major re-organization, transform away from &amp;quot;chat&amp;quot; style. Need to reference pages elsewhere on the wiki in place of much of the content which appears to be building up here.  Create them if necessary, or see the list [[Special:Allpages|here]].}}&lt;br /&gt;
Although there are a number of GUI options for creating maps such as BZ-Edit, 3D modelers, many map-makers use a basic text-editor.  There are many times when it is necessary to make small changes to a map, such as including objects that are unavailable in GUI map-maker, but there are also some who enjoy the challenge of creating a map entirely from scratch with a text-editor.&lt;br /&gt;
&lt;br /&gt;
==Text Editors==&lt;br /&gt;
Most text-editors designed for coding/programming are more than sufficient for editing bzw files.  Although word-processing programs such as Microsoft Word can be used, there are many cheaper (free) and more efficient programs designed specifically for coding. If you are interested in syntax highlighting, look at the [http://my.bzflag.org/bb/viewtopic.php?f=24&amp;amp;t=16037&amp;amp;p=148953 forum topic].&lt;br /&gt;
===Windows===&lt;br /&gt;
*Notepad&lt;br /&gt;
*PSPad&lt;br /&gt;
*NoteTab&lt;br /&gt;
*[http://notepad-plus-plus.org/ Notepad ++] - a tabbed editor based on Scite.&lt;br /&gt;
&lt;br /&gt;
===Mac===&lt;br /&gt;
*TextWrangler&lt;br /&gt;
*TextEdit&lt;br /&gt;
===Linux===&lt;br /&gt;
*Command-line editors such as nano, emacs, pico, vim, or ed.&lt;br /&gt;
*GEdit&lt;br /&gt;
*Kate&lt;br /&gt;
*Scite&lt;br /&gt;
&lt;br /&gt;
==Editing existing maps==&lt;br /&gt;
Beginning mapmakers should spend some time studying and making small changes in existing maps to see how things work.  In the client, maps can be saved for editing by joining the desired server and choosing: Options&amp;gt;Save World.  Maps can also be saved by issuing the /saveworld command.  The map should be a simple map when getting started.  One may find it easier to create a file in BZEdit and open the resulting file in the text-editor.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
If you have created a box in BZEdit you may see:&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
 world &lt;br /&gt;
   size 400 &lt;br /&gt;
 end &lt;br /&gt;
 options &lt;br /&gt;
   +r &lt;br /&gt;
   -j &lt;br /&gt;
   -set _tankSpeed 25 &lt;br /&gt;
   -ms 5 &lt;br /&gt;
   -mp 0,2,0,2,0,2 &lt;br /&gt;
 end &lt;br /&gt;
 box &lt;br /&gt;
   name box1 &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
 end &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===What that means===&lt;br /&gt;
&amp;quot;There are set variables that define various things such as how fast your tank is, how fast the bullets are, or if it&#039;s raining or foggy.  Put those in the options setting with &amp;quot;-set(space) &amp;quot; in front of it. You can also make those changes as an admin by using /set _variable (notice there is a space between the set and the _).  A full list of these settings can be found on the [[Server Variables]] page.  Other options, such as how many times a flag can be grabbed before it resets or if flags can land on buildings are explained [http://my.bzflag.org/bb/files/antigrav4teamconf_114.txt in this forum post]&lt;br /&gt;
Optionally, the variables can be placed in a separate configuration file and referenced when the server is started.&amp;quot;&lt;br /&gt;
&#039;&#039;&#039;old&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, it says:&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
(Note: the # sign is used for comments.)&lt;br /&gt;
&lt;br /&gt;
This is the text added by the application initially, kind of like advertising. This will be the first thing anyone sees when they look at the map.&lt;br /&gt;
&lt;br /&gt;
The next thing is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
world &lt;br /&gt;
  size 400 # Sets the world size to 400 (800 x 800 total)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is rather self-explanatory. It&#039;s the &amp;lt;size&amp;gt; of the &amp;lt;world&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Next is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options &lt;br /&gt;
  +r   # Enable Ricochet&lt;br /&gt;
  -j   # Enable Jumping&lt;br /&gt;
  -set _tankSpeed 25  # Sets the tank speed to 25 bzunits/second&lt;br /&gt;
  -ms 5  # Sets the maximum shots (per tank) to 5&lt;br /&gt;
  -mp 0,2,0,2,0,2  # Maximum of 2 Red Players, 2 Blue Players, and 2 Observers&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is the &amp;lt;options&amp;gt;.&lt;br /&gt;
The commands listed here are:&lt;br /&gt;
Ricochet, Jumping, Tank speed, Max Shots, and Max Players.&lt;br /&gt;
These are rather self explanatory, except for Max Players. It works like this. Rogue, Red, Green, Blue, Purple, Observer. Each number defines the max number of players per category.&lt;br /&gt;
&lt;br /&gt;
For more, see [[Options_(object)|Options Object]].&lt;br /&gt;
&lt;br /&gt;
We now come to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
box &lt;br /&gt;
  name box1      # Generally unused&lt;br /&gt;
  position 0 0 0 # X Y Z Position&lt;br /&gt;
  size 10 10 10  # X Y Z Size (bzunits from the position of the box)&lt;br /&gt;
  rotation 0     # Rotation (in degrees)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is a &amp;lt;box&amp;gt; with a &amp;lt;name&amp;gt; of &amp;lt;box1&amp;gt;.&lt;br /&gt;
The &amp;lt;position&amp;gt; is 0,0,0 in R3[http://en.wikipedia.org/wiki/R3].&lt;br /&gt;
The rest is pretty self explanatory.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; EVERY STATEMENT MUST HAVE AN END.&lt;br /&gt;
&lt;br /&gt;
===Basic Definitions===&lt;br /&gt;
;Objects&lt;br /&gt;
:Objects are the basic building blocks of the bzw file.  Objects begin with a line declaring the object, some fields describing that object, and a line that closes the object (usually with &amp;quot;end&amp;quot;).  Each of these sections of the object is important.&lt;br /&gt;
;Comments&lt;br /&gt;
:BZFS ignores anything in a line following the #; the line has been &amp;quot;commented out.&amp;quot;  It is highly recommended that comments be used often, both for the mapmaker and for others that may see the map.&lt;br /&gt;
;3D Cartesian Coordinate System&lt;br /&gt;
:In most objects, you will see three numbers after position and size. These numbers are coordinates on a graph. The first number is the x coordinate (left and right) the middle number is the y coordinate (forward and backward) and the third number is the z coordinate (height and depth). Another way of thinking of it is: x = width, y = depth, z = height. (Those accustomed to the Y axis determining height will have to slightly adjust their thinking.) &lt;br /&gt;
&lt;br /&gt;
==Sample Objects==&lt;br /&gt;
===The Box===&lt;br /&gt;
Perhaps the simplest object is the box.  There is actually nothing special you can do to it (but in versions of BZFlag from 2.0.8 up, you can do a lot more to it).  Here is an example of a box:&lt;br /&gt;
&lt;br /&gt;
 box&lt;br /&gt;
   name box1             # Optional, but good to include&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   rotation 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the first line, notice the word &amp;quot;box&amp;quot;.  It simply says the next object is a box.  The next line is the name of the object.  It is defined with the syntax &amp;quot;&amp;lt;tt&amp;gt;name &#039;&#039;objectName&#039;&#039;&amp;lt;/tt&amp;gt;&amp;quot;.  It is not required, but is good to include.  The third line defines the position of the center of the bottom of the object.  The three arguments of &amp;lt;tt&amp;gt;position&amp;lt;/tt&amp;gt; are the x, y, and z coordinates of the box, respectively.  The x and y coordinates can be positive or negative, but the z coordinate should just be positive or zero.  On the fourth line, the size of the box is defined.  The arguments of &amp;lt;tt&amp;gt;size&amp;lt;/tt&amp;gt; are the x, y, and z sizes of the object, respectively.  The x and y arguments make the box that wide on both sides of it&#039;s position.  However, the z argument makes the object exactly the number of units tall as defined.  The next line just says how much the object is rotated.  This number is the number of degrees of rotation, and can be negative or positive.  The last line just tells BZFlag the object is done, and a new one can be defined.  Be sure to &#039;&#039;&#039;always&#039;&#039;&#039; use this.&lt;br /&gt;
&lt;br /&gt;
===The Cone===&lt;br /&gt;
Most objects have similar parameters as the basic box.  For instance, the code for a cone may look something like this:&lt;br /&gt;
&lt;br /&gt;
 cone&lt;br /&gt;
   name cone1&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 20&lt;br /&gt;
   divisions 128&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Divisions basically decide how smooth the cone is.  The higher the divisions the more smooth the cone is.  A division of 4 would look like a pyramid.  Another parameter that can be added to the cone object is angle. If you say angle 180, that would make 1/2 of a cone, 90 would make 1/4 of a cone, and so on. &lt;br /&gt;
&lt;br /&gt;
===The Arc===&lt;br /&gt;
&lt;br /&gt;
An arc is basically a cylinder. However it doesn’t have to be a perfect cylinder depending on certain options you select. For an arc the only required options are divisions, position and size. Just like the cone divisions have the same effect, position and size are all the same. Once again you can have an oval shaped cylinder type thing. Now, you WILL find more options to an arc than to a cone, for example the ratio option. The ratio options let you basically put a hole in the cylinder. So if you have the option: ratio 1 you would have a full cylinder. If you say for example ratio .3 or any number less than 1 you will get a whole in the cylinder. The bigger the number, the smaller the hole. Angle allows you to do a simi-circle. Rotation once again isn&#039;t really needed. all the options like spin and shear are the same for this object too! phydrv and matref I’ll show later. Let’s move to the sphere &lt;br /&gt;
&lt;br /&gt;
===The Sphere===&lt;br /&gt;
&lt;br /&gt;
The only options required to make a sphere are position, size, and divisions. &lt;br /&gt;
All these options do the same thing as they did in the objects above.  You may also have an oval like sphere.  You make an oval like sphere simply by making the x and y&#039;s different sizes just like in the cone and arc.  The radius option is just a substitute for size.  You can write size 10 10 10 or radius 10.  Both do the same thing. However if you want an oval shaped sphere you have to use size.  Rotation wouldn&#039;t really have an effect and the shear and spin works the same for this object.&lt;br /&gt;
&lt;br /&gt;
==Getting more help==&lt;br /&gt;
*The links at the bottom of the [[:Category:Map Making|Map Making]] page.&lt;br /&gt;
*The original creator of this page is flight, you can email him at dirtbikerdude_91@yahoo.com and he will be happy to answer any questions that he is capable of answering.&lt;br /&gt;
&lt;br /&gt;
==Special Objects==&lt;br /&gt;
There are certain objects that are often coded by hand because it is simpler or it is impossible to do with graphical map creation tools.  &lt;br /&gt;
&lt;br /&gt;
===Materials ===&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_bolt.png &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
Material is letting the computer know that a material is about to be explained to it.  You name it so that way you can reference it with the matref.  The name can be any thing you want as long as it does not have any spaces.  You type in &amp;lt;tt&amp;gt;addtexture&amp;lt;/tt&amp;gt; and you state a texture name.  Now, how do you know what texture names there are to use?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Linux&#039;&#039;&#039;: Running &amp;lt;tt&amp;gt;ls /usr/share/bzflag/*.png&amp;lt;/tt&amp;gt; in a terminal will show the list of pictures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Mac&#039;&#039;&#039;: If you control click (right click) on the bzflag icon, click show package contents, click contents, and click resources, those are the pictures you may use. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Windows&#039;&#039;&#039;: The default path is &amp;lt;tt&amp;gt;C:\Program Files\BZFlag\data\*.png&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What you will find are images that are used in every day games.  The top of a base, the wall of a base. A bullet which is blue_bolt.png (as was used above).  The full path to the texture needs to be used if the texture is not found in that directory.  Any customized textures should be uploaded to the [http://images.bzflag.org/submitimages/ BZFlag Image Submission System] before the map is hosted publicly.&lt;br /&gt;
&lt;br /&gt;
Servers running bzfs 2.0.8 and earlier will require &amp;quot;meshbox&amp;quot; and &amp;quot;meshpyr&amp;quot; in order to apply textures and physics to these objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instead of creating a new texture, many interesting and creative things can be done with the &amp;quot;diffuse&amp;quot; parameter in the material object.  You can add the diffuse command and it will look like this diffuse 1 1 1 1.  The first number is the amount of red that will be in the meshobject.  The second number is the amount of green, the third is the amount of blue.  So you can mix those colors to make more colors.  You may use a range from 0-1.  For example diffuse .3 .5 .26 1.  The fourth number determines the opacity or transparency (the see-throughability).  0 is invisible, .5 is half invisible, and 1 is normal. &lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   diffuse .5 .25 .1 .6 &lt;br /&gt;
   addtexture mesh.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Physics===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Physics make your tank behave in different ways.  If you have ever played laser mania by Louman than you know on the outskirts of the map there is something you can jump on and you go really fast, that is a physics. Physics and materials work the same way.  Physics is to material as phydrv is to matref.  You must specify a physics then on a meshbox, meshpyr cone arc sphere or whatever, you can reference that physics by using the phydrv command just like you would use the matref command for materials.  There are different physics commands.  Linear, angular, slide and death.  In the Louman map I mentioned above is a linear physics.  Linear physics makes your tank move in a line.  The numbers after a linear command are just like position x y z.  Example:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   linear 50 0 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive x direction you may use -50 and it will make it go the other way.&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy2 &lt;br /&gt;
   linear 0 50 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive y direction &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy3 &lt;br /&gt;
   linear 0 0 50 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank jump at a speed of 50 &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy4 &lt;br /&gt;
   slide 5 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank basically feel like it&#039;s on ice.  Whichever way the tank is moving it will keep moving that way. &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy5 &lt;br /&gt;
   death haha! you died &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make the tank die when it touches the object that refers to this and the message haha! you died will be displayed to that person. &lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   death I like you better dead! &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   phydrv phy1                       # Or what ever you named the physics.&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This works just like the material &lt;br /&gt;
&lt;br /&gt;
The thing about physics and materials is that they have to be written before they are referenced. &lt;br /&gt;
&lt;br /&gt;
This &#039;&#039;&#039;won&#039;t&#039;&#039;&#039; work &lt;br /&gt;
&lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_team.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
A group is a defined group of objects that can be called to gether as one.&lt;br /&gt;
&lt;br /&gt;
For example if a map editor is makeing a forest, and each tree contains 2 objects, the editor doesn&#039;t want to type up the code for each tree over and over again. What he can do is tell BZFS that these objects = tree. and then whenever he wants to make a tree he just types tree.&lt;br /&gt;
&lt;br /&gt;
Example-----------&lt;br /&gt;
&lt;br /&gt;
first define a group of obects as a tree &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  define tree&lt;br /&gt;
  &lt;br /&gt;
  box&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  size 2 2 4&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  pyramid&lt;br /&gt;
  position 0 0 3&lt;br /&gt;
  size 5 5 10&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  enddef&lt;br /&gt;
&lt;br /&gt;
then to add a tree simpily type&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  group tree&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
==Transformations==&lt;br /&gt;
[[Category:Map Making]]&lt;br /&gt;
Transformations are simple ways of modifying objects so that maps have some variety. These can get complicated so I will only give you a sample of what they can do. There are 3 transformations shift, spin, and shear. You can find a different also helpful page here [[3d Transformations]]&lt;br /&gt;
&lt;br /&gt;
The one is will tell you about is &#039;&#039;&#039;Shift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shift&#039;&#039;&#039; moves an object by the amount of units that you specify from its present position.&lt;br /&gt;
the object..&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at place 10 10 0&lt;br /&gt;
&lt;br /&gt;
while the object..&lt;br /&gt;
&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  shift 0 0 10&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at position 10 10 10.&lt;br /&gt;
&lt;br /&gt;
====Spin====&lt;br /&gt;
Spinning an object is just like rotating an object but can be on a different axis. (y and x)&lt;br /&gt;
When you rotate it is around the center of the object.&lt;br /&gt;
Remember: Only spin-able objects can be spun.&lt;br /&gt;
Here is what the code looks like:&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
 end&lt;br /&gt;
The meshbox will now be tilted 45 degrees on its y axis.&lt;br /&gt;
Spin code has four numbers, the first one is how many degrees to spin.&lt;br /&gt;
The last three are for which axis&#039;s to spin, by placing a value of more than 0.&lt;/div&gt;</summary>
		<author><name>ClayOgre</name></author>
	</entry>
	<entry>
		<id>https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7334</id>
		<title>Map making by hand</title>
		<link rel="alternate" type="text/html" href="https://wiki.bzflag.org/index.php?title=Map_making_by_hand&amp;diff=7334"/>
		<updated>2010-11-05T23:41:30Z</updated>

		<summary type="html">&lt;p&gt;ClayOgre: /* Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DoDoc|Major re-organization, transform away from &amp;quot;chat&amp;quot; style. Need to reference pages elsewhere on the wiki in place of much of the content which appears to be building up here.  Create them if necessary, or see the list [[Special:Allpages|here]].}}&lt;br /&gt;
Although there are a number of GUI options for creating maps such as BZ-Edit, 3D modelers, many map-makers use a basic text-editor.  There are many times when it is necessary to make small changes to a map, such as including objects that are unavailable in GUI map-maker, but there are also some who enjoy the challenge of creating a map entirely from scratch with a text-editor.&lt;br /&gt;
&lt;br /&gt;
==Text Editors==&lt;br /&gt;
Most text-editors designed for coding/programming are more than sufficient for editing bzw files.  Although word-processing programs such as Microsoft Word can be used, there are many cheaper (free) and more efficient programs designed specifically for coding. If you are interested in syntax highlighting, look at the [http://my.bzflag.org/bb/viewtopic.php?f=24&amp;amp;t=16037&amp;amp;p=148953 forum topic].&lt;br /&gt;
===Windows===&lt;br /&gt;
*Notepad&lt;br /&gt;
*PSPad&lt;br /&gt;
*NoteTab&lt;br /&gt;
*[http://notepad-plus-plus.org/ Notepad ++] - a tabbed editor based on Scite.&lt;br /&gt;
&lt;br /&gt;
===Mac===&lt;br /&gt;
*TextWrangler&lt;br /&gt;
*TextEdit&lt;br /&gt;
===Linux===&lt;br /&gt;
*Command-line editors such as nano, emacs, pico, vim, or ed.&lt;br /&gt;
*GEdit&lt;br /&gt;
*Kate&lt;br /&gt;
*Scite&lt;br /&gt;
&lt;br /&gt;
==Editing existing maps==&lt;br /&gt;
Beginning mapmakers should spend some time studying and making small changes in existing maps to see how things work.  In the client, maps can be saved for editing by joining the desired server and choosing: Options&amp;gt;Save World.  Maps can also be saved by issuing the /saveworld command.  The map should be a simple map when getting started.  One may find it easier to create a file in BZEdit and open the resulting file in the text-editor.&lt;br /&gt;
&lt;br /&gt;
==Getting Started==&lt;br /&gt;
If you have created a box in BZEdit you may see:&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
 world &lt;br /&gt;
   size 400 &lt;br /&gt;
 end &lt;br /&gt;
 options &lt;br /&gt;
   +r &lt;br /&gt;
   -j &lt;br /&gt;
   -set _tankSpeed 25 &lt;br /&gt;
   -ms 5 &lt;br /&gt;
   -mp 0,2,0,2,0,2 &lt;br /&gt;
 end &lt;br /&gt;
 box &lt;br /&gt;
   name box1 &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
 end &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===What that means===&lt;br /&gt;
&amp;quot;There are set variables that define various things such as how fast your tank is, how fast the bullets are, or if it&#039;s raining or foggy.  Put those in the options setting with &amp;quot;-set(space) &amp;quot; in front of it. You can also make those changes as an admin by using /set _variable (notice there is a space between the set and the _).  A full list of these settings can be found on the [[Server Variables]] page.  Other options, such as how many times a flag can be grabbed before it resets or if flags can land on buildings are explained [http://my.bzflag.org/bb/files/antigrav4teamconf_114.txt in this forum post]&lt;br /&gt;
Optionally, the variables can be placed in a separate configuration file and referenced when the server is started.&amp;quot;&lt;br /&gt;
&#039;&#039;&#039;old&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
First, it says:&lt;br /&gt;
 # World built with bzedit32 world class, available at&lt;br /&gt;
 # http://www.sourceforge.net/projects/bzflag&lt;br /&gt;
(Note: the # sign is used for comments.)&lt;br /&gt;
&lt;br /&gt;
This is the text added by the application initially, kind of like advertising. This will be the first thing anyone sees when they look at the map.&lt;br /&gt;
&lt;br /&gt;
The next thing is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
world &lt;br /&gt;
  size 400 # Sets the world size to 400 (800 x 800 total)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is rather self-explanatory. It&#039;s the &amp;lt;size&amp;gt; of the &amp;lt;world&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Next is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
options &lt;br /&gt;
  +r   # Enable Ricochet&lt;br /&gt;
  -j   # Enable Jumping&lt;br /&gt;
  -set _tankSpeed 25  # Sets the tank speed to 25 bzunits/second&lt;br /&gt;
  -ms 5  # Sets the maximum shots (per tank) to 5&lt;br /&gt;
  -mp 0,2,0,2,0,2  # Maximum of 2 Red Players, 2 Blue Players, and 2 Observers&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is the &amp;lt;options&amp;gt;.&lt;br /&gt;
The commands listed here are:&lt;br /&gt;
Ricochet, Jumping, Tank speed, Max Shots, and Max Players.&lt;br /&gt;
These are rather self explanatory, except for Max Players. It works like this. Rouge, Red, Green, Blue, Purple, Observer. Each number defines the max number of players per category.&lt;br /&gt;
&lt;br /&gt;
For more, see [[Options_(object)|Options Object]].&lt;br /&gt;
&lt;br /&gt;
We now come to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
box &lt;br /&gt;
  name box1      # Generally unused&lt;br /&gt;
  position 0 0 0 # X Y Z Position&lt;br /&gt;
  size 10 10 10  # X Y Z Size (bzunits from the position of the box)&lt;br /&gt;
  rotation 0     # Rotation (in degrees)&lt;br /&gt;
end &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This is a &amp;lt;box&amp;gt; with a &amp;lt;name&amp;gt; of &amp;lt;box1&amp;gt;.&lt;br /&gt;
The &amp;lt;position&amp;gt; is 0,0,0 in R3[http://en.wikipedia.org/wiki/R3].&lt;br /&gt;
The rest is pretty self explanatory.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important:&#039;&#039;&#039; EVERY STATEMENT MUST HAVE AN END.&lt;br /&gt;
&lt;br /&gt;
===Basic Definitions===&lt;br /&gt;
;Objects&lt;br /&gt;
:Objects are the basic building blocks of the bzw file.  Objects begin with a line declaring the object, some fields describing that object, and a line that closes the object (usually with &amp;quot;end&amp;quot;).  Each of these sections of the object is important.&lt;br /&gt;
;Comments&lt;br /&gt;
:BZFS ignores anything in a line following the #; the line has been &amp;quot;commented out.&amp;quot;  It is highly recommended that comments be used often, both for the mapmaker and for others that may see the map.&lt;br /&gt;
;3D Cartesian Coordinate System&lt;br /&gt;
:In most objects, you will see three numbers after position and size. These numbers are coordinates on a graph. The first number is the x coordinate (left and right) the middle number is the y coordinate (forward and backward) and the third number is the z coordinate (height and depth). Another way of thinking of it is: x = width, y = depth, z = height. (Those accustomed to the Y axis determining height will have to slightly adjust their thinking.) &lt;br /&gt;
&lt;br /&gt;
==Sample Objects==&lt;br /&gt;
===The Box===&lt;br /&gt;
Perhaps the simplest object is the box.  There is actually nothing special you can do to it (but in versions of BZFlag from 2.0.8 up, you can do a lot more to it).  Here is an example of a box:&lt;br /&gt;
&lt;br /&gt;
 box&lt;br /&gt;
   name box1             # Optional, but good to include&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   rotation 0&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
In the first line, notice the word &amp;quot;box&amp;quot;.  It simply says the next object is a box.  The next line is the name of the object.  It is defined with the syntax &amp;quot;&amp;lt;tt&amp;gt;name &#039;&#039;objectName&#039;&#039;&amp;lt;/tt&amp;gt;&amp;quot;.  It is not required, but is good to include.  The third line defines the position of the center of the bottom of the object.  The three arguments of &amp;lt;tt&amp;gt;position&amp;lt;/tt&amp;gt; are the x, y, and z coordinates of the box, respectively.  The x and y coordinates can be positive or negative, but the z coordinate should just be positive or zero.  On the fourth line, the size of the box is defined.  The arguments of &amp;lt;tt&amp;gt;size&amp;lt;/tt&amp;gt; are the x, y, and z sizes of the object, respectively.  The x and y arguments make the box that wide on both sides of it&#039;s position.  However, the z argument makes the object exactly the number of units tall as defined.  The next line just says how much the object is rotated.  This number is the number of degrees of rotation, and can be negative or positive.  The last line just tells BZFlag the object is done, and a new one can be defined.  Be sure to &#039;&#039;&#039;always&#039;&#039;&#039; use this.&lt;br /&gt;
&lt;br /&gt;
===The Cone===&lt;br /&gt;
Most objects have similar parameters as the basic box.  For instance, the code for a cone may look something like this:&lt;br /&gt;
&lt;br /&gt;
 cone&lt;br /&gt;
   name cone1&lt;br /&gt;
   position 0 0 0&lt;br /&gt;
   size 10 10 20&lt;br /&gt;
   divisions 128&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
Divisions basically decide how smooth the cone is.  The higher the divisions the more smooth the cone is.  A division of 4 would look like a pyramid.  Another parameter that can be added to the cone object is angle. If you say angle 180, that would make 1/2 of a cone, 90 would make 1/4 of a cone, and so on. &lt;br /&gt;
&lt;br /&gt;
===The Arc===&lt;br /&gt;
&lt;br /&gt;
An arc is basically a cylinder. However it doesn’t have to be a perfect cylinder depending on certain options you select. For an arc the only required options are divisions, position and size. Just like the cone divisions have the same effect, position and size are all the same. Once again you can have an oval shaped cylinder type thing. Now, you WILL find more options to an arc than to a cone, for example the ratio option. The ratio options let you basically put a hole in the cylinder. So if you have the option: ratio 1 you would have a full cylinder. If you say for example ratio .3 or any number less than 1 you will get a whole in the cylinder. The bigger the number, the smaller the hole. Angle allows you to do a simi-circle. Rotation once again isn&#039;t really needed. all the options like spin and shear are the same for this object too! phydrv and matref I’ll show later. Let’s move to the sphere &lt;br /&gt;
&lt;br /&gt;
===The Sphere===&lt;br /&gt;
&lt;br /&gt;
The only options required to make a sphere are position, size, and divisions. &lt;br /&gt;
All these options do the same thing as they did in the objects above.  You may also have an oval like sphere.  You make an oval like sphere simply by making the x and y&#039;s different sizes just like in the cone and arc.  The radius option is just a substitute for size.  You can write size 10 10 10 or radius 10.  Both do the same thing. However if you want an oval shaped sphere you have to use size.  Rotation wouldn&#039;t really have an effect and the shear and spin works the same for this object.&lt;br /&gt;
&lt;br /&gt;
==Getting more help==&lt;br /&gt;
*The links at the bottom of the [[:Category:Map Making|Map Making]] page.&lt;br /&gt;
*The original creator of this page is flight, you can email him at dirtbikerdude_91@yahoo.com and he will be happy to answer any questions that he is capable of answering.&lt;br /&gt;
&lt;br /&gt;
==Special Objects==&lt;br /&gt;
There are certain objects that are often coded by hand because it is simpler or it is impossible to do with graphical map creation tools.  &lt;br /&gt;
&lt;br /&gt;
===Materials ===&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_bolt.png &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
Material is letting the computer know that a material is about to be explained to it.  You name it so that way you can reference it with the matref.  The name can be any thing you want as long as it does not have any spaces.  You type in &amp;lt;tt&amp;gt;addtexture&amp;lt;/tt&amp;gt; and you state a texture name.  Now, how do you know what texture names there are to use?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Linux&#039;&#039;&#039;: Running &amp;lt;tt&amp;gt;ls /usr/share/bzflag/*.png&amp;lt;/tt&amp;gt; in a terminal will show the list of pictures.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Mac&#039;&#039;&#039;: If you control click (right click) on the bzflag icon, click show package contents, click contents, and click resources, those are the pictures you may use. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On Windows&#039;&#039;&#039;: The default path is &amp;lt;tt&amp;gt;C:\Program Files\BZFlag\data\*.png&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What you will find are images that are used in every day games.  The top of a base, the wall of a base. A bullet which is blue_bolt.png (as was used above).  The full path to the texture needs to be used if the texture is not found in that directory.  Any customized textures should be uploaded to the [http://images.bzflag.org/submitimages/ BZFlag Image Submission System] before the map is hosted publicly.&lt;br /&gt;
&lt;br /&gt;
Servers running bzfs 2.0.8 and earlier will require &amp;quot;meshbox&amp;quot; and &amp;quot;meshpyr&amp;quot; in order to apply textures and physics to these objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Instead of creating a new texture, many interesting and creative things can be done with the &amp;quot;diffuse&amp;quot; parameter in the material object.  You can add the diffuse command and it will look like this diffuse 1 1 1 1.  The first number is the amount of red that will be in the meshobject.  The second number is the amount of green, the third is the amount of blue.  So you can mix those colors to make more colors.  You may use a range from 0-1.  For example diffuse .3 .5 .26 1.  The fourth number determines the opacity or transparency (the see-throughability).  0 is invisible, .5 is half invisible, and 1 is normal. &lt;br /&gt;
&lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   diffuse .5 .25 .1 .6 &lt;br /&gt;
   addtexture mesh.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Physics===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Physics make your tank behave in different ways.  If you have ever played laser mania by Louman than you know on the outskirts of the map there is something you can jump on and you go really fast, that is a physics. Physics and materials work the same way.  Physics is to material as phydrv is to matref.  You must specify a physics then on a meshbox, meshpyr cone arc sphere or whatever, you can reference that physics by using the phydrv command just like you would use the matref command for materials.  There are different physics commands.  Linear, angular, slide and death.  In the Louman map I mentioned above is a linear physics.  Linear physics makes your tank move in a line.  The numbers after a linear command are just like position x y z.  Example:&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   linear 50 0 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive x direction you may use -50 and it will make it go the other way.&lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy2 &lt;br /&gt;
   linear 0 50 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank move at a speed of 50 in a positive y direction &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy3 &lt;br /&gt;
   linear 0 0 50 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank jump at a speed of 50 &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy4 &lt;br /&gt;
   slide 5 0 &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make your tank basically feel like it&#039;s on ice.  Whichever way the tank is moving it will keep moving that way. &lt;br /&gt;
&lt;br /&gt;
 physics &lt;br /&gt;
   name phy5 &lt;br /&gt;
   death haha! you died &lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This will make the tank die when it touches the object that refers to this and the message haha! you died will be displayed to that person. &lt;br /&gt;
&lt;br /&gt;
example:&lt;br /&gt;
 physics &lt;br /&gt;
   name phy1 &lt;br /&gt;
   death I like you better dead! &lt;br /&gt;
 end &lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   phydrv phy1                       # Or what ever you named the physics.&lt;br /&gt;
 end &lt;br /&gt;
&lt;br /&gt;
This works just like the material &lt;br /&gt;
&lt;br /&gt;
The thing about physics and materials is that they have to be written before they are referenced. &lt;br /&gt;
&lt;br /&gt;
This &#039;&#039;&#039;won&#039;t&#039;&#039;&#039; work &lt;br /&gt;
&lt;br /&gt;
 meshbox &lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   size 10 10 10 &lt;br /&gt;
   rotation 0 &lt;br /&gt;
   matref mat1 &lt;br /&gt;
 end &lt;br /&gt;
 material &lt;br /&gt;
   name mat1 &lt;br /&gt;
   addtexture blue_team.png &lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
===Groups===&lt;br /&gt;
A group is a defined group of objects that can be called to gether as one.&lt;br /&gt;
&lt;br /&gt;
For example if a map editor is makeing a forest, and each tree contains 2 objects, the editor doesn&#039;t want to type up the code for each tree over and over again. What he can do is tell BZFS that these objects = tree. and then whenever he wants to make a tree he just types tree.&lt;br /&gt;
&lt;br /&gt;
Example-----------&lt;br /&gt;
&lt;br /&gt;
first define a group of obects as a tree &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  define tree&lt;br /&gt;
  &lt;br /&gt;
  box&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  size 2 2 4&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  pyramid&lt;br /&gt;
  position 0 0 3&lt;br /&gt;
  size 5 5 10&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  enddef&lt;br /&gt;
&lt;br /&gt;
then to add a tree simpily type&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  group tree&lt;br /&gt;
  position 0 0 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
==Transformations==&lt;br /&gt;
[[Category:Map Making]]&lt;br /&gt;
Transformations are simple ways of modifying objects so that maps have some variety. These can get complicated so I will only give you a sample of what they can do. There are 3 transformations shift, spin, and shear. You can find a different also helpful page here [[3d Transformations]]&lt;br /&gt;
&lt;br /&gt;
The one is will tell you about is &#039;&#039;&#039;Shift&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shift&#039;&#039;&#039; moves an object by the amount of units that you specify from its present position.&lt;br /&gt;
the object..&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at place 10 10 0&lt;br /&gt;
&lt;br /&gt;
while the object..&lt;br /&gt;
&lt;br /&gt;
  box&lt;br /&gt;
  position 10 10 0&lt;br /&gt;
  shift 0 0 10&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
is at position 10 10 10.&lt;br /&gt;
&lt;br /&gt;
====Spin====&lt;br /&gt;
Spinning an object is just like rotating an object but can be on a different axis. (y and x)&lt;br /&gt;
When you rotate it is around the center of the object.&lt;br /&gt;
Remember: Only spin-able objects can be spun.&lt;br /&gt;
Here is what the code looks like:&lt;br /&gt;
 meshbox&lt;br /&gt;
   position 0 0 0 &lt;br /&gt;
   rotation 0&lt;br /&gt;
   size 10 10 10&lt;br /&gt;
   spin 45 0 1 0&lt;br /&gt;
 end&lt;br /&gt;
The meshbox will now be tilted 45 degrees on its y axis.&lt;br /&gt;
Spin code has four numbers, the first one is how many degrees to spin.&lt;br /&gt;
The last three are for which axis&#039;s to spin, by placing a value of more than 0.&lt;/div&gt;</summary>
		<author><name>ClayOgre</name></author>
	</entry>
</feed>