RollerCoaster Tycoon at 25: 'It's mind-blowing how it inspired me'
theguardian.com
theguardian.com
Thanks Chris!
[1]https://store.steampowered.com/app/2287430/Metropolis_1998/
Lots of potential to be an amazing city simulation game
Yes, it's less realistic, but it is so pleasant to work with. Everything you build aligns perfectly and if you want, you can neatly fill the entire map.
In comparison, (even with many mods) my Cities Skylines or Planet Coaster creations never look quite right. Building the roads and paths is always awkward and frustrating.
One thing RCT does better than other sim games I've played is having a ton of customization options (Parkitect does this too). I like Timberborn also and wish it would have more customization possibilities like the RCT games. There are some limitations in the RCT games, like setting up a free monorail system doesn't cause anyone to use it to get to the next ride they are heading to, but in terms of decorations there is quite a bit you can do with it.
I only ever had the original one when growing up and did stuff underground a fair bit. One of the early campaign parks came with a bunch of rides and stuff underground off the bat.
I think there were some practical changes to make it a bit easier in RCT2, but it was never hard.
He likes building games that use an isometric view and simple grid so I figured Against the Storm is a nice modern option although I can see why one would dislike it because of the roguelike elements.
> I mean is not even a city builder...?
What defines a city builder? Steam describes it as one. Game description: A dark fantasy city builder where you must rebuild civilization in the face of apocalyptic rains...
I'd consider a city builder to actually... Build a city.
Against the storm is more of a strategy game, with caveat that your strategy needs to center around the pure chance RNG for what building you're allowed to unlock.
One assumes he was an expert in 68k and x86 assembly.
What a legend!
Honestly, it's not that hard. Not for a decent assembler.
The "hard parts" of assembly are things like trying to do multi-precision stuff on smaller precision machines (like 16- 32- bit math on an 8-bit processor). Just coming up with the tiny algorithms we all take for granted. Of course, today, you don't have to invent those.
Folks think that written in assembly is all bit twiddling and high, dense data structures. But that's not necessarily true.
On a modern x86, it's not that much different from normal C in terms of data sizes and data structures. 16- and 32-bit registers. Add/Sub/Mult/Divide instructions. Block move instructions. Modern assemblers handle structured data. Stupid assemblers handle offsets readily. Assemblers handle local and private symbols, exporting routines, code modularity. You don't have to worry about addresses and what not, linkers do all of that. Symbolic debuggers like anything else. Not like they have to burn a PROM and shove it into a board every dev cycle.
But, most important, once you've got started, once you have the common elements of programming (parameter passing, looping, math, structures, pointer dereferencing), I mean, that's it, right? Rinse and repeat. That's what higher level languages give you "for free". Not every line is hand crafted, hand optimized, etc. Much of it can be stomped out with macros for anything that takes more than a few instructions. Tada -- you now have a higher level language (for small values of "higher").
If anything it's just more tedious. Less code density (assuming little macro use) per screen, etc. But even then, once you have your momentum, once you have your routine patterns, they just fall out of the code as you read it.
I remember my assembly class in college (I was not a good college student). I stopped going to class because the teacher kept asking me system questions. She gave me an incomplete, and I had to do all the projects again next term (that was, honestly, quite nice of her -- she could have just failed me).
So, I did those projects. Those simple Assembly class projects. Trivial little programs "Convert decimal to binary" type stuff.
What I did was I wrote a large macro library, inspired by Forth. I basically ported a rough Forth vocabulary to assembler macros. That "convert decimal to binary" project?
; Convert 10 to Binary and print it
PUSH 10; PUSH 2; PUSH BASE; STORE; PUSH BUFFER; NUMBER; PUSH BUFFER; PRINT
So I turned in my projects, each one was like that -- 10, 20 "instructions". I said "Here's my projects", handing 10, small, 2-3 page printouts, "but you'll need this to understand them" and I gave her a 3/4" thick printout of the macro library.Yea, I was kind of a jerk. Just where my head was at.
Figured I'd get an F or and A. She gave me an A. (I mean, if nothing else, I did demonstrate a solid understanding of assembly language programming!)
But the underlying point is that it's just patterns, patterns we get used to using and writing. It can be inscrutable to the uninitiated, but the curve, particularly on modern processors, is not that steep. Like I said, you're not just shifting and adding to multiply anymore like the old days. And staring at a disassembly of raw code is not the same thing as writing assembly language with modern assemblers.
In an elementary-school BASIC class, I completed an assignment using `READ`/`DATA` when it was not necessary to do so. For a later assignment involving writing a quiz game, I resubmitted the same code with the `DATA` lines appropriately modified!
You can easily find sources from Wikipedia by following the numbers in brackets (here "[3]").
BTW I also remember the cache sizes of all these chips and wrote mostly in asm on them. Most people who were good at asm coding didn't stop because it took too long (you can always focus on just the hot loops), we stopped because we started getting our asses handed to us by C/C++ compilers.
Finally, just because asm coding provided sufficient performance, doesn't mean it was necessary, and it's of course possible to write arbitrarily slow asm code too (like a bubble sort in asm vs quicksort in C).
I can respect the dude but in many ways RCT was a continuation of his previous games.
As people who study software development we have to sometimes call it like it is.
Using ASM was not the right choice as it didn't provide any obvious advantages compared to languages like C.
The genius of OpenRCT2 wasn't in the language choice but rather in the immersive world available in your cereal box.
There are language choices in projects where the choice seems to hurt the project, that's for sure. Wrt/ RCT, I don't see a single downside though. The cases I'm thinking about are Minecraft, for example, with its horribly performing Java code. Cities Skylines with their engine choice and usage, resulting in 30-40 fps even on high end hardware. Project Zomboid with LUA - many performance problems, and artificial limitations to keep performance to a reasonable limit.
Also consider that often, a project either gets off the ground with the sub-optimal choices, or it doesn't, at all. And as we see from the results, a sub-optimal, but fun game is better than an optimal, but non-existing game. At least if you consider fun and success desirable.
It was the right choice for the developer because he had years of experience developing other games, he probably had a structure and a good enough library by the time he started working on RCT.
* Age of Empires 2
* Alpha Centauri
* Baldur's Gate
* Counter-Strike (the original mod!)
* Freespace 2
* Heroes of Might and Magic 3
* Homeworld
* Jagged Alliance 2
* Outcast
* Planescape: Torment
* Roller Coaster Tycoon
* SimCity 3000
* System Shock 2
* SWAT 3
* The Longest Journey
* Unreal Tournament
I've (re-)played several of those (BG, HoMM3, JA2, RCT, Ps:T, SS2) in the past couple of years and at some point realized that they were all released in 1999.If you include the 1998 Christmas market, you can add at least:
* Falcon 4.0
* Fallout 2 (definitely should've been delayed until 1999!)
* Grim Fandango
* Half-Life
* Myth 2
* Thief: The Dark ProjectIt's just impossible in an environment where nearly every major game is expected to be 3D, action-focused, and playable on console.
There are quite a few counter examples of this, even glossing over mobile, but what makes you think this?
Reddit discussion on 1999 in film: https://old.reddit.com/r/movies/comments/y7kaft/1999_had_a_l...
For what it’s worth, I do think they were genre defining. I was trying to think of arguments against that statement, and just can’t come up with anything. I suspect it’s just the 5 year difference that allowed equally amazing but different games to get the same label again :)
It’s interesting that I probably have to go back several years to get a list with a similar number of titles these days.
Its same with '99 movies.
Maybe 99 was the peak of our civilization?
App Store https://apps.apple.com/us/app/rollercoaster-tycoon-classic/i...
Also on Steam https://store.steampowered.com/app/683900/RollerCoaster_Tyco...
There's an enduring player base and online community for it, as well as a really solid open source reimplementation:
I did not know it, but it was my first experience with economics. I mistakenly thought that this is what policy planners _actually_ did in the real world. Imagine the disappointment when I found out that was not true.
Nonetheless, it ultimately inspired me to go into data science in market/competitive intelligence. First at hedge funds and now as my own startup.
I have never been able to shake the notion that build a real-time view of the real economy was the most interesting thing to work on.