Hacker News new | past | comments | ask | show | jobs | submit login
An open source re-implementation of RollerCoaster Tycoon 2 (github.com/openrct2)
614 points by j_s on Oct 12, 2017 | hide | past | favorite | 129 comments

For all RCT2 fans here: check out RCT Classic on iOS [1] and Android [2]. It's fantastic.

I thought the size of the device would be an issue, but I've been playing on an iPhone SE with surprisingly great ease! The tap zones are small but very well defined, so you almost never mis-tap. And the game is I believe bug-free because it has never crashed!

The only real tricky part is designing underground paths and building rides with an excitement rating above 6.0! But that's always been tricky…

[1] https://itunes.apple.com/gb/app/rollercoaster-tycoon-classic...

[2] https://play.google.com/store/apps/details?id=com.atari.mobi...

This is the perfect example of IAP done right and wrong.

RCT classic. Full game for around £5. IAP options for the add-on packs £1.99-£5.99. No other IAP anywhere in the app. No adds. IAP done right.

RCT 4 mobile. Free to play. Ad's. IAP £0.61-£93.99. IAP done wrong.

Hell will freeze over before I play RCT 4 mobile. Seriously £93.99 on IAP. I haven't downloaded it, but I'm assuming this is the fairly standard "coin pack" sort of pattern where everything you do in game costs coins.

Problem is that RCT4 actually looks cool. I'd quite like to play it with the updated graphics and mobile friendly interface if the play mechanics were roughly similar to the original. They have just destroyed a once great game.

I also suspect that unfortunately, I bet RCT 4 is more profitable. So companies are going to continue to do it.

Also, the terrible reputation that IAP has means I regularly don't bother with apps because they say 'contains IAP' which makes it far harder for those who want to do it right as people will just immediately ignore the app because of the label. What we need is for the stores to have some way of indicating or listing the number and type of IAP options available before you buy the app.

RCT 4 Mobile is nothing like the original games. It's simply one of your standard current-day mobile games with the Roller Coaster Tycoon label slapped on it. Go with Classic.

Roller Coaster Tycoon Classic was developed by Chris Sawyer, who did the first two games, and then left the games industry for decades, partially because of a disgust with the shift towards violence[0][1]. So in a way, Roller Coaster Tycoon Classic is the first "canon" Roller Coaster Tycoon sequel after the first two games.

Also, the first game was almost completely written in assembly[2]. I don't think one can pull that off without having some really high coding standards, so I'm not surprised that the game runs really well!

[0] https://en.wikipedia.org/wiki/RollerCoaster_Tycoon_Classic (note that it also has just been released on Microsoft Windows and macOS on September 28)

[1] http://www.eurogamer.net/articles/2016-03-03-a-big-interview...

[2] http://www.chrissawyergames.com/faq3.htm

I kindof wish he’d release the source code

I mean... given it's already assembly it should be easier than normal to reverse-engineer it, no? Or do you think there's lots of nasty low-level hacks in there that will be harder to decipher?

I've tried disassembling the version of RCT 1 that's on Steam, and the program starts by, IIRC, decrypting the other parts of the executable before jumping into it.

Steam uses DRM, does it not? So it could be that, and in that case, perhaps the GOG version gives better results, since they claim to be DRM free.


As far as I know, the version on Steam is the same as what came on the discs with the only modifications being some patches for compatibility. There were also no references to Steam's DRM anywhere

The assembly code might well have been created with lots of macros.

Hi, OpenRCT2 dev here.

FYI: OpenRCT2 has support to consume RCT Classic assets as its base. Also, RCT Classic is available on Steam too (Windows and macOS only, though).

I love the product you work on.

Partially hijacking your comment to say that an easy way to get the original assets in openrct 2 is to install the gog version through wine or play on Linux. Have played it a bit too much to say the least...

If you use gog, there's innoextract for that, so no need for wine or x86 at all.

That's just plain old awesome. Thanks for this!

RCT on Steam has mixed reviews, mostly related to not supporting better graphics. Interestingly, quite a few reviews on RCT on Steam point to OpenRCT2 as a better solution for your RCT fun!

