# Creating your own levels

Trackballs comes with a build in map editor which can be used to create your own levels, which you are encouraged to share with other people. Please upload any nice levels you make as an attachment at the issue tracker and I will put them up on the official website for other people to download.

Each level consists of two things, a `.map` and a `.scm` file. The map file contains all the terrain which builds up a level while the scm file contains a list of all the objects and settings for this specific map.

Apart from creating specific levels, it is also possible to create new sets of levels. In order to do this you need to also create a `.set` file which describes the general theme and gives the name of the first level in the set. All the remaining levels in you set comes from your .scm files since each goal specifies which level is the next. It is thus even possible to have alternative paths for completing your level. You should also create a corresponding `.jpg` file with a screenshot from one of your levels, typically the starting level, which gives the user a good idea of how your level looks.

Instead of creating your own levels it is of course possible to use levels and sets from others. Take a look at the trackballs webpage to see if any new levels have appeared after the latest release. In order to install a custom created or a downloaded sets of levels you need to place all the files (`.map, .scm, .set, .jpg`) under your share/levels directory. For windows users this means into the share\levels directory where trackballs is currently installed. For Linux users this means into either `/usr/local/share/trackballs/levels/` (assuming that the game is installed under /usr/local) or under `$HOME/.trackballs/levels/`. If you are unsure where your other levels are currently installed just search for the file "lv1.scm" anywhere on your hard drive.

### Getting started

To get started with creating a level, see first the Map editor and after creating some simple map see the page on the Scripting Language to create the corresponding `.scm` file. For this later file it is a good idea to steal some ideas from the existing files such as `child1.scm` for an easy example or `lv1.scm` for a more advanced example.