OpenTTD-patches/README.md
2021-03-02 23:48:35 +00:00

33 KiB

JGR's Patchpack version 0.40.3

This is a collection of patches applied to OpenTTD


OpenTTD is a transport simulation game based upon the popular game Transport Tycoon Deluxe, written by Chris Sawyer. It attempts to mimic the original game as closely as possible while extending it with new features.

OpenTTD is licensed under the GNU General Public License version 2.0, but includes some 3rd party software under different licenses. See the section "Licensing" below for details,


See below for the original OpenTTD readme.

The thread for this patchpack can be found here.

See jgrpp-changelog.md for changelog.

See the wiki for guides on how to use some of the included features.

This patchpack contains the following

  • Routing restrictions: thread
    As of v0.11.0 this includes the Long Reserve feature from here.
    A version of this feature rebased onto Cirdan's new map features branch is in the tracerestrict-cirdan branch, see this thread

  • Programmable pre-signals: imported
    This includes additions to the patch from the Spring 2013 Patch Pack
    These are not shown in the build signal window by default.

  • Upgrade airports: imported

  • Vehicle group info: imported

  • Close adjacent level crossings: imported

  • Zoning: imported

    • This is modified to remove unimplemented modes, implement station ownership checks and implement station facility checks for industries.
    • Add a mode to show restricted signals.
    • Add a mode to show station catchment only where station window open.
  • Departure boards: imported

    • Fixed departure boards with orders with timetabled 0 travel times, e.g. those with depot service orders.
    • Made modifications to work with day length greater than 1.
  • Town cargo generation factor: imported

    • Allow factor to be more finely adjusted in 0.1 increments. (added in v0.16.0)
  • Industry cargo generation factor (added in v0.39.2)

  • Vehicles visible in tunnels (transparency setting): imported

  • Signals in tunnels and on bridges: imported
    Modifications include support for PBS and setting the semaphore/electric type of signals.

  • Measurement tools: imported

  • Increase maximum number of NewGRFs to 255

    • In single player mode: imported
    • In multiplayer mode: (added in v0.25.0)
  • Improved breakdowns: imported
    Add a lower limit for low speed breakdowns.

  • Timetabling waiting time in depots: imported

  • Picking and placing single houses in scenario editor: imported

  • Smallmap screenshots: imported
    This is modified to use an extra button in the smallmap window, instead of a console command, and use the current zoom level and display mode of the smallmap window.

  • Automated timetables and separation: imported

    • Auto timetabling: Bias timetable adjustment to favour negative adjustments; this is to avoid positive feedback between congestion delays and increased timetable length. Change jam detection threshold.
    • Auto separation: A large number of improvements have been made to the separation algorithm.
    • Timetable GUI: Allow clearing of timetable time fields which are at 0. Allow explicitly setting timetable time fields to 0 without clearing them.
    • Add company settings to enable automatic timetabling or separation for new vehicles.
    • Allow changing/clearing the timetabled waiting time and max speed of all of a vehicle's orders at once.
    • Add client setting to show the remainder ticks in timetable, after dividing to days or minutes.
    • Add a company setting to control the number of ticks used in auto-fill timetable rounding.
  • Vehicle repair cost: imported

  • Enhanced viewport: imported

  • Infrastructure sharing: imported

    • Add company settings to enable competitors to buy/renew vehicles in this company's depots.
    • Add setting to control whether trains can crash with trains owned by other companies.
  • Rating in town label: imported

  • Day length: imported

    • Add a setting to use non day length scaled days for cargo dest link graph calculation times (added in v0.11.0)
  • Order occupancy
    Add column to orders GUI to show occupancy running average, show the average order occupancy, and add a vehicle sort mode.

  • Servicing
    Send vehicles which need auto-renewing due to age for servicing, even if breakdowns are off and no servicing if no breakdowns is on.

  • Everest tree-line: imported (added in v0.2.0)

    • Remove "no trees on this level" setting.
    • Add on/off setting (default off).
    • Add to settings GUI, add strings, help texts, etc.
    • Change algorithm to make tree line and border of mixed forest zone less abrupt.
  • Enable building rivers in game (added in v0.3.0)
    This is controlled by a setting (off by default).

  • More conditional orders: imported (added in v0.3.0)

  • Include the train length and group name in the vehicle details window (added in v0.3.0)
    These are each controlled by a setting (on by default).

  • Pause the game when cargo dest link graph jobs lag (added in v0.4.0)
    Previously if a cargo dest link graph update job took longer than permitted, the game would block until it completed, preventing all user interaction.
    This patch instead pauses the game until the job is completed. (This does not apply to network clients, which cannot pause/unpause the game).

  • Daily/monthly/yearly scripts patch: imported (added in v0.5.0)

  • Flat minimap owner screenshot patch: imported (added in v0.5.0)

  • Extra large maps: imported (added in v0.5.0)
    Maximum map size is now 256M tiles, ranging from 16k x 16k to 256 x 1M. (The NewGRF debug inspection window is disabled for all map coordinates longer than 27 bits).

  • Build and refit: imported (added in v0.5.0)
    This has been modified to change the UI, and make it multiplayer safe.

  • Pause on savegame load if ctrl key is pressed. (added in v0.6.0)

  • Reverse at waypoint orders (added in v0.7.0)

  • Show a company-coloured mark next to vehicles in vehicle list windows, if their owner does not match list owner (imported: by McZapkie) (added in v0.8.0)
    This has been modified to change the mark and be controlled by a setting (on by default).

  • Vehicle lifetime profit: imported (added in v0.10.0)
    This has been modified to show current lifetime profit, instead of the yearly-updated value.

  • Hierarchical group collapse: imported (added in v0.11.0)
    This has been modified to show an icon for collapsed groups, and only the enable the collapse/(un)collapse all buttons where useful.

  • Ship collision avoidance: imported (added in v0.11.0)

  • Reduced tree growth: imported (added in v0.11.0)

  • Remove all trees in scenario editor: imported (added in v0.11.0)

  • Add a menu item to the vehicle list to change order target (added in v0.11.0)

  • Template-based train replacement imported (added in v0.12.0)

  • Add a menu item to the vehicle list to assign all listed vehicles to a new group (added in v0.12.1)

  • Polyline rail track building tool imported (added in v0.13.0)

  • Cargo type orders, this allows order load/unload types to be set per cargo type imported (added in v0.15.0)
    This has been modified so that cargo dest can follow orders with different load/unload types.

  • Random town road reconstruction imported (added in v0.15.0)
    This has been modified to change the setting scale. This defaults to off.

  • When building tunnels, open new viewports at the far end of the tunnel imported (added in v0.15.0)

  • Add a setting to increase the station catchment radius (added in v0.16.0)

  • Custom bridge heads for road bridges (added in v0.17.0) and rail bridges (added in v0.26.0)

  • Chunnels (tunnels under bodies of water) imported (added in v0.18.0)
    This is enabled by a setting (off by default).

  • Give money to company, instead of player imported (added in v0.18.0)
    This has been modified to broadcast money transfer notifications to all players.

  • Minimum town distance imported (added in v0.18.0)

  • Level crossing improvements (added in v0.19.0)

    • Prevent road vehicles from being stopped on level crossings.
    • Add setting to enable improved level crossing safety.
  • Scheduled dispatch imported (added in v0.20.0)

  • Add a setting to disable removing sea/rivers (added in v0.21.0)

  • Town growth

    • Add very and extremely slow options to town growth rate setting. (added in v0.21.0)
    • Add a setting to scale town growth rate by proportion of town cargo transported. (added in v0.21.0)
  • Performance improvements

    • Improve dedicated server performance. Up to approximately 2.5x faster. (added in v0.8.1)
    • Improve cargodest link graph calculation performance. Up to approximately 2x faster. (~1.3x faster in v0.8.1, further improvements in v0.17.2)
    • Various minor changes (see changelog).
  • Multiple docks per station imported (added in v0.22.0)

  • Cargo type filter in vehicle list windows imported (added in v0.22.0)
    This has been modified to support more windows and more cargo options.
    This is enabled by a setting (on by default).

  • Freight train through load (added in v0.24.0)
    This is an alternative loading mode for freight trains for the case where the train is longer then the platform.

  • Multiple rail types per tile (added in v0.29.0)

  • More cheats and cheats in multiplayer (added in v0.34.2)

    • Add support for server admin use of money, magic bulldozer, tunnels and jet crashes cheats in multiplayer.
    • Add setting to allow non server admins to use the money cheat in multiplayer.
    • Add cheats to set inflation income and cost factors.
  • Drive-through train depot emulation (added in v0.38.0)

  • One-way road and road vehicle overtaking enhancements (added in v0.39.0)

    • Road between one-way road tiles is also one-way.
    • One way roads may have T-junctions on the drive side.
    • Drive-through road stops may be made one way.
    • Road vehicles have fewer constraints on overtaking on one-way road, and may be remain in the overtaking lane indefinitely.
    • Road vehicles may now start and finish overtaking on bridges and in tunnels.
      See the wiki for full details.
  • Realistic train braking (added in v0.40.0)
    In this mode, trains have a stopping distance and will reserve ahead accordingly, trains cannot stop instantly.
    This mode has many implications for signalling and track layout design, and is therefore an advanced feature which may not be suitable for beginners.
    In particular pre-signals and two-way signals are not permitted, and PBS is used for all signalling.

  • Save/load and savegame format changes

    • Various changes to improve handling of savegames which use features not in trunk.
    • Savegames from this patchpack are not loadable in trunk.
    • Savegames from trunk up to the last savegame version which has been merged into this branch (jgrpp) should be loadable in this patchpack.
    • Savegames from other branches which use the save/load code in the save_ext branch (usually suffixed: -sx) which are also merged into this branch (jgrpp), or where the added feature is marked as discardable/ignorable, should be loadable in this patchpack.
    • Savegames from other patched versions are not loadable in this patchpack except for savegames from:
  • Miscellaneous

    • Various improvements to the crash logger.
    • Adjust cargo dest link graph job scheduling algorithm to improve responsiveness. (added in v0.16.0)
    • Add hover tool-tips, and improve visual contrast of cargo labels, in cargo dest graph legend window. (added in v0.16.0)
    • Add shift-clicking on vehicle depot button to select specific depot. (added in v0.16.1)
    • Increase maximum setting limits for per-company vehicle-type limits. (added in v0.17.0)
    • Increase maximum permitted vehicle name length (added in v0.17.0), vehicle group name length (added in v0.17.2), and depot/station name lengths (added in v0.20.0).
    • Trains break down after colliding with a road vehicle. (added in v0.20.0).
    • Add warning/info messages to timetable window. (added in v0.21.0).
    • Add ctrl+click on shared list button in order/timetable window to add single vehicle to a new group. (added in v0.21.0).
    • Improve scrolling rendering of link graph overlay on viewport and small map. (added in v0.25.0).
    • Add setting to automatically save when losing connection to a network game. (added in v0.25.0).
    • Station rating: track "last visited vehicle type" separately per cargo. (added in v0.25.0).
    • Go to depot and sell vehicle orders. (added in v0.26.0).
    • Order mode to lock timetable wait and travel times against autofill/automate changes. (added in v0.26.0 and v0.27.0 respectively).
    • Settings to allow placing stations and all NewGRF objects under bridges. (added in v0.26.0).
    • Leave early and leave early if any/all cargoes fully loaded order timetable flags. (added in v0.27.0 and v0.36.0 respectively).
    • Timetabled wait times at waypoints. (added in v0.27.0).
    • Add setting to enable flipping direction of all train types in depot. (added in v0.27.1).
    • Allow purchasing a region of tiles at once, by dragging, and add a company rate limit for land purchasing (added in v0.29.0).
    • Add setting to control if and how land purchasing is permitted. (added in v0.29.0).
    • Add GUI setting for when to ask for confirmation before overwriting an existing savegame file, add unique ID to savegames. (added in v0.29.1).
    • Add game setting to allow only non-stop orders for trains and road vehicles. (added in v0.29.3).
    • Disallow ordering ordinary road vehicles to tram depots and vice versa. (added in v0.30.0).
    • Add UI setting for whether to open the new vehicle GUI when share-cloning. (added in v0.30.0).
    • Add company setting for whether to advance order when cloning/copying/sharing (if current depot is in order list). (added in v0.30.0).
    • Allow diagonal construction of rivers in the scenario editor. (added in v0.30.2).
    • Add setting to allow articulated road vehicles to overtake other vehicles. (added in v0.31.0).
    • Add new link graph distribution modes: asymmetric (equal) and asymmetric (nearest). (added in v0.31.0).
    • Add news/advice setting to warn if no depot order in vehicle schedule. (added in v0.31.1).
    • Enable vehicle list buttons in station window when the list would be non-empty. (added in v0.31.1).
    • Enable vehicle group management actions on other companies' stations. (added in v0.31.1).
    • Add a password mechanism to change network game settings from a network client. (added in v0.31.4).
    • Change network protocol to send server/join and rcon passwords in hashed form instead of in clear text. (added in v0.31.4).
    • Add modifier key window for toggling shift/ctrl key states using mouse. (added in v0.32-rc4).
    • Add IME support on Linux/SDL2 (SDL2-supported IMEs and Fcitx). (added in v0.32.0).
    • Add support for allowing/disallowing supply to a station, per cargo, by ctrl-clicking the station cargo rating. (added in v0.34.0).
    • Open train vehicle details window on total cargo tab if shift pressed. (added in v0.34.0).
    • Ctrl-click up/down in NewGRF window to move to top or bottom. (added in v0.34.2).
    • Additional conditional order types/modes. (added in v0.24.0, v0.33.1, v0.34.3, v0.37.0, v0.40.2).
    • Improve road vehicle pathfinding when multiple vehicles are simultaneously heading to a station with multiple bay/stop entrances. (added in v0.35.0).
    • Add setting to scale station cargo capacity and rating tolerance by size. (added in v0.35.0).
    • Add setting to disable vehicle expiry after a given year. (added in v0.35.0).
    • Add setting to control road vehicle re-routing on road layout changes. (added in v0.35.0).
    • Add news setting for trains waiting due to routing restrictions. (added in v0.36.0).
    • Add setting for alternative linkgraph overlay colour schemes. (added in v0.36.0).
    • Add basic tab-completion to the console window. (added in v0.36.0).
    • Add settings to enable multiple churches/stadiums and to ignore date/zone/GRF when placing houses in the scenario editor. (added in v0.36.0).
    • Add setting for default road/tram types. (added in v0.37.0).
    • Allow building objects by area (1x1 objects only). (added in v0.37.0).
    • Increase per-vehicle order limit from 254 to 64k. (added in v0.38.0).
    • Add features to reverse the order of an order list, and to append the reverse of an order list. (added in v0.39.0).
    • Add console commands for conditional execution from game date. (added in v0.39.2).
    • Add client setting for vehicle naming scheme. (added in v0.40.0).
    • Add setting to control dates over which inflation is applied. (added in v0.40.0).
    • Add "indifferent" mode to the town council attitude to area restructuring setting. (added in v0.40.2).
    • Add support for zstd savegame compression for autosaves and network joins. (added in v0.40.3).
    • Add setting for shading trees on slopes in viewports (default on). (added in v0.40.3).
    • Various minor fixes, see changelog.
    • NewGRF specification additions (online copy).
    • NML specification additions (online copy).
    • AI/GS script additions (online copy).
    • Low-level code/performance changes.
  • Translations

    • German (by Auge and Kruemelchen)
    • Korean (by kiwitreekor and TELK)
    • Japanese (by Qwerty Asd)
  • Superseded features

    • Label threads with a descriptive name on supported Unixy platforms (added in v0.8.1), in trunk as of r27670.
    • Add a 32bpp SSE2 palette animator. This is ~4x faster than the non-accelerated palette animator (added in v0.9.0), in trunk as of commit 17257b96.
    • Increase number of available rail track types from 16 to 32 imported (added in v0.13.0), this is increased to 64 rail track types in trunk as of commit bf8d7df7, (added in v0.26.0).
    • Towns build bridges over rails imported (added in v0.21.0), in trunk as of commit 50a0cf19.
    • Add setting for alternative transfer payment mode (added in v0.19.0), in trunk and unconditionally enabled as of commit 2fee030a.