Not having purchased the Steam version, I don't have an opinion on it personally.

I had RTC2: Triple Thrill Pack installed from GoG via Wine on Mac. Experience was mildly annoying mostly because of graphics. Now OpenRTC2 works wonderfully well. Thank you so much! I'll definitely recommend it.

Whenever I see IAP on paid apps I'm almost instantly turned off.

Do you know what sort of nature they are? Is the game complete without them? Do they nag about the IAP in game?

Looks like expansion packs. From the Google Play page: "PLEASE NOTE: Additional content for RollerCoaster Tycoon Classic is available via In-App Purchase, specifically the three expansion packs: Wacky Worlds, Time Twister and Toolkit. The expansion packs are the ONLY content that require an In-App Purchase and In-App Purchases are not used anywhere else in the game."

Actually, the toolkit as an IAP really pissed me off. That's the best way to design coasters.

I didn’t realise there were any! I just checked: it’s 3 expansion packs with I assume more rides and campaigns.

The game already comes with 95 campaigns that you have to unlock gradually. They’re quite varied in terms of style and goals. I’ve completed 17 so far. I bought the game last December, so I still have lots of content to play with…

It's a shame because the game uses IAP for a good reason.

But I don't blame you for being reticent, I am too.

I have the game on both iOS and Android - and the only paid purchases in it are the expansion packs, the game never ever asks you to buy them, but if you do it unlocks the content of the expansion packs, so exactly like with the original game. They are the best IAP I have seen so far.

That's great thanks. I enjoyed replaying Baldur's Gate 1 and 2 on the ipad.

What I really want next is Pharoah.

Wow, Pharaoh. That’s a while ago. Pharaoh’s gameplay deserves a modern, deeper treatment. Badly. That pathing and routing mechanic was really fun to optimize and figure out, and jived oddly well with programming. I easily invested hundreds of hours into it, and really wished you could scale the cities up further.

The Westwood alumni showed up last time there was a thread about them so Impressions alumni, if you’re reading, thanks for a great series of games (Caesar too). Kickstarter!

I worked on Pharaoh and a few other games at Impressions, though I wasn’t one of the original Caesar I, II, and III team (or Lords of Magic, etc.). Nevertheless, we keep in touch though a Facebook group. Many remain in game development. My understanding is that the Pharaoh IP is in a quagmire. I think that’s part of the reason that Tilted Mill made Children of the Nile as a separate property. Children of the Nile really was the spiritual successor to Pharaoh. The chance of Impressions alumni resurrecting any games together is slim because of the different directions we’ve gone and the chain of IP ownership issues with Sierra, Vivendi, etc. I’d love to see Pharaoh and the Caesar games on mobile devices, though!

Children of the Nile on GOG: https://www.gog.com/game/children_of_the_nile_complete?pp=fe...

Ah wow, I just want to let you know Pharaoh is easily one of my favorite games of all time, it's a genre of games I love and a period of history i'm fascinated by, thank you for making it. I'd also sunk hundreds of hours in to it in my youth, would love to play it again!

That's awesome. Pharaoh and Caesar III were some of my favourite games as a kid. Never thought I'd bump into someone who worked at Impression.

I actually grabbed my old Pharao CD two weeks ago and installed it. It still works, and it's still fun!

Same! I went and got the updated version from GOG though, it does bigger screen resolutions and works well under WINE. Danger, though, three days disappeared in the blink of an eye!

I'm glad they finally delivered this. When they first announced RCT mobile everyone was hyped until it came out and was just another build and wait style game. Hoping simcity gets the same treatment (they had an old one but it doesn't really work on new devices and crashed a lot).

Well there are two RCT mobile games. This one, is fantastic. There is another one with more “modern” graphics that is a grinding piece of junk. It has tons of micro transactions and you have to wait forever on everything.

Yeah that's what I was referring to. Was really unfair to fans since their initial marketing made it look like a fresh new game. What a shame. Even the "coaster builder" is awful. Not even sure why they bothered.

