28 - Transport Tycoon (aka the great optimiser, Chris Sawyer)
Become a Patron!
On the rise and, um...fade out(?) of Chris Sawyer, the genius creator of bestselling, critically-acclaimed simulation games Transport Tycoon and RollerCoaster Tycoon — who made a career out of working at the cutting-edge, in bare metal assembly code that he wrote and optimised (and optimised again) on his own.
Until the cutting-edge left him behind.
Hello Hacker News readers! As of this update, the post there erroneously labels this as an interview. It's not. Chris doesn't do interviews, except via an intermediary (which doesn't really work in an audio format), so the story is based entirely on my in-depth research and analysis. I hope you still enjoy it and learn something interesting. (I have stories on many other things that do involve interviews, though, like 1990 golf game Links, Bungie's fake game Pimps at Sea, and the "Wololo" sound effect from Age of Empires.)
Chris was only a design consultant on 2004 game RollerCoaster Tycoon 3, but its remastered "Complete" edition has just come out on Nintendo Switch and the PC version is free on the Epic Games Store right now (until October 2). The original two games are also still sold via the likes of Steam and GOG.
Transport Tycoon, meanwhile, lives on in open-source project OpenTTD and in a mobile port (Android, iOS) of the original game by Chris's company 31X. You can see a snippet of his source code in the image below:
Thanks as always to my supporters on Patreon — especially my $10+ backers Carey Clanton, Rob Eberhardt, Simon Moss, Vivek Mohan, Wade Tregaskis, and Seth Robinson. If you'd like to become a supporter, for as little as $1 a month, head to my Patreon page and sign up. Or for one-off donations you can use paypal.me/mossrc.
Please remember to tell other people about the show, and to leave a review by following the links at ratethispodcast.com/ltvg.
I'm currently writing a new book called Shareware Heroes: Independent Games at the Dawn of the Internet. You can learn more and/or pre-order your copy from Unbound.
(Partial) Transcript[Most episode transcripts/scripts are reserved for my Patreon supporters (at least for the time being), but I like to give you at least a taster here — or in this case, the first half of the episode.]
Welcome to the Life and Times of Video Games, an audio series about video games and the video game industry, as they were in the past and how they’ve come to be the way they are today. I'm Richard Moss, and this is episode 28, Transport Tycoon, or the tale of the great optimiser and his two greatest works.
We’ll get going in just a moment.
*pause for pre-roll ad/cross-promo slot*
You may have heard the expression that every overnight sensation is a decade in the making — a decade of hard work, toiling in obscurity…or relative obscurity, honing a talent, perfecting a craft, optimising a skill set and envisioning whatever it is that breaks through.
In reality the actual duration is rarely a decade — it’s five years or eight years or eighteen years, or however long it takes for the pieces to all fall into place: the talent, timing, and product. But the idea bears repeating: the greatest accolades, the greatest achievements, the greatest games are the product of hard work built atop years of invisible labour.
And such it was that Chris Sawyer, like John Romero, Carol Shaw, Gunpei Yokoi, and many others before and since — such it was that in 1994 Chris Sawyer suddenly shifted from a little-known (though well-respected) figure in the games industry, a programmer who converted Amiga games to the PC, to become an industry icon.
Nineteen-ninety-four was the year when his first original game was published, the year when big-name PC game publisher Microprose put his transportation-focused business simulation game Transport Tycoon, an incredible solo development effort, in a box and sold it in stores to widespread acclaim.
Transport Tycoon, the game that made Chris Sawyer into a games industry icon (image source)
The game itself had taken Chris just a year to develop, but the journey to making it had begun much earlier.
Chris had started programming as a teenager in 1981, largely out of curiosity, through trying to make things appear on the screen on a range of different computers he’d encountered. There was the Commodore PET at his high school, the Sinclair ZX81 demonstration unit in a W H Smiths store, and the Texas Instruments TI99/4A one of his neighbours owned, as well as the Commodore VIC-20 a different neighbour had. And eventually, after diligently saving up his pocket money, he’d become engrossed in a machine of his own, a Camputers Lynx, a now-forgotten, obscure-even-then 8-bit computer with fancier graphics and more horsepower than the leading systems of its day (the leading systems at the time being the Apple II, ZX Spectrum, and Commodore 64).
Here, in 1983, is where the journey really starts — where Chris set off towards the lands where he’d make his name. And I find it fascinating how serendipitous this was — for, you see, Chris’s two great successes, Transport Tycoon and RollerCoaster Tycoon, were both made possible by his phenomenal systems knowledge; by his immense capacity to hand-code complex interactions of data at low levels of abstraction.
And here is where he began to learn those skills, to internalise them to the point of becoming natural talents. He later told Arcade Attack in an interview that he’d not had access to an assembler for that Lynx computer, so when he’d wanted to move beyond coding in BASIC he’d needed to write his programs byte-by-byte in machine code — the lowest-level programming language, the numerical instructions that computers themselves use. And with scant resources available to teach him these skills, he mostly figured it out on his own, just trying different things until he got his ideas to work. Always chasing the next exhilarating breakthrough.
Chris continued to dabble in machine code, though somewhat less than before, when he upgraded to a similarly-obscure machine called the Memotech MTX500, which actually did come with a built-in assembler, which enabled him to write programs in the abbreviation-heavy Z80 assembly language. Programs that, beginning in 1984, he very often had published commercially.
The Memotech MTX500 (Image source)
Chris had sent Memotech cassette tapes of some games he’d made through copying the designs of popular titles, like Missile Kommand, which was the 1980 Atari arcade game converted to the capabilities of the MTX500, using a mix of BASIC and machine code, with the name intentionally misspelled (a ‘k’ rather than a ‘c’) as though that somehow made his unapologetic, blatant clone of another’s work okay.
But this was the wild west of the computer games business, and Memotech weren’t much concerned. Or at least their games guy Jim Wills wasn’t much concerned, neither at this point nor a few months later when he left to start a company called Megastar Games. Jim liked Chris’s work enough to publish it, for meagre royalties but invaluable experience. And so Chris was commercially published with his unlicensed MTX500 versions of Missile Command, Q*bert, Manic Miner, and a few others.
After high school he enrolled in a computer science and microprocessor systems degree, where he studied the fundamentals of both software and hardware design in computers — an experience he found invaluable, as it taught him how to push computers further by learning how their hardware worked. And it taught him the theories behind the sorts of nitty-gritty software-systems things he’d already been practising at home: optimisation, sorting, algorithms, and even more varieties of machine code.
Escape from Zarcos, Chris Sawyer clone of Manic Miner for the Memotech MTX500
At home, meanwhile, he’d shifted over to the Amstrad CPC, which technologically-speaking wasn’t hugely different to the Memotech system he’d been on before — but it was a modest upgrade, and unlike his previous computers it was actually a popular system. And for Chris it was a gateway to the PC, because in the course of studying at university and making computer games on the side he wound up getting an Amstrad-made IBM-PC clone.
Chris had during this period been getting his games published through Ariolasoft, a German company with a UK subsidiary that promised him a job programming games for them once he graduated. Except some promises can’t be kept, especially in an industry that moves as fast as computer games publishing.
The home computer business was by that point deep into its transition from 8-bit to 16-bit hardware, and that transition came with adjustments to the standard of game graphics and design required, and to the way marketing and sales worked, and the cost of publishing, and so on, and Ariolasoft wasn’t doing too well at managing the transition.
So Chris didn’t have a job waiting for him after all, and he’d missed out on all the great electronics engineering jobs his classmates applied for. (Oops!) But not to worry — he’d made enough connections and enough headway as a programmer that he could get himself a business agent, and that agent in turn connected him to the booming Amiga-to-PC games porting industry.
He later said he’d thought it a “stop-gap” measure, just “a bit of fun” while he looked for more permanent employment in the electronics industry. But Chris took to his new conversions work like a duck to water. The kid who’d had to get creative and remain patient to make anything work on his Camputers Lynx machine now excelled in an environment where he had to contend with the vast gap in multimedia capabilities between the Amiga and the PC.
PCs of the day were pathetically inept as games machines, compared to a system like the Amiga. Whereas the PC had just a CPU, and maybe, in a minority of machines, a dedicated sound card like the SoundBlaster 16, every Amiga came with a custom chipset that contained audio and video co-processors that could take some strain off the CPU while simultaneously offering additional capabilities that PCs lacked. Like the ability to dynamically move between several colour modes, ranging from two colours all the way up to 4,096. Whereas most PC users were locked at 16 colours or less. And every Amiga user had a mouse, and probably a joystick too, whereas on PC you couldn’t bet on either of these.
To get even remotely close to approximating the experience of an Amiga game on PC, Chris had to squeeze every last drop of power out of its CPU. Kind of like he’d been doing with his games on the MTX500 and the Amstrad CPC, except on a grander scale because now he was converting code on the cutting-edge of Amiga game development, and in a couple of cases the cutting-edge of game development on the even-more-powerful 32-bit Acorn Archimedes, which made the typical home PC seem like an antique.
Zarch on the Acorn Archimedes
Let me give you a couple of examples. The first is Chris’s PC conversion of Archimedes game Zarch, or Virus, as it was renamed for other systems, a polygonal-3D shoot-’em-up with colourful virus-laden land presented in a patchwork of undulating coloured rectangles, with a third-person-perspective view of the player’s hoverplane as it battles against gravity and inertia as well as the alien foes. This is super advanced stuff for the 1980s, particularly with the entrancing, buttery-smooth frame rates and 256-colour graphics that together accentuated the particle effects on the ships’ cannon fire and debris, and the shadows cast on the flat-shaded 3D world.
German magazine ASM declared Chris’s 1988 DOS port comparable to the Archimedes and Amiga versions in every detail except for the unavoidable fact that it ran slower on the anaemic PC standards of the day — which, without boring you with technical details, I’ll state simply is a phenomenal achievement given the power differential between these systems.
Virus (aka Zarch) on DOS, using EGA graphics
Then, jumping forward a few years to 1993, consider Frontier: Elite II, which like Virus had been originally programmed by David Braben — a name you may recognise as the creator of 1984 space trading game Elite, which popularised the idea of open-world game design. Elite II, as you can probably guess, was the long-awaited sequel to Elite, and like its forebear it was designed and programmed entirely by David Braben using Assembly language.
A quarter of a million lines of low-level code, specifically crafted to eke out as much power as possible from the Amiga, with a procedurally-generated three-dimensional universe of some 100 billion celestial objects, in which star systems are very often inhabited by advanced races, sometimes spread across multiple planets (which have their own 3D topography, and which you could land on), and everything is navigable via a simulation of the branch of physics we call classical mechanics (which concerns things like velocity and momentum and preservation of energy).
And Chris had not only converted the whole lot from Amiga-native 68000 Assembly code to x86 Assembly for DOS systems, without a hitch, but also he’d done it with enhancements, as the PC had by this point finally caught up and started to pull ahead of Amiga in the technological race. Most notably, he added texture mapping — which literally means the mapping of a pattern or image onto the surface of a 3D object to make it look more realistic, more textured.
He had taken the code of one of the greatest optimisers in the history of computer game development and made it better. The student had become a master. And with that, Chris was ready and eager to set out on his own.
(For more, including the tale of how Chris learnt from his work on ports to make his two masterpieces, Transport Tycoon and Rollercoaster Tycoon, and why you don't see new games from him today, you'll have to either just listen to the episode or sign up as a supporter on Patreon — everyone who pledges $3 or more a month gets access to full episode transcripts [amongst other things].)