NOTE: For updated build instructions, see the GitHub page!

If you have any questions or need help, come join our Discord server!

On this page I'll try to document the basic usage of the X-Moto game. For information about the level editor, and general X-Moto modification, check the wiki. You should also read the README file found in the X-Moto installation directory.


Installing on Microsoft Windows 2000/XP

On Windows the easiest way to install X-Moto, is simply to download the latest self-contained installer. When you've done that, run it, and follow the instructions on the screen. Pretty straight-forward stuff.

Alternatively you can build X-Moto from the sources. You should only do this if you intend to modify the game. If you chose to do this, download xmoto sources. The .tar.gz file contains everything needed to both build the game from source code, and play the game afterwards.

Installing on Debian GNU/Linux

X-Moto is now available under Debian GNU/Linux unstable and testing, so if that's your OS, it is very easy for you to get and install the game. Just type in the following as superuser:

apt-get install xmoto

Voila. :)

Installing on Linux (or other UNIX variant) from sources

If you're not using Debian (or another distribution with X-Moto) and can't use any of the unofficial packages, you should install X-Moto from the sources. Before starting, make sure you've got the following:

  • Latest gcc and g++
  • SDL development libraries and headers
  • OpenGL development libraries and headers
  • SDL_mixer with headers
  • libjpeg with headers
  • libpng with headers
  • zlib with headers
  • libbzip2 with headers
  • liblua50 with headers
  • liblualib50 with headers
  • libode0 with headers
  • libcurl3 with headers
With these things straightened out, you can download the latest X-Moto non-Windows source. The building and installation should be pretty standard stuff; you start by unpacking the tar-ball into some suitable directory, in which a xmoto-x.y.z directory will be created. cd into it. And then type in:
If it succeeds, continue to type:
If it also goes well, you have two options; either you install the game globally on the machine, or you install it for this user only.
To install globally, su into superuser mode and run:
make install
That should do the job, and everyone should be able to play now. To later uninstall it, run:
make uninstall

Note: I'll add the names of the corresponding Debian packages later. It should also be noted that I'm indeed not a Linux guru, so much of this is probably nonsense and/or incomplete - please correct me with your wisdom :)

Installing on MacOS X from sources

This procedure is pretty much the same as for compiling for any other Unix-like system, but first you need to do the following:

  • install SDL using fink or with the installer,
  • install lua from fink : it's on the fink unstable tree, you need to add unstable/main to the "Trees:" line in /sw/etc/fink.conf
  • install libode50 from source
Enter the following commands:
./configure LDFLAGS="-L/sw/lib -framework OpenGL -framework Cocoa -lstdc++ -lSDLmain -lSDL -lSDL_mixer" CPPFLAGS="-I/sw/include"
sudo make install
Then it's just
to start the game.

Thanks to Gabriel Boucher for the above guide.

Playing The Game

A nice strawberry.

An end-of-level flower.

A nasty wrecker.

Basic Gameplay

A number of strawberries are typically spread around each level, which generally consists of a complicated landscape seen from the side - i.e. much like islands in the sky. You need to collect all these berries to complete the level - when you've got the last one, you should find the sunflower which will complete the level when you touch it. Variations to this basic gameplay may be found around some of the levels.

Your motocross bike is likewise seen from the side, and you control its throttle, braking, and simple changes to the attitude by jerking the bike back and forth. Additionally you can change the direction of your driving, by rotating on the spot.


You control your bike using the keyboard:

Up arrowAccelerates
Down arrowBrakes
Left arrowRotates it counter-clockwise
Right arrowRotates it clockwise
SpaceTurns around and drives in the other direction

Note that the above keys can be configured to something else to suit your needs.

Additionally, some other keys can be pressed while playing:

EscapePauses the game, and opens the in-game menu
F12Takes a screenshot and places it in the game directory

Letting X-Moto Access The Web

Alpha version 0.1.14 of X-Moto comes with a new feature that allows the game to connect to the web and download high-scores (world records) and extra levels.

The first time you run X-Moto you'll be asked about whether you want to allow the game to access your Internet connection; if you don't have one, simply click "No". Then you'll be asked to specify your proxy settings. X-Moto supports HTTP proxies, SOCKS4 proxies, and SOCKS5 proxies. If you're behind a firewall, you most likely need to specify a proxy; ask your network administrator for guidance if you're in doubt.


As of alpha version 0.1.8, X-Moto supports recording and playback of replays. These are always stored in the Replays directory, which on Windows is located in the game installation directory, and on Linux-like systems is located in the ~/.xmoto directory. One should be aware that replays can take up quite a large amount of harddisk space - on average you can expect a single minute of replay to equal around 50 kilobytes. If you want to disable recording of replays, you can set the 'StoreReplays' variable to 'false' in config.dat, which on Windows is located in the game directory, and on Linux is located in ~/.xmoto.