And there went my night. Thanks! Better than I imagined this could be done.

Haha. I like this bug fix fixing an issue with people always vomiting.


I have encountered this bug the other day. Literally unplayable but fun watching the guests vomiting all over the park.

This might be excessively prurient, but I would love to see some gameplay video or screenshots of what an unplayably vomit-filled park looks like.

> This might be excessively prurient

Wait what? What do you want those screenshots for?![0]

[0] - https://duckduckgo.com/?q=prurient&atb=v71-6__&ia=definition

Ha! Conflated "prurient" with "vulgar", though I'm guessing that mistake was (hopefully?) obvious from context.

Thanks for the correction, made me chuckle :)

We have had numerous bugs like this in the past. At one point there was a bug where all guests would destroy everything they walked past.

I didn't laugh until I looked at the diff in the commit. Then I couldn't stop laughing.

For more open source game engines or re-implimentations check out: http://osgameclones.com

Wow, that's an amazing resource!

And I've always wanted to put Battle Chess on something modern :D

...oh, 404 dead link. Well, at least Archive caught it and Google does still seems to actually host the files: https://storage.googleapis.com/google-code-archive-source/v2...

Someone backed it up, too: https://github.com/linhlc/openbattlechess

But jeez, linkrot is going to be a huge fucking problem.

Thanks for that! I had forgotten about CorsixTH, the reimplementation of Theme Hospital. Such a great game, I spent weeks playing just the demo.

If you're just there to browse working games do a ctrl+f for



if you're after active playable repos

There is a filter at the top and you can click on the tag.

However it seems that the tags are not all there. For example Freeciv is in there ant not tagged as playable. So don't rely on it.

Hah that's my bad, I didn't even look for a search/filter function once I noticed everything was on one page

If someone would re-implement Age of Rifles, that would be fantastic


Interesting site, although the clone I (very) briefly worked on isn't on that list. Probably just as well, the project is more or less abandoned.

I'm always amazed when I'm reminded that RCT2 was originally written in assembly.

How would that much assembly code be organized? I've never seen a large assembly project, but I would imagine something as complex as RCT2 would easily clock in over 100k lines of assembly. That just sounds light a nightmare to me!

The essence of it is in good application of macros. Macroassemblers were essential tools for software that wanted all three of complex, high-performance, and fast to build on hardware of that era. Although it's a bit intimidating to write a large program without a higher-level syntax backing it, it's possible to invent coding conventions and reuse strategies that get you to the desired level of flexibility and maintainability, but perhaps without as many built-in checks and a simpler strategy with respect to resource usage(a general-purpose "malloc" is not a thing you would want to do casually in an assembly program since it makes everything considerably harder to track - but simpler fixed-buffer or mark-and-release strategies were fair game).

And if you were a little more ambitious you could also write a custom code generator that added whatever additional features you needed - expansions, type checks, expression evaluators, simple optimizations. Code generation is actually far easier today since the scripting languages now are so much more powerful and feature-rich than what a typical early 90's setup would have(assembly, buggy proprietary C or Pascal compiler, Basic variants).

Of course there's nothing stopping you from taking a similar approach now and custom-generating some source instead of using templates or compile-time evaluation or other fancy features - it's just harder to communicate.

There are many large assembly projects.


Even today a minority prefers writing new projects in assembly.


Here you can have a look at Prince of Persia's source for the Apple II: https://github.com/jmechner/Prince-of-Persia-Apple-II

That is impressive, was RCT2 mainly just Sawyer too like TT? Makes you reconsider scale when you say Fred/John/Mary is a 10x'er because she/he got a small line of business CRUD app in some high level language with a battery included opinionated web framework shipped in less than month.

You'd be amazed at how productive you'd become if you're working mostly on your own, uninterrupted, and with a clear vision of what you're building. Look at how much you already churn out in the span of a year, then multiply that.

True, but I also think part of it's the Internet and much more opportunity to procrastination (i.e. now). When I was lad... we had slashdot.org, theregister and theonion, you'd be done within 20 mins. Now we have HN, SO, reddit, podcasts, blogs, twitter, etc.. When Sawyer started on TT I don't think 14.4 modems were even widespread.

