Translating

If you would like to help translating the game, please

What to do When You Find a Bug

When you think you found a bug in OpenTTD you should:

  • Make sure you are running a recent version, i.e. run the latest stable, testing or nightly based on where you found the bug.
  • Make sure you are not running a non-official binary, like a patch pack. If you are playing with a patch pack you should report any bugs to the forum thread related to that patch pack.
  • Make it reproducible for the developers. In other words, create a savegame in which you can reproduce the issue once loaded. For Windows users it is very useful to give us the crash.dmp and crash.log which are created on crashes.
  • Check whether the bug is already reported on our bug tracker. This includes searching for recently closed bug reports as the bug might already be fixed.
  • When you are certain it is an unknown bug you should make a bug report at our bug tracker. The bug report must contain a savegame, preferably crash.sav and the last (automatically) saved savegame. It must also contain crash.log and crash.png (if they were created). For crashes on Windows must attach the crash.dmp files too. For bugs in nightlies you must also specify the revision of the nightly.

Obtaining The Source Code

For OpenTTD we use the git version control system. OpenTTD's source code repository using git is accessible by anyone on the following URL:

You can also browse the repository online. The documentation of the source is created by DoxyGen.

To download the source code you need a git client. See Getting Started for more information about git and how to use it.

Compiling

OpenTTD depends on a few libraries. You need to install their development package to be able to compile OpenTTD.

For detailed instructions on required libraries and compiling, check COMPILING.md.

Development of BaseSets and NewGRF Extensions

OpenTTD allows the use of NewGRFs and different base sets for graphics, sounds and music.

These files require special formats and you may need to use the following helper programs to assist with the creation of these add-ons:

  • nml High-level language and compiler for writing NewGRFs. See also the specs and tutorial
  • grfcodec Compiles NewGRF's low-level programming language NFO into a GRF file. Use the enclosed nforenum to check the code for sanity. See also the specs and tutorial.
  • catcodec Compiles the sound set description file (sfo) and the sounds into a sound set

For further help see the wiki or visit the forums.

NewGRFs can be made available to players via the online content.

Development of AIs and Game Scripts

OpenTTD provides a script interface, which is used to provide computer players or altered game behaviour and goals.

Scripts and associated libraries are written in squirrel (version 2) and need to make use of OpenTTD's API for Scripts. Useful resources include:

  • NoAI API API for OpenTTD's AIs.
  • NoGo API API for OpenTTD's Game Scripts.
  • Wiki Wiki section dedicated to Script development.
  • Forum Forum dedicated to OpenTTD's Script development.
  • Squirrel 2 Reference Reference manual for the squirrel language.

Scripts can be made available to players via the online content.