The naming convention for AP levels will be "level-*.xml" where * is the
usual regular expression definition of *.  Files will be laid out as follows:

<?xml version="1.0" encoding="iso-8859-1"?>
<resources>

  <section name="Description">

    <integer
      name="ID"
      value="1" />

    <string
      name="SelectDescription"
      value="Level 1" />

    <string
      name="LevelDescription"
      value="Try to get the basketball into the wooden bin." />

  </section>

  <section name="World">

    <world
      name="world"
      size="10 10 10"
      box="brushed_metal.jpg"
      clouds="clouds.jpg"  />

    <camera
      name="camera"
      radius="10"
      elevation="20"
      azimuth="-50" />

  </section>

  <section name="Goals">

    <goal
      name="Goal1"
      ID="0"
      type="inside"
      objectID="0"
      position="-0.470661 -2.15585 -1.21291"
      radius="0.6"
      delay="3" />

    <goal
      name="Goal2"
      ID="1"
      type="outside"
      objectID="1"
      position="0.459 -1.1 2.91"
      radius="1"
      delay="0" />

  </section>

  <section name="Objects">

    <object
      name="shape0"
      ID="0"
      shape="sphere"
      type="shape"
      texture="basketball.jpg"
      position="-1.94491 0.0227595 2.2884"
      forward="0 0 1"
      up="0 1 0"
      scale="0.4 0.4 0.4"
      mass="15"
      on="false"
      stationary="false"
      movable="false"
      rotatable="0 0 0" />

    <object
      name="bucket1"
      ID="1"
      type="bucket"
      texture="wood.jpg"
      position="-0.470661 -2.15585 -1.21291"
      forward="0 0 1"
      up="0 1 0"
      scale="0.6 0.6 0.6"
      mass="1"
      on="false"
      stationary="true"
      movable="false"
      rotatable="0 0 0" />

    <object
      name="conveyorbelt2"
      ID="2"
      shape="box"
      type="conveyorbelt"
      texture="conveyor.jpg"
      position="-1.90794 -1.0161 0.936078"
      forward="-0.1 0.6 0.88"
      up="0.01 0.88 0.46"
      scale="1 0.1 2"
      mass="1"
      on="false"
      stationary="true"
      movable="false"
      rotatable="0 0 0" />

    <object
      name="trigger3"
      ID="3"
      connectionID="2"
      shape="cylinder"
      type="trigger"
      texture=""
      position="2 1.94 2"
      forward="0 0 1"
      up="0 1 0"
      scale="1 1 1"
      mass="1"
      on="false"
      stationary="true"
      movable="false"
      rotatable="0 0 0" />

    <object
      name="seesaw4"
      ID="4"
      shape="box"
      type="seesaw"
      model="seesaw.ms3d"
      position="2.54804 -2.41397 -1.93944"
      forward="0 0 1"
      up="0 1 0"
      scale="0.4 0.04 1"
      mass="1"
      on="false"
      stationary="false"
      movable="false"
      rotatable="0 0 0" />

  </section>

</resources>

Explanation of arguments (for a more in depth description of some of the
arguments and how they're used see the doxygen documentation):

Description/ID: a unique identifier for this level
Description/SelectDescription: the string which will appear in the select level list box
Description/LevelDescription: the string which will appear in the level loading dialog box

World/world/name: name of the worldbox
World/world/size: size of the worldbox along each dimension (worldbox is centered on the origin)
World/world/box: texture to use on the worldbox
World/world/clouds: texture to use for the background

World/camera/name: name of the camera
World/camera/radius: camera's distance from the origin
World/camera/elevation: camera's vertical angle
World/camera/azimuth: camera's horizontal angle

Goal/goal/name: name of the goal
Goal/goal/ID: a unique identifier for this goal
Goal/goal/type: type of goal, can be one of the GoalType enum's
Goal/goal/objectID: ID of the object associated with this goal
Goal/goal/position: for inside/outside goals, the position of the goal
Goal/goal/radius: for inside/outside goals, the radius of the goal
Goal/goal/delay: how long the goal needs to be satisfied

Object/object/name: name of the object
Object/object/ID: a unique identifier for this object
Object/object/ConnectionID: if this object is connectable, the ID of the connected-to object
Object/object/shape: shape of object, a specific set of keywords is recognized here, see Object docs
Object/object/type: type of object, a specific set of keywords is recognized here, see Object docs
Object/object/texture: filename of the texture to use for the object's material
Object/object/model: milkshape model to use as the object's model
Object/object/position: position of the object
Object/object/forward: forward vector of the object
Object/object/up: up vector of the object
Object/object/scale: scaling factors for the object
Object/object/mass: mass of the object (assuming constant density)
Object/object/on: initial activation status of the object
Object/object/stationary: initial stationary status of the object
Object/object/movable: movable status of the object
Object/object/rotatable: axes which the object can be rotated about