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. Features 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 Graphical/interface features: 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

Linux

Solaris

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

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 For further help see the wiki, the DevZone or visit the forums. 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...