Caveats for loading savegames from the Spring 2013 Patch Pack:

  • This is not guaranteed to be bug free
  • Savegames with huge airports are rejected
  • Map sizes greater than 16k x 16k are rejected
  • PAX signals/stations and traffic lights are cleared, leaving ordinary signals/stations/roads
  • Rail ageing/grass on tracks, trip histories, leave order/wait for cargo, auto advertising campaigns, base cost multipliers and other features not in this patch pack are dropped/ignored.
  • SpringPP v2.0.102/103 only:
    • Savegames which have aircraft approaching, landing, taking off or landed at an oil rig are rejected
    • The inflation cost multiplier is adjusted on load

Caveats for loading savegames from Joker's Patch Pack:

  • This is not guaranteed to be bug free
  • Logic signals are cleared, leaving ordinary signals
  • Various vehicle separation settings and partially-automatic modes are not supported.
  • Rail ageing/grass on tracks, trip histories, waiting cargo histories, station cargo punishment and other features not in this patch pack are dropped/ignored.

Caveats for loading savegames from Chill's Patch Pack:

  • This is not guaranteed to be bug free
  • Speed signals are cleared, leaving ordinary signals
  • Various vehicle, economy, town and other settings are not supported
  • Link graph data (but not settings) is cleared
  • Train stuck counters, traffic lights and other features not in this patch pack are dropped/ignored.