Other things to be aware of regarding X-Moto replays:

  • Due to the way they are stored, they seem a bit less smooth than the actual game.
  • If you want to exchange replays with other people, you should keep in mind that the replays are already automatically compressed, so doing it again will probably just add extra overhead to the file size.


The important configuration options can be modified from inside the game by pressing the Options button in the main menu. Most of it should be pretty self explanatory, so I won't drag you through it here.

Advanced Options

Options are saved in a file called config.dat. On Windows the file is saved in the game directory, while on Linux it is saved in ~/.xmoto. It is a plain XML text file, so it should be straight-forward to modify in any text editor. In addition to the options accessible from inside the game, there's a couple more, which is not interesting enough to get included in the menus:

WebHighscoresURLThe URL from which public high-scores should be downloaded. Please consult the high-scores website for information about how this is used to make your own "private" high-score lists.
WebLevelsURLPlace on the web to look for extra levels.
DefaultProfileSpecifies which player profile should be active when the game starts.
ScreenshotFormatThe format in which screenshots should be saved in. Can be either jpg or png.
NotifyAtInitIf true, a message about the game release is shown at startup. Automatically set to false afterwards.
StoreReplaysIf true, replays will be automatically recorded during the game. When the player dies or finishes the level, he can then choose to save the replay. If set to false, no replay saving will be possible. Recording replays have a theoretical impact on the framerate of the game, but practically you shouldn't be able to notice anything.
ReplayFrameRateSpecifies the framerate at which replays will be recorded at. The higher it is, the smoother the replay will seem to be, but it will also cause the replay file to be much larger. Never set this option to higher values than 50, as it could cause unforeseen consequenses. The default value of 25 seems to be a good compromise between smoothness and file size.
CompressReplaysIf true, replays will be compressed with zlib. This is the default behaviour. Set this to false if you experience replay saving to take too long.

You'll also find a number of obscure controller configuration options in config.dat, but I'll leave them undocumented as the plan is they're going to be modifiable from inside the game.

Command-Line Arguments

You can supply a number of arguments to the game when starting it from the command-line.

-res WIDTHxHEIGHTThis forces X-Moto to use a resolution of WIDTHxHEIGHT. Note that this resolution must be supported by your video card and monitor if -res isn't combined with -win, in which case you can specify any weird resolution you'd like.
Note that this option overrides the settings you have specified inside the game.
-bpp BITSSets the display bits per pixel to BITS. When running in windowed mode this option has no effect at all. If BITS is 0 the current display setting is used.
Like with -res, this option overrides the in-game setting.
-fsForces the game to run in fullscreen mode regardless of the setting specified inside the game.
-winLike -fs, but forces windowed mode instead.
-qEnables quiet mode, in which no messages is written in the log or to the console. This overrides the -v option.
-vEnables verbose mode.
-noextsDisables the use of OpenGL extensions. Try this option if you experience weird graphical errors inside the game. Expect the use of this option to lower the framerate a bit, especially when playing large levels.
-level IDJumps directly into a specific level identified by ID. Built-in levels are identified by their number, i.e. use -level 16 to play level #16. External levels are identified by their IDs.
-replay NAMEPlays the given stored replay. NAME is the name of the replay file in the Replays sub-directory, with or without the .rpl extension.
-profile NAMEPlay the game using the given player profile. This is useful when combined with the -level option.
-listlevelsOutputs a list of all available levels, and then quits. Useful if you want to use -level to jump right into a level, but you don't want to go into the game to see what the level IDs are.
-listreplaysLike -listlevels, but with replays instead.
-timedemoDisables framerate throttling, i.e. the game will run at maximum framerate.
-fpsThis will display the current framerate in the upper left corner of the screen.
-uglyEnables "ugly" mode. This will increase the game's framerate significantly, but it will also make the graphics look very ugly - most things inside the game will be drawn with lines, the rider for instance being a simple stick figure.
This option is very useful if your system doesn't have a proper OpenGL-capable video card (like for instance if you have a laptop with on-board video card).
If you have the right amount of CPU power, it should even be possible to run X-Moto in OpenGL software emulation mode (MesaGL on linux, Windows' OpenGL fallback driver, etc).
-benchmarkWhen combined with -timedemo and -replay, the game will simply run the replay as fast as possible, write the average framerate to stdout, and then quit.

Note that this list is not complete, several obscure ones have been left out. This is mostly due to not all of them being completely implemented and workable.