Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Version 3 (modified by bknecht, 18 years ago) (diff)

How to create Orxonox Levels

To create a level in Orxonox is really easy. One does not have to program anything or compile the code again, because our levels are created with XML-Files. There the objects in the level can be defined. On this page we explain what one can do with the XML-Files and how to create a new level for Orxonox with them.

The objects we can add are rooms (BSP-files), spacecrafts (OBJ-files) and moving objects (MD2-files). How to that exactly is best explained with the examples below.

If you're interested in creating rooms and BSP-levels check out this page: Maping for Orxonox with GTK-Radiant?

Adding a menu entry

Before you can play a level in Orxonox you have to add the level as a menu entry in the game. To do that you have to alter the DefaultCampaign.oxc file in the data/levels directory (or data/worlds in older versions).

Below there is a example for that file:

<Campaign>
  <name>default</name>
  <identifier>0</identifier>
  <description>The one and only default debug campaign</description>
  <WorldList>

    <GameMenu>
      <identifier>0</identifier>
      <name>GameMenu</name>
      <path>levels/Menu.oxw</path>
      <nextid>1</nextid>
    </GameMenu>

    <SinglePlayerWorld>
      <identifier>1</identifier>
      <nextid>2</nextid>
      <name>Demo Mountain Lake</name>
      <path>levels/sp_demo_mountain_lake.oxw</path>
      <menu-entry>1</menu-entry>
    </SinglePlayerWorld>

    <MultiPlayerWorld>
      <identifier>2</identifier>
      <nextid>0</nextid>
      <path>levels/mp_level_arena.oxw</path>
    </MultiPlayerWorld>

    ...

  </WorldList>
</Campaign>

Now to add your level you have to add an SinglePlayerWorld (or MultiPlayerWorld) entry to the WorldList. Be sure to add an identifier a name and the most important: the path of your OXW-file. The number of the identifier and the menu-entry have to be incremented. Close every <tag> you open.

XML level file (OXW) syntax

Level files have the extension OXW (for OrxonoX World). The order of the things you add does not matter.

Example

<WorldDataFile>
  <name>Meteroid</name>
  <screenshoot>pictures/menu/ss_meteroid_512x512.png</screenshoot>

  <LoadScreen>
    <BackgroundImage>pictures/load_screens/default.jpg</BackgroundImage>

    <ElementCount>16</ElementCount>
    <BackgroundPS>0,0,1.0,1</BackgroundPS>
    <BarPS>.65,.87,.3,.05</BarPS>
    <BarImage>pictures/load_screens/default_bar.png</BarImage>
  </LoadScreen>
  <WorldEntities>

    <TurbineHover>
      <name>Player</name>
      <abs-coor>522,-389,419</abs-coor>
    </TurbineHover>

    <SpaceShip>
      <name>Player2</name>
      <model>models/ships/reap_#.obj</model>
      <abs-coor>312.19, 172.36, 60.74</abs-coor>
    </SpaceShip>
    <SpaceShip>
      <name>Player10</name>
      <model>models/ships/reap_#.obj</model>
      <abs-coor>315.53, 185.09, 14.04</abs-coor>
    </SpaceShip>
    <SpaceShip>
      <name>Player6</name>
      <model>models/ships/reap_#.obj</model>
      <abs-coor>306.53, 190.09, 23.50</abs-coor>
    </SpaceShip>
    <SpaceShip>
      <name>Player14</name>
      <model>models/ships/reap_#.obj</model>
      <abs-coor>330.19, 172.36, 25.74</abs-coor>
    </SpaceShip>

    ...

    <MovieEntity>
      <abs-coor>413.5,183,36.3</abs-coor>
      <name>media/hero.mov</name>
      <fps>15</fps>
      <axis>90</axis>
      <size>75,38.5</size>
    </MovieEntity>

    <SpaceShip>
      <name>Player4</name>
      <model>models/ships/fighter.obj</model>
      <abs-coor>313,181,0</abs-coor>
    </SpaceShip>

    ...

    <TurbineHover>
      <name>Player5</name>
      <abs-coor>324,174,2</abs-coor>
    </TurbineHover>
    <TurbineHover>
      <name>Player9</name>
      <abs-coor>309,188,42</abs-coor>
    </TurbineHover>

    ...

    <SkyBox>
      <name>Sky</name>
      <Materialset>pictures/sky/simple_space</Materialset>
      <Size>10000</Size>
    </SkyBox>

    <ModelEntity>
      <name>comet</name>
      <abs-coor>300,50,-400</abs-coor>
      <model>models/comet.obj, 2.5</model>
    </ModelEntity>
    <ModelEntity>
      <name>comet2</name>
      <abs-coor>0,0,400</abs-coor>
      <model>models/comet.obj, 1</model>
    </ModelEntity>

    ...

    <Terrain>
      <name>Meteroit</name>
      <abs-coor>300,50,0</abs-coor>
      <model>models/environments/meteorit.obj, 2.5</model>
    </Terrain>

  </WorldEntities>

  <Music>sound/music/allgorythm-once_upon_a_time_in_a_small_club.ogg</Music>

    <LightManager>
    <Lights>
      <Light>
       <diffuse-color>1,1,1</diffuse-color>
       <abs-coor>300,800,0</abs-coor>
      </Light>
    <Light>
       <diffuse-color>1,1,1</diffuse-color>
       <abs-coor>100,200,50</abs-coor>
      </Light>
    </Lights>
    <ambient-color>1,1,1</ambient-color>
  </LightManager>

  <GraphicsEngine>
    <GraphicsEffect>
        <LenseFlare>
          <name>lense flare</name>
          <add-flare-texture>pictures/lense_flare/sun.png</add-flare-texture>
          <add-flare-texture>pictures/lense_flare/lens2.png</add-flare-texture>
          <add-flare-texture>pictures/lense_flare/lens1.png</add-flare-texture>
          <add-flare-texture>pictures/lense_flare/lens3.png</add-flare-texture>
          <add-flare-texture>pictures/lense_flare/lens4.png</add-flare-texture>
          <add-flare-texture>pictures/lense_flare/lens1.png</add-flare-texture>
          <add-flare-texture>pictures/lense_flare/lens3.png</add-flare-texture>
        </LenseFlare>
    </GraphicsEffect>
  </GraphicsEngine>

</WorldDataFile>

World Entities

Player

Skybox

Weather effects