How much of the game was actually in assembly? I always heard that it was mostly stuff like the guest AI that was in assembly (which is why you could have hundreds of them running at once), and the graphical stuff was in a higher-level language.

ALL of it. Even the DirectX stuff was hand-written assembly. It's the same core engine going back to the Transport Tycoon days.

There is actually no DirectX at all in RCT2 source code. The game has its own software renderer that outputs direct to the screen buffer.

My understanding is that it was all assembly because he was reusing a lot of code from earlier projects that were written for extremely limited machines.

It's still an impressive achievement. The latest SimCity can't simulate as many people as RCT before crapping itself, even on a machines a million times faster.

The latest SC is kind of a tech experiment in how it works with per-Sim management. Older SimCity iterations are fine on new machines.

Blows my mind. What sorts of optimizations can you do in assembly better than a good C compiler could?

I'm wondering what % performance improvement he saw from doing it this way.

I started working on games in the early 90s and was one of the first to use C instead of asm because my game was targeting Amiga and PC and didn’t involve significant cpu intensive graphics etc. However the rest of the company was working on Super Nintendo, Megadrive etc and these were exclusively asm. C compilers back then actually did add significant overhead to code and you could do much better by hand, especially since cpus in consoles often lacked features such as floating point units or had cut down memory management units. In addition they had custom hardware that you could use (blitter for example on Amiga, gte on PlayStation) that was easy enough to use from asm and the compiler couldn’t help you.

The main advantage that Chris used in RCT2 to optimise his code was that he could vary his calling convention however he felt. Most of the time all variables were passed in registers instead of the stack. This can make for some impressive speed ups.

OpenRCT2 requires original files of RollerCoaster Tycoon 2 to play.

It's the engine without the assets. Kind of like Open Rails, which is an open source engine for Microsoft Train Simulator content. That's been out for a while, and now others are writing content for it.

The same approach was used for OpenTTD, which is a re-implementation and extension of Transport Tycoon Deluxe, one of the other Chris Sawyer classics. When finally all graphics and sounds had been recreated, version 1.0.0 was released in 2010. Before that the original asset files were required to play the game.


Or OpenMW which does the same thing for Morrowind (The Elder Scrolls 3). The main difference here being it runs on Linux natively and fixes tons of engine bugs that never were. They even have their own map editor for Morrowind which is just awesome.

Engines are easier compared to the assets. You only need programmers writing code (hard but easier than finding teams to work on assets)

If you want to buy the game, it regularly goes on sale for less than $2 on GOG

OpenTTD was like this as well for quite a while, until they had enough assets to include it in the base game.

I believe there is a Doom variant with the same requirements. It requires the image and sound files.

I am not a gamer so I can't opine on the quality.

GZDoom! It's amazing. By far my favorite game. You just need the original Doom .wad files.


All the Id Software games with engines released have that requirement. The open source game binaries basically act as drop-in replacements for the original binaries, a lot of the time.

Could have sworn that is the case with the various Quake 1 engines out there, that are based on the source ID released.

0AD still remains one of the best open source games, Blender files and all ... https://play0ad.com

I recently stumbled upon https://github.com/citybound/citybound which draws inspiration from SimCity and RTC among others. The project is still in very early stages, but I thought it was very interesting.

If only it wasn't under a restrictive license....

As a player, you only benefit from the AGPL, as intended. What makes you use the term "restrictive", unless perhaps you wanted to make a non-free derivative or use portions of it in non-free software? This isn't a library.

How is the AGPL restrictive in this case?

Seconded. I can't think of any practical reason AGPL would be more restrictive than GPL to the player of a video games.

Man what a great project, I've been only lightly following it for the last year or so, but it gets me excited. I think I could see myself choosing this as a first open source project to commit to.

Thinking now, I would love to see Dolphin style progress reports every now and then from the project. I'm sure they'd catch a lot of buzz.

Hi, OpenRCT2 dev here.

