A downloadable game for Windows, macOS, and Linux

In Desert Express your job is to protect your train from bandits, attempting to steal your cargo.

Every train run starts with a random number of crates loaded onto your train. The more cargo there is, the more cars your train consists of and the slower it travels, requiring you to spend more time on the run and making those crates an easy target for pursuers.

In addition to slower movement, having a large number of crates on board makes your train a more attractive target for bandits. You'll find that there will be more pursuers when your train is full, but as the number of crates you carry dwindles, so will the interest of the bandits: less and less of them will be inclined to join the chase.

How to play

Use your mouse to shoot at the bandits. Only the first enemy on the way of your shot will be killed (the shots don't pass through enemies).

Your aim is to successfully protect your cargo so that by the time the train reaches its destination there are as many crates remaining as possible. Can you finish a run with a full train without losing a single crate?


Tools and resources used

  • Aseprite (pixel art & animation editor)
  • Tiled (tilemap editor)
  • Early version of a nameless custom engine, using SDL2 library with SDL_image, SDL_ttf and SDL_mixer extension libraries
  • bfxr (shot sound effect)

Postjam updates


  • The player now throws snowballs at the pursuers, instead of shooting at them with a nondescript hit-scan weapon. (update 1)
  • The enemies now leave hoofprints in the snow. (update 1)
  • Sprites and UI screens have been changed to fit the winter Xmas/New Year theme: the desert is covered in snow, the train cars are decorated with Christmas lights, the enemies wear Santa Claus costumes etc.
  • Added a snowfall effect to the game level.
  • The steam engine's funnel now produces smoke.
  • In keeping with the Christmas theme, replaced the notion of "crates" with "gifts".
  • The soundtrack has been replaced and now consists of traditional Christmas music.
  • Music track selection in-game is now randomized, while a dedicated song plays during the starting and ending screens.
  • Linux and macOS versions are now statically linked to Boost.Log and so no longer have a runtime dependency on it.


  • The steam engine's funnel now produces smoke. (update 1)
  •  Mouse cursor is now constrained to the game window, so you will no longer accidentally click outside of it and lose cargo to those pesky bandits.
  •  Crates your train carries now have a monetary value ($10 per crate) and so your score for the run is now measured in dollars, in addition to just the number of crates delivered.
  • Accordingly, the run report screen now shows how much money you've made on the run.
  • Number of crates for every run is no longer random, instead there is now a starting screen before each run, where you can select exactly how much cargo you're willing to take for the run, keeping in mind the possible reward and the risks involved (i.e. your train getting slower and more bandits pursuing it).
  • Brief explanatory text now appears when the level is about to end, indicating if you've reached your destination or if you have no more cargo left.
  • Enemies spawned in the same wave are no longer animated synchronously.

Install instructions

On Windows, if the system complains about missing msvcp140.dll and/or vcruntime140.dll, make sure you install Microsoft Visual C++ Redistributable for Visual Sutdio 2015 package. If it complains about missing dll files, which are present in the game zip, such as SDL2.dll, make sure that you have fully extracted the zip to some non-temporary folder on your drive and that your antivirus hasn't gobbled up some of the files.

On Ubuntu 17.04 and up all of the packages, on which the game depends, can be installed using the following command:

sudo apt install libsdl2-2.0-0 libsdl2-image-2.0-0 libsdl2-ttf-2.0-0 libsdl2-mixer-2.0-0 libboost-log1.60.0

On macOS, unfortunately, the .app is not yet bundled with the libraries, on which the game depends, so some Homebrew packages will have to be installed for the game to run. (Sorry about that.) Here's the command, which can be used to install the required packages:

brew install libvorbis sdl2 sdl2_image sdl2_mixer sdl2_ttf boost

Depending on your security preferences, macOS might refuse to launch the .app, due to it being "from an unidentified developer". In order to override it, right click on the .app file in Finder, select "Open" from the context menu and then click "Open" in the dialog that appears. 


desert-express-windows-postjam-xmas.zip 17 MB
Version 2 Jan 06, 2018
desert-express-windows-postjam.zip 7 MB
Version 1 Jan 08, 2018
desert-express-windows-jam-original-bugfix.zip 4 MB
Version 1 Dec 08, 2017
desert-express-linux-postjam-xmas.zip 15 MB
Version 2 Jan 06, 2018
desert-express-linux-postjam.zip 15 MB
Version 1 Jan 08, 2018
desert-express-linux-jam-original-bugfix.zip 2 MB
Version 1 Dec 08, 2017
desert-express-osx-postjam-xmas.zip 15 MB
Version 2 Jan 06, 2018
desert-express-osx-postjam.zip 15 MB
Version 1 Jan 08, 2018
desert-express-osx-jam-original-bugfix.zip 2 MB
Version 1 Dec 08, 2017

Leave a comment

Log in with itch.io to leave a comment.