A note on branches

Many features have two branches, the feature branches are just the raw features, without any modified savegame code.
There are not generally savegame compatible with anything else, except for loading of trunk savegame versions at or before the point where the branch diverged from trunk.
All other load attempts may result in undefined behaviour.
The feature-sx branches use the savegame framework in the save_ext branch.

Compiler requirements

As of v0.15.0, C++11 support is required.

The minimum supported compiler versions are:

  • GCC: 4.7
  • clang: 3.3

Sufficiently up-to-date versions of other compiler toolchains including MSVC and ICC should also work.



OpenTTD

Table of contents

1.0) About

OpenTTD is a transport simulation game based upon the popular game Transport Tycoon Deluxe, written by Chris Sawyer. It attempts to mimic the original game as closely as possible while extending it with new features.

OpenTTD is licensed under the GNU General Public License version 2.0, but includes some 3rd party software under different licenses. See the section "Licensing" below for details.

1.1) Downloading OpenTTD

OpenTTD can be downloaded from the official OpenTTD website.

Both 'stable' and 'nightly' versions are available for download:

  • most people should choose the 'stable' version, as this has been more extensively tested
  • the 'nightly' version includes the latest changes and features, but may sometimes be less reliable

On some platforms OpenTTD will also be available via your OS package manager or a similar service.

1.2) OpenTTD gameplay manual

OpenTTD has a community-maintained wiki, including a gameplay manual and tips.

1.3) Supported platforms

OpenTTD has been ported to several platforms and operating systems.

The currently working platforms are:

  • FreeBSD (SDL)
  • Haiku (SDL)
  • Linux (SDL)
  • macOS (universal) (Cocoa video and sound drivers)
  • OpenBSD (SDL)
  • OS/2 (SDL)
  • Windows (Win32 GDI (faster) or SDL)

1.3.1) Legacy support

Platforms, languages and compilers change. We'll keep support going on old platforms as long as someone is interested in supporting them, except where it means the project can't move forward to keep up with language and compiler features.

We guarantee that every revision of OpenTTD will be able to load savegames from every older revision (excepting where the savegame is corrupt). Please report a bug if you find a save that doesn't load.

1.4) Installing and running OpenTTD

OpenTTD is usually straightforward to install, but for more help the wiki includes an installation guide.

OpenTTD needs some additional graphics and sound files to run.

For some platforms these will be downloaded during the installation process if required.

For some platforms, you will need to refer to the installation guide.

1.4.1) Free graphics and sound files

The free data files, split into OpenGFX for graphics, OpenSFX for sounds and OpenMSX for music can be found at:

Please follow the readme of these packages about the installation procedure. The Windows installer can optionally download and install these packages.

1.4.2) Original Transport Tycoon Deluxe graphics and sound files

If you want to play with the original Transport Tycoon Deluxe data files you have to copy the data files from the CD-ROM into the baseset/ directory. It does not matter whether you copy them from the DOS or Windows version of Transport Tycoon Deluxe. The Windows install can optionally copy these files.

You need to copy the following files:

  • sample.cat
  • trg1r.grf or TRG1.GRF
  • trgcr.grf or TRGC.GRF
  • trghr.grf or TRGH.GRF
  • trgir.grf or TRGI.GRF
  • trgtr.grf or TRGT.GRF

1.4.3) Original Transport Tycoon Deluxe music

If you want the Transport Tycoon Deluxe music, copy the appropriate files from the original game into the baseset folder.

  • TTD for Windows: All files in the gm/ folder (gm_tt00.gm up to gm_tt21.gm)
  • TTD for DOS: The GM.CAT file
  • Transport Tycoon Original: The GM.CAT file, but rename it to GM-TTO.CAT

1.5) Add-on content / mods

OpenTTD features multiple types of add-on content, which modify gameplay in different ways.

Most types of add-on content can be downloaded within OpenTTD via the 'Check Online Content' button in the main menu.

Add-on content can also be installed manually, but that's more complicated; the OpenTTD wiki may offer help with that, or the OpenTTD directory structure guide.

1.5.1) AI opponents

OpenTTD comes without AI opponents, so if you want to play with AIs you have to download them.

The easiest way is via the 'Check Online Content' button in the main menu.

You can select some AIs that you think are compatible with your playing style.

AI help and discussions may also be found in the AI section of the forum.

1.5.2) Scenarios and height maps

Scenarios and heightmaps can be added via the 'Check Online Content' button in the main menu.

1.5.3) NewGRFs

A wide range of add-content is available as NewGRFs, including vehicles, industries, stations, landscape objects, town names and more.

NewGRFs can be added via the 'Check Online Content' button in the main menu.

See also the wiki guide to NewGRFs and the forum graphics development section.

1.5.4) Game scripts

Game scripts can provide additional challenges or changes to the standard OpenTTD gameplay, for example setting transport goals, or changing town growth behaviour.

Game scripts can be added via the 'Check Online Content' button in the main menu.

See also the wiki guide to game scripts and the forum graphics game script section.

1.6) OpenTTD directories

OpenTTD uses its own directory structure to store game data, add-on content etc.

For more information, see the directory structure guide.

1.7) Compiling OpenTTD

If you want to compile OpenTTD from source, instructions can be found in COMPILING.md.

2.0) Contact and Community

'Official' channels

'Unofficial' channels

2.1) Contributing to OpenTTD

We welcome contributors to OpenTTD. More information for contributors can be found in CONTRIBUTING.md

2.2) Reporting bugs

Good bug reports are very helpful. We have a guide to reporting bugs to help with this.

Desyncs in multiplayer are complex to debug and report (some software development skils are required). Instructions can be found in debugging and reporting desyncs.

2.3) Translating

OpenTTD is translated into many languages. Translations are added and updated via the online translation tool.

3.0) Licensing

OpenTTD is licensed under the GNU General Public License version 2.0. For the complete license text, see the file 'COPYING.md'. This license applies to all files in this distribution, except as noted below.

The squirrel implementation in src/3rdparty/squirrel is licensed under the Zlib license. See src/3rdparty/squirrel/COPYRIGHT for the complete license text.

The md5 implementation in src/3rdparty/md5 is licensed under the Zlib license. See the comments in the source files in src/3rdparty/md5 for the complete license text.

The implementations of Posix getaddrinfo and getnameinfo for OS/2 in src/3rdparty/os2 are distributed partly under the GNU Lesser General Public License 2.1, and partly under the (3-clause) BSD license. The exact licensing terms can be found in src/3rdparty/os2/getaddrinfo.c resp. src/3rdparty/os2/getnameinfo.c.

The implementation of C++17 std::optional in src/3rdparty/optional is licensed under the Boost Software License - Version 1.0. See src/3rdparty/optional/LICENSE_1_0.txt for the complete license text.

4.0 Credits

See CREDITS.md