We already kind-of do that, but it is scattered. See https://www.youtube.com/playlist?list=PL0YvVAW9aoL0jq8XIDee0... and https://www.youtube.com/watch?v=8i6IPPi91Xs and https://www.youtube.com/watch?v=bJxlCxnmRiU and https://www.youtube.com/watch?v=i0HTA79NcIE

These and other useful/current information can be found where most of the community is: on reddit /r/rct and /r/openrct2.

what are Dolphin status reports, and what about them is effective?

You can verify for yourself if you have time; the reports themselves are an excellent resource both for their content itself and as an example to learn from:



>kanwisher: Always interesting to read the release notes on this product. They go into such technical detail, its a joy to read

>overcast: This comment is becoming the HN equivalent of "First!" on Dolphin Progress Reports.


Dolphin is an emulator for the Gamecube and Wii (named for Nintendo's original codename for them). Their technical blog posts are amazing and are released every few months.

They do excellent blog posts, outlining tech details and explaining it for less technical people.

Yes its always been a thought that we should do a Dolphin style progress blog but at present there is no one available to write one.

An amazing project, My only criticism is the scaling, playing in 1080p makes the UI really small, it does have scaling in the options but 1.5 uses antialiasing and kinda ruins the pixel graphics.

Otherwise the best way to play this. I'm pretty sure you can also import certain elements from RCT1 if you have it.

I continue to wonder whether this can be legal at all. It's pretty clear they've been looking at the disassembled code, so it's not clean-room reverse-engineered.

Anyone interested in this may also be interested to know that there is a pretty thriving subreddit for RollerCoaster Tycoon: https://www.reddit.com/r/rct/

As a lover of the original I wish this project has the same success OpenTTD has had.

I've never played this but have been aware of it for a while. Judging from the Readme it sounds fairly complete? Like I could play out a full scenario in this without missing features or crashing?

Its fully complete. Because it was reversed engineered function by function, it was never really not feature complete, since it would still call out to existing code in the binary (thought there were some bugs). They've since added a ton of new features not in the original game (eg multiplayer networked mode), native OS X/Linux support, etc.

I contributed a little bit back in 2014/2015 and it was a lot of fun. Because it is almost all hand-written x86 ASM (which is insane), it was actually not too hard to reason about, certainly far easier than what Clang/GCC will spit out.

I also head of it for a while before I gave it a spin. I finally got around to it about 6 months ago.

The game works really well. I don't remember noticing that anything was still missing in singleplayer. Multiplayer... there was something, but I don't remember what. Desyncs for sure, but I think those were always solveable by just reconnecting. I'm not sure what, but there was a reason why my girlfriend and I didn't play it. We played RCT2 a bunch, with one person watching and the other playing, and OpenRCT2 with multiplayer seemed epic, but there was something annoying in multiplayer, I just don't remember what.

By now, it might have improved again. I remember the development going really fast before. And in singleplayer, I don't think there were any bugs that prevented me from playing.

Give it a spin if you were (or still are) into the original Rollercoaster Tycoon!

Thanks for the info, I definitely will. RCT and RCT2 are among my favorite games ever made. I still load them up at least once every 6 months. Leafy Lake / Lucky Lake will always have a place in my heart.

That's one of my favorite levels too! Whenever I'm unsure which one to load up, that's almost inevitably going to be it :)

It's mostly complete: a couple levels consistently crash on me [mac os], but for the most part it's pretty awesome.

I wish someone did something similar for Populous: The Beginning.

I wonder if there is some universal way to increase DPI for SDL-based apps. I am on linux and I can't read anything =(

SDL2 has SDL_WINDOW_ALLOW_HIGHDPI, which creates the window in high-DPI mode.

I have added poor man's scaling in https://github.com/OpenRCT2/OpenRCT2/pull/2280 you can also look into the investigation lead in https://github.com/OpenRCT2/OpenRCT2/pull/2328

Isn't there a way to preprocess the sprites and create 2x and 4x scaled versions?

No, not yet, because of the way data is stored. When we move on to our own save format it will be possible, I'm sure.

there's also a pretty nice Knights and Merchants remake http://www.kamremake.com/ https://github.com/Kromster80/kam_remake

I remember playing multiplayer KAM a few years back. I don't know how they wrote the netcode, but the game ended up terribly out of sync pretty fast.

It's a shame the remake has decided to go 3d and lose the original art style. The original really has timeless graphics.

Nice, does this get rid of the shitty AI for the janitor? I can't tell you how annoying it is to watch them do everything except clean the damn puke and trash of the path.

You can turn off mowing the lawn which will keep them on barf duty unless you have a giant flower garden in their work zone. It's pretty much necessary if you have a coaster with a moderate or higher puke value in the park.

Also don't forget that you can put bathrooms near the exit of an upchuck inducing ride to keep the paths a little cleaner.

would add a nice dynamic if their job performance was based on how much they were paid and if you could fire the underperformers.

What I'd like to see is an open-source version of Disney's Coaster game/simulation.

Or for that matter, any kind of roller coaster simulator. There's an excellent Windows roller coaster simulator out there ("No Limits"), but nothing like it exists on other platforms.

Well time to go dig out my CD case.

If you can't find it or it is too scratched, they also sell the full edition of RCT2 on GoG for cheap https://www.gog.com/game/rollercoaster_tycoon_2

"RollerCoaster Tycoon 2 was originally written by Chris Sawyer in x86 assembly and is the sequel to RollerCoaster Tycoon."

Back when things used to be more hardcore.

/me wishes there was an equivalent open source project for Chris Sawyer's game Locomotion.

Spent so many hours playing it when I was younger. RCT too :)

