OpenTTD (Yes, that TTD, you know the game I talking about...)
Today's [I can't think of anything W related to it] project is one that I've followed and played for years. Do you remember the old MicroProse Transport Tycoon Deluxe game by Chris Sawyer? I don't know about you, but I spent many hours (as in many many hours) playing that game. There was just something about building the road and rail networks that I couldn't get enough of.
Now lets fast forward to today. Wouldn't it be cool if we could not only play that game, but play an improved one, one that didn't require any files from the original AND one that we could dig through the source for too?
Well I give you...
OpenTTD is an open source simulation game based upon the popular Microprose 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. For more information, see the file COPYING included with every release and source download of the game.
OpenTTD is modelled after the original Transport Tycoon game by Chris Sawyer and enhances the game experience dramatically. Many features were inspired by TTDPatch while others are original.
Significant enhancements from the original game include:
- bigger maps (up to 64 times in size)
- stable multiplayer mode for up to 255 players in 15 companies, or as spectators
- dedicated server mode and an in-game console for administration
- IPv6 and IPv4 support for all communication of the client and server
- in game downloading of AIs, NewGRFs, scenarios and heightmaps
- new pathfinding algorithms that makes vehicles go where you want them to
- autorail/-road build tool, improved terraforming
- canals, shiplifts, aqueducts
- larger, non-uniform stations and the ability to join them together
- mammoth and multi-headed trains
- different configurable models for acceleration of vehicles
- clone, autoreplace and autoupdate vehicles
- the possibility to build on slopes and coasts
- advanced/conditional orders, share and copy orders
- longer and higher bridges including several new designs, plus fully flexible tracks/roads under bridges
- reworked airport system with many more airports/heliports (e.g. international and metropolitan)
- presignals, semaphores, path based signalling
- support for TTDPatch NewGRF features offering many options for graphics and behaviour configuration/modification
- drive-through road stops for articulated road vehicles and trams
- multiple trees on one tile
- bribe the town authority
- many configuration settings to tune the game to your liking
- save games using zlib compression for smaller sizes, while not interrupting gameplay
- significant internationalisation support. OpenTTD has already been translated into over 50 languages
- dynamically created town names in 18 languages, plus NewGRF support for additional languages
- freely distributable graphics, sounds and music
- framework for custom (user) written AIs
- zooming further out in the normal view and zooming out in the small map
Lots of effort has been put into making OpenTTD easy to use. These include:
- convert rail tool (to electrified rail, monorail, and maglev)
- drag&drop support for almost all tools (demolition, road/rail building/removing, stations, scenario editor, etc)
- sorting of most lists based on various criteria (vehicle, station, town, industries, etc.)
- mouse wheel support (scroll menus, zoom in/out)
- autoscroll when the mouse is near the edge of the screen/window
- sell whole train by dragging it to the dynamite trashcan
- cost estimation with the 'shift' key
- advanced options configuration window, change settings from within the game
- screenshots can be in BMP, PNG or PCX format (select in game options menu)
- more currencies (including Euro introduction in 2002)
- extra viewports to view more parts of the game world at the same time
- resolution and refresh rate selection for fullscreen mode
- colourful newspaper after a certain date
- colour coded vehicle profits
- game speed increase (through fast forward button or by pressing the TAB key)
- snappy and sticky windows that always stay on top and neatly align themselves to other windows
- more hotkeys for even less mouse-clicking
- support for 32 bit graphics
- support for right-to-left languages
- support for other (sized) fonts where the user interface scales based on the font and translation
Posting a full list would be futile as it would mean updating this page almost daily, and even then some things might be forgotten. Play with the game to experience all the features yourself, or take a look at the Wiki for a more thorough listing and explanation of the features and possibilities available.
Supported operating systems
OpenTTD is officially supported on the following operating systems.
- *BSD, especially FreeBSD, NetBSD and OpenBSD
- Windows 95/98/ME/2000/XP/Vista/7
As this is Coding4Fun (and since I mentioned digging through the source) with just a little bit of effort, which is fully documented, you can get the source and compile, run , debug it in Visual Studio 2008/2010 (even in the free Express editions, though with those there's a note that you can't build the x64 version)
The wiki.openttd.org Microsoft Visual C++ 2008 Express Editions page walks your through the process, from even getting the VS Express editions, other Microsoft SDK's, related libraries, getting the source, setting the Include/Library paths and compiling the project. Just today, I followed these steps and got the project compiling and running on my system in less than 30 minutes (most of which was the first time compile/link time)
So let's see the Solution;
As you can see, this is a complete and complex project/game;
Here's the app running on my notebook;
As the doc's note (and as you'd expect) there's a major difference in performance between Debug and Release modes. Use Release mode if you can.
One of the cool things about OpenTTD is isn't extensbility. You can easily extend it, adding about about anything, from new AI to trucks and tiles without touching this source code.
Development of 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.
- pngcodec Compiles 32bpp PNG files and their alignment files into a 32bpp replacement file. Note: this is also feasible with NML.
- catcodec Compiles the sound set description file (sfo) and the sounds into a sound set
NewGRFs can be made available to players via the online content.
Development of AIs
OpenTTD allows the use of several AIs.
AIs and AI libraries are written in squirrel and need to make use of OpenTTD's API for AIs. Useful resources include:
- NoAI API API for OpenTTD's AIs.
- DevZone The DevZone is the home of a number of open-source AIs and libraries.
- Wiki Wiki section dedicated to AI development.
- Forum Forum dedicated to OpenTTD's AI development.
AIs can be made available to players via the online content.
If you're interesting in seeing a very complete, complex, fun and just plain cool game, want to dig into the source, build game extensions, help the project out with translations or just have fun, OpenTTD is there for you and free too...