Anyone know what Chris Sawyer is up to these days?

He gave a pretty interesting interview early 2016, apparently he was focused on the rerelease of RCT on mobile and enjoying life : http://www.eurogamer.net/articles/2016-03-03-a-big-interview....

Seems like a humble person with a good life ethos. I like his philosophy with the RCT license of letting others have a go at it since he already made what he wanted.

I wish he would come back to make another game. RCT is so consistently fun so well put together it always impresses me so many years later. That guy is a hero of game design.

Anyone know what engine civ 6 uses? guessing it's some in-house one but am curious if it has an internal name or something.

I only have OS X does this mean I can buy the rtc2 (which is windows ) and still be able to play it on OS X?

If you buy it from GOG you should be able to get the Windows exe, you can then try and install it with WINE. That should give you the game files to import into OpenRCT2.

There's innoextract for gog executables

Buying RTC Classic from Steam (which is available on macOS) is probably a better idea. It's an update to the game featuring both RCT1 and RCT2 campaigns.

RCT Classic is one way of getting the files but it's cheaper to buy RCT2 then load it in OpenRCT2. But to each their own as long as you're having fun.

I gave a talk about this project recently: ttps://www.youtube.com/watch?v=KUBYTcVjp7I

Thanks for sharing, I enjoyed it. Especially the later parts. Looking at your GH it looks like it lost some steam? Did you continue on it and if so did it produce anything "surprising"? As in, this should not really be a good coaster but it has great score :-)

Which part is open source if I still need to buy the original game first?

I haven't look at this game in particular, but usually you need to buy the original game to get the assests (art, models, audio, etc).

Even official open-source releases like the Quake series still require you to buy the original game in order to run them.

They reimplemented the game from scratch, the whole engine, UI everything. However, the artwork involved is still something you need to get from the original game, much like that used to be the case for OpenTTD.

Please add a donate button, I would so do it! Loved the original game.

Ooooh that's such a fun game.

C compiled with a C++ compiler.

Hi, OpenRCT2 dev here.

We're gradually moving towards C++, compiling our current C sources as C++ is the first step. Quite surprisingly too, we discovered how shitty a C compiler MSVC is, because just changing the C code of ride drawing to C++ made a huge performance impact there.

Reportedly, GCC also benefited from the switch, but the effect was less pronounced there.

chris sawyer a hero on carmack's level. (sawyer is behind transport tycoon and rollercoaster tycoon)

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact