Sorta blew my mind how effortlessly a Pentium 1 could run a game this “busy” with a 1000 guests & 30 rides happening on screen at once.
@tacodeazul17132 жыл бұрын
maybe some of that efficiency is lost in today's software It doesn't seem like our games are THAT much more complicated or graphically intensive. I thought games would look so much better than they do by now *plays game from 1995* Oh my god gross
@DasWunschkind12 жыл бұрын
This is it. For a game with this many things going on at once in 1999 on single-threaded hardware that was already 5 years old at the time… perfectly optimized assembly was likely the only option.
@Backroad_Junkie2 жыл бұрын
The game would take forever to calculate excitement/intensity/nausea after a while. I figured the video was the priority, and other things got pushed into the background when things got really busy...
@adamant55502 жыл бұрын
@@tacodeazul1713 Gaming companies are now machines that only care about money. Back in the 80s and 90s you had individual designers like Sawyer and Will Wright (SimCity and The Sims) who genuinely saw designing video games as an artform. Nowadays you have armies of coders but no soul in the games.
@tacodeazul17132 жыл бұрын
@@adamant5550 yea, I think that's true for AAA platforms for the most part. But frequently one has a novel idea and ends up putting it to paper and making something great in the smaller scale. I can think of a few smaller teams or their games that are killing it - Battlebit is about to explode, Among Us, Minecraft (before it was sold), Cities Skylines, Arma and Dayz, Cuphead.. so on With Unreal Engine and Unity i think people are being saved some of that effort and can get back to being creative and making interesting and new experiences. Just wait.
@coolbrotherf1273 жыл бұрын
Building such a complex project in Assembly entirely by himself is just insane. Even the simplest Assembly coded games in the past had entire teams dedicated to the development of them. RCT is probably one of the most impressive uses of it.
@sluttyMapleSyrup2 жыл бұрын
At least he had his previous project, Transport Sim, to use as a foundation (also built by himself afaik)
@JoeyJojoJrJr2 жыл бұрын
Seriously. I work in C, and when he said at 1:22 that it was all written in assembly by one person, my jaw literally dropped.
@bingobongo16152 жыл бұрын
I wonder though what he exactly did here. Is the complete game coded in assembly or did he built/use an environment which is based on assembly?
@coolbrotherf1272 жыл бұрын
@@bingobongo1615 He wanted RCT to run well on any computer at the time and was already very very skilled at optimizing assembly so he just hand coded all the assembly himself as C and C++ compilers weren't good enough at the time for the optimizations he was intending. These days projects like openRCT2 just use a C++ compiler because it's plenty fast for modern computers.
@UndercoverScambaiter2 жыл бұрын
Total respect for what Chria achieved!
@SkeleTonHammer2 жыл бұрын
This was back in the day when "Tycoon" games were a big deal, also. Nowadays when you see a Tycoon-titled game on Steam or whatever, you can guess it's probably sort of low effort or shovelware. This game was anything but. I'm 36 and I'd guess I spent a total of 500+ hours on this game back in the day. Every single music track, crowd sound, etc. is burned into my brain.
@paulyearley10842 жыл бұрын
There was a stretch in my college years (1999-2000 in particular) when if the guys in my dorm weren't playing quake, we were playing RCT because it was an honestly fun, and engaging game. I didn't realize that it was programmed THE HARDEST WAY POSSIBLE short of whole-ass machine code, and that makes it all the more impressive.
@Bittamin2 жыл бұрын
This game is amazing and all of my childhood wonderment spent playing this game with my babysitter when I could barely wipe my ass will always remain after realizing just how much effort one person put into ensuring ALL of us could have a good time. I hope he knows his accomplishments will reign higher than Elon Musk within 100 years
@WhatAboutZoidberg2 жыл бұрын
Especially the fake crowd noises
@HiBrau4 жыл бұрын
Hopefully the youtube algorithm picks this up before 10 years goes by
@aojeong39024 жыл бұрын
Success! this showed up in my suggestions
@MisterHatsofMemphis4 жыл бұрын
Just showed up in mine, lowest viewed video to do that
@mvamorim3 жыл бұрын
Belive it or not, I looked up for this
@Johncornwell1033 жыл бұрын
1 year old it's not looking good
@sheeperskipps3 жыл бұрын
Same here!
@jelmervd2l4 жыл бұрын
Lol, the line 1046 at 2:03 that reads printf("fuck this shit"). So relatable
@puppergump41173 жыл бұрын
You probably pause the end credits so you can read them
@gunarcom3 жыл бұрын
My code comments get more and more desperate and pissed after midnight.
@pierreo333 жыл бұрын
@@puppergump4117 who hurt you
@puppergump41173 жыл бұрын
@@pierreo33 I forgot, but I'm ok now.
@LB_4 жыл бұрын
Nice work! I'm a professional C++ programmer and I always enjoy seeing content like this. I had to work in MIPS assembly for a project in college once, it was very verbose and prone to mistakes and inefficiencies. These days I am very happy to write higher level code and let the compiler optimize things better than I ever could. What Chris Sawyer did was nothing short of masterful.
@NativeResolution4 жыл бұрын
Thanks! I'm a Software Engineer myself, and I've been wanting to make a few videos like this for a while now that also taps into the technical side of games for people who may not be familiar with it - not sure how far I'll go with it, but I'm glad you enjoyed this one! There's zero chance I'll ever have to touch anything low-level like assembly at my current job, but learning it in my architecture class really did give me a huge appreciation for games that were programmed this way
@evanshlom97673 жыл бұрын
@@NativeResolution what other games were programmed this way??
@dr.angerous2 жыл бұрын
@@evanshlom9767 shut up
@halinaqi21942 жыл бұрын
I am entering 4th year of game dev uni, and in 2and year we used MIPS assembly code for assignments for the computer architecture and algorithms class. I didnt mid doing the exercises in assembly because once you get the hang of it, it was really cool to see the program do exactly what you specified and can see the registers update step by step. Now I would never want to create a game from scratch using assembly, and honestly, christ Sawyer is impressive to be able to create a game like RCT and have it be really optimized.
@CristianMolina2 жыл бұрын
@@evanshlom9767 tons of games were dev. this way, mostly on older computers & consoles (atari, nes, snes, megadrive, etc) because there was almost the only way to achieve it. Also, I guess even if they had a shell of C code, most procedures were optimized assembly that were reused between projects as probably this author did reusing code from Transport Tycoon and other prev. work.
@MrCovi29553 жыл бұрын
As a software developer, a good analogy is that high level programming languages are like building with duplo legos, and low level assembly is like plastic-injection-moudling your own toys. One will be full of air pockets because you're building with bricks (the higher level the language, the more air holes, c++ is probably more like regular legos, java is probably more like those massive "bigger than duplo" generic blocks), the other will be perfectly suited to exactly what you need... IF you can do it.
@Koich142 жыл бұрын
nice! that's a very interesting analogy :3
@jazzabighits44732 жыл бұрын
They make full structures and buildings out of regular lego, so I don't think you need to mould your own, that's just extra work lol
@ArrKayLondon2 жыл бұрын
Then what the hell is python?
@FixTechStuff2 жыл бұрын
I used to be a gun at 6502 code, I never like basic a high level language, it just seemed overly complex and slow to me. Same with C++, I never got the hang of it. I can't speak for X86 assembly, but others see high level languages as efficient and time saving, I see overcomplicated, clunky and slow.
@Wieprzek2 жыл бұрын
@@ArrKayLondon well there is cpython which would be again regular legos. Otherwise its like building out of apartment blocks
@GretgorPooper Жыл бұрын
My man coded a rudimentary physics simulator in ASSEMBLY (for rollercoasters) and that's absolutely epic by itself.
@PlasticCogLiquid3 жыл бұрын
I never get tired of watching the coasters go around the tracks in this game. It's mind blowing how well it all works, the z-sorting is nearly perfect. I wish someone would do a video commentary on the programming of the coaster physics, z-sorting and movement
@Blarnix2 жыл бұрын
I cannot BELIEVE that he made this entirely in Assembly. That just melts my mind, honestly. And all alone, too. That’s inexplicably difficult.
@andreaalgeri31993 жыл бұрын
Considering the use of assembly, the variety of the game content (scenery, terrain, rides, coasters), the completeness of the mechanics (from coaster design to park financial management, through staff micro-management) the robustness of the product (no major bugs, all rides and coasters pretty balanced) and the freedom of the gameplay (you could design your coasters in all 3 dimensions, with underground tunnnels, twist, loops, etc), my mind simply refuses to believe it was designed and developed by a single person in two years. I do not care how many proofs one brings me, I will never believe it. Chris Sawyer demonstrated an unthinkable amount of skill. If had taken another this journey in any other industry than video games he would be remembered as a genius, but since he spent his abilities in a videogame, almost none knows who he is.
@Motorsheep2 жыл бұрын
Well, I guess it should be pointed out that Roller Coaster Tycoon was built on an existing and extensive framework, which is Transport Tycoon. So at least the terrain engine and the game menu structure existed already, and he could probably repurpose other parts of TT as well. Apart from that, I'm pretty sure he the design process had started long before the "official" development process. TT was published 5 years before RCT, so there's a three year gap, and who knows how long he had actually been toying with the idea and thinking about gameplay elements... Still, it's a massive feat...
@alaeriia012 жыл бұрын
It actually takes physics into account too. Guests have weight and a full train will travel faster than an empty one. (Fun fact: the backwards looping coaster train is slightly slower than the forwards one because it doesn't have the streamlined front!)
@jbird44782 жыл бұрын
@@alaeriia01 Yes, but all those mechanics were inherented from Transport Tycoon. It is pretty obvious it uses the same game engine but a bit updated. To the code there probably isn't much difference between trains on railway tracks and carts on rollercoasters. In fact, he clearly reused some of the newer track laying mechanics of Rollercoaster Tycoon in Locomotion; this time for trains again.
@stereokel2 жыл бұрын
@@alaeriia01 really? Didnt know that. So theres also some kind of aerodynamic programmed into RCT. Sawyer is a fuckin genius!
@alaeriia012 жыл бұрын
@@stereokel I think it's just a higher coefficient of friction for the Backwards Looping Train than the regular one, as if the train is actually traveling backwards it slows at the same rate that it would traveling forwards.
@aaakitsune2 жыл бұрын
RollerCoaster Tycoon feels like a game wich can stand the test of time. Its just pure joy once you adjust to the older graphics and buttons. Maybe its a personal prefference, but i enjoy its grid based building system way more than modern free building modes like Planet Coaster or RCT World. Simplicity is often better than complexity.
@enigmalfidelity Жыл бұрын
I still play rct2, and if you own a legit copy, you can download an open-source multi-player mod with hundreds of new scenarios and such. You can go vs mode, or co-op. The co-op 12 player.maps are insanely hard. It's really cool. Careful though, as installing the mod wipes your achievements in the vanilla. Gotta redo all the maps over. The mod is called "Open RCT"
@jzmmm2 жыл бұрын
Transport tycoon was the masterpiece. It came out in like '94 and it ran perfectly on my 486 at the time (also from memory ran perfect on my friends 386). RCT is build on TT's engine. I remember it looking so unbelievably good compared to other games at the time. Wish Chris Sawyer made more games.
@dietermitplatten5 ай бұрын
Right! RCT is based on TT which is the actual masterpiece imo. I was hooked on that game for months when it came out.
@Eisesser014 жыл бұрын
One has to mention that the computing performance and amount of memory on the Gameboy or the NES are far from what we had back then on a PC. The processor on the Gameboy clocks at approx. 1MHz and had 8kB of memory. Programmers had to make a lot of decisions when developing a game to fit the requirements of the hardware. On the PC back then, we had megabytes of memory and a much higher clock speed. The x86 instruction set has more "programmer-friendly" instructions and made it easier to program on these processors than on the Gameboy processor :) Nevertheless, programming games in Assembly is a skill that should be respected!
@DrSwib2 жыл бұрын
I feel this is a little misleading, Chris Sawyer didn't program Roller Coaster Tycoon entirely from scratch in two years. Much of the engine is repurposed from Chris Sawyer's earlier work: Transport Tycoon which was in development a full decade before the release of RCT. Chris also had the hobby of rising rollercoasters before he started his development of RCT as well. That said, the amount of work and prowess put into RCT is monumental, but knowing it was built upon previous works takes it from the realm of completely un-human to genius.
@SENTRY4561232 жыл бұрын
So Chris Sawyer was inspired by himself!
@turolretar2 жыл бұрын
That’s even more impressive
@namename22152 жыл бұрын
haha i guess a better way to put it was that RCT was his magnum opus rather than misleading. In academia it would like all his references were himself!
@sluttyMapleSyrup2 жыл бұрын
@@namename2215 I think that's a good way to describe it, especially with the remasters he's done for the original two.
@MrGencyExit642 жыл бұрын
Transport Tycoon was a masterpiece, the video should have been about it instead :) So many memories of that game.
@94Quang3 жыл бұрын
Creating Mario and old classics was insanity too, the gaming consoles had so few memory (40KB) that they had to do a lot of tricks to press it into those cardriges.
@halinaqi21942 жыл бұрын
The sound chips were also limited to how many unique sounds can be played at once, so older nintendo games dont have full noted chords playing to save "bandwidth " for sound effects. This means they used clever composition techniques in music to imply chords to your ears with less notes playing at once. And since sound takes up memory size in a cartridge, i think the sounds come installed on the console instead so all the old NES games had the same chiptune set, same soundfont.
@WalleBot2 жыл бұрын
@@halinaqi2194 This is pretty interesting, so that's why in games like Super Mario Bros, producing sounds such as using the Fire Flower or jumping will remove part of the music temporarily.
@LordSplynter2 жыл бұрын
@@WalleBot Never realised that, wow
@WalleBot2 жыл бұрын
@@LordSplynter Yes, it's very well done I think so it's not noticeable until one points it out or you listen for it
@MrGhosta52 жыл бұрын
Iwata coded pokemon gold and silver himself to get it to fit on the gameboy cartridge.
@hardtofind51963 жыл бұрын
I am about to finish my x86 assembly course in my CS degree and when I heard he programmed that game like that I had a literal OMG moment
@akpokemon2 жыл бұрын
I still have absolutely no idea how I got through my assembly course. (Which was part of my INFORMATION TECHNOLOGY BACHELOR’S DEGREE, MIND YOU). I had to go through the most grueling hell for my degree, relative to what an IT degree _should_ rationally consist of, and all people see is “oh…IT. Lol. Okay. Every average dude below 30 can do ‘IT’ lol.” Sigh
@hardtofind51962 жыл бұрын
@@akpokemon honestly, more than a year later, neither do I know how I got through that course XD kinda hardcore ngl
@peddersmeister2 жыл бұрын
I believe the predecessors Transport Tycoon and Transport Tycoon Deluxe were also assembly The guys a proper genius
@MrSmith-rk4jq2 жыл бұрын
@@akpokemon why the hell they teaching you assembly for an IT degree tho lol
@jakegarrett81092 жыл бұрын
@@MrSmith-rk4jq Probably needed to stand out from the competition, after all the old guy in the Whitehouse told all those pipeline workers when day 1 he closed their jobs with executive orders and told them all to become programmers.
@Sill19922 жыл бұрын
I've spend a solid amount of my child hood playing this. Back then it was high quality, never slowed down, always smooth. It's almost like you can feel the efficiency of the coding. Never knew this story, thank you!
@billschannel11162 жыл бұрын
For younger people it should be pointed out that this would not have seemed as complex regarding assembler. When I was a child I got a PCjr, Dos, the basic cartridge and a book on assembler. I became an expert first on Basic, then assembler. Debug was used to create my first non basic program. At no point was this considered complex, I just viewed it as something I could do. The game is great, and it was complex and something I would not code today but the creator probably felt as empowered as held back. Definitely not what he would think starting it today! And by the way, learning machine code/assembler first was awesome. I programmed in a lot of the big languages up until recently but I was always thankful I started where and when I did.
@logsupermulti39212 жыл бұрын
For me the pinnacle of assembly programming still is Frontier: Elite 2. Released six years before RCT it was a fully open 3D space combat and trading sim with modeled Newtonian physics, seamless ground to space flight in 1:1 scale solar systems, of which there were about 250,000. And it all fit into a 400KB executable. David Braben is an incredible software dev.
@leftymcshotty47843 жыл бұрын
This is only reinforcing the thoughts I had as a 6 year old. That Chris Sawyer is an intellect comparable to Nikola Tesla and Archimedes.
@NinjaRunningWild2 жыл бұрын
Let's not get carried away. Games are extremely complex to program. But that pales in comparison to ushering in the industrial age because you invented the prevailing electrical current everyone uses, fluorescent lights, electric motor, & _wireless._ That impacts *everyone* whereas this game, great as it is, doesn't. I say this as a guy who programmed games for over 20 years & ran the local chapter of the IGDA.
@dharkbizkit2 жыл бұрын
and today, it feels like nothing of that mind is left to be put into games. didnt he gave up game dev in the early 2000s?
@ProWajxxx2 жыл бұрын
@@dharkbizkit games today feel so souless, idk if its because im getting older, but playing those older games was so much fun compared to today
@gxlorp2 жыл бұрын
@@NinjaRunningWild the circle jerking of this guy/game is ridiculous. His coding may be impressive but that's not the same thing as game play being impressive
@dharkbizkit2 жыл бұрын
@@ProWajxxx i can totaly relate to that, i feel the same. i dont know you how old you are and when you started gaming (iam almost 37 now, startet on the amiga 500 in the early 90s, pc since 1998) but its not just age, that changes you. the games themself changed, the industry changed. on the other hand: its hard to compete for games, if you play one of the award winning blockbuster titels during your late kid early teen times. you can be impressed easy during that time. its the same with movies for me. i was 15 when lord of the rings came out. and that movie was so epic and big in scale, that everything that came afterward, felt like a smal project that doesnt even play in the same league, but we rarely had movies afer 2000, that did play in the same league. that movie spoiled me
@GamingRevenant2 жыл бұрын
Amazingly set out and explained in a comprehensive way. I believe this also explains why for instance when you press load or just press the .exe to launch the game, it's near-instant due to the optimized code. You can run RCT with next to no issues on even the oldest systems to date, and for insanely large projects we finally have OpenRCT to get around that if required. Chris Sawyer remains a genius that had a passion for gaming and coding all at once!
@areteees3 жыл бұрын
My understanding of assembly is that it's basically the first step above writing code in 1s and 0s, to underline how insane it is that this game was written in it. Nice video.
@DanKaschel2 жыл бұрын
Not to be pedantic, but there's no such thing as writing code in 1s and 0s.
@miguelzavaleta19112 жыл бұрын
@@DanKaschel CS is not really my field, but I like to think I'm fairly familiar with it -- I never know what people mean when they say that. Do they mean writing an executable from scratch in binary? Cause that'd be pretty much impossible.
@DanKaschel2 жыл бұрын
@@miguelzavaleta1911 yeah, it's kind of like saying "he wrote a novel using ink". Binary is just a way of representing data, so in a sense you're always writing code in binary. But it's not the unit of thought used for writing code.
@WalleBot2 жыл бұрын
@@DanKaschel Ink is readable, though. Compiled binaries cannot be instantly translated back into the code, depending on the compiler...
@George_Bland2 жыл бұрын
Yeah it's the next step from machine code we call it.
@MickanMansRCTStation4 жыл бұрын
Awesome video! It never ceases to amaze me how much complexity and detail was put into this game (e.g. guest weights influencing the speed of coasters!). I think it also incredibly impressive how intuitive and well-balanced the game is considering all that detail.
@Baerenson2 жыл бұрын
Ye, I noticed the weight and speed difference too and always considering it while building. I calculate it when test ride but it would be a nice feature to test ride the coaster with guest weight.
@eldemente872 жыл бұрын
The physics of the coasters were so ahead of its time I never actually understood them.
@Trance_Kitsune2 жыл бұрын
RCT has such a massive place in my childhood and life. The game itself plus all its visuals and soundtrack.. I am extremely thankful to Chris Sawyer, Simon Foster and Allister Bimble. God bless them. Thank you for putting together this video. ❤
@logoncal3001 Жыл бұрын
I give props not only to Sawyer but to all contributors of Openrct2 who expanded the game beyond anyone's imagined capacity
@pikachuchujelly7628 Жыл бұрын
Unfortunately, the OpenRCT2 "refactored" much of the code into object oriented C++, so it doesn't run nearly as well as the original. Placing large prebuilt rides, loading saved games, and panning with underground view enabled are noticeably slower than the original.
@kilgoresapothecary45012 жыл бұрын
This is mind boggling. Coding the NPCs and physics of the roller coaster movements alone! How did he do it?!
@deletedaccount19903 жыл бұрын
It's not for nothing we RCT veterans name him the Legendary Chris Sawyer himself. His game has inspired us and we see him as a genius.
@RagbagMcShag2 жыл бұрын
My friend and I played countless hours of RCT, we are both programmers now :)
@deletedaccount19902 жыл бұрын
@@RagbagMcShag I still play it a lot. Now in my late thirties. I don't think I'll ever stop playing it.
@novakattila2 жыл бұрын
Chris Sawyer had the combination of extreme creativity and technical savyness not really found in many people, and for that he is regarded as a legend for most in the industry.
@Nomaran2 жыл бұрын
Can we also take time to appreciate how well it runs on modern hardware? A lot of games from that era have issues running but RCT just keeps going.
@ResonanceHub4 жыл бұрын
HOW do you only have 291 subs. This is high quality, I hope the KZbin algorithm picks this up one day
@kiracollins2573 жыл бұрын
Btw this channel has great production. Nice sound and edit. Hopefully yt and people will acknowledge it
@mwatkins05902 жыл бұрын
Assembly isnt as hard as one would think. Well, it is at first, but there are a few things that make it easier than most people imagine when they think of what it would be like, and once you are used to the language the "tricky" aspects arent so annoying. First, you typically have tools that allow you to monitor what values are stored in what registers. This is often similar to using a debug mode in an IDE, and "watching" those. Second, a lot of high level programmers are familiar with a troubleshooting workflow where they put some type of pauses in the code and print out values of variables etc, for when debugging is just not plausible, this workflow works basically the same in assembly. furthermore you can utilize some typical programming design patterns by using jump statements to create pseudo-methods. Knowledge of how stacks work is helpful. Ultimately the differences feel like the syntax is more inconvenient and the thinking style of your approach will be a little different, but its really not all that bad. There are definite tradeoffs too, like not having to deal with baggage that often comes with higher level languages, and the common libraries and frameworks you will be using. Instead of writing translations from the libraries and frameworks to your intended logic you write translations from the machine, and its often refreshing to not have to put up with another developers intended usage pattern. which brings me to the next point Coding alone is often more productive than 2, 3, or 10 people. 2 coders are never twice as good as 1 coder. The amount of communication between them to make their stuff play nice together, and to come to an agreement on a plan really saps away from much of the benefits. Thats not to say he Isn't brilliant. He really is. You have to be very skilled, not only as a coder, but as a general designer and driver of the project, in order to create something as deep, intuitive, and enjoyable as RCT, let alone how efficient you have to be to bang it out in just 2 years.
@mwatkins05902 жыл бұрын
also RCT code is probably much deeper than mario and most nes games, Ill give you that. But if the first final fantasy game, or say dragon warrior, were programmed in assembly, I think their code base is probably more deep than RCTs. Some things that you think would take a lot of complex code are actually rather simple, and often times the other way around, too.
@jc_dogen2 жыл бұрын
@@mwatkins0590 honestly, nearly all games up through the snes/genesis generation were written in assembly. so that would include games like final fantasy 6, super metroid, etc. and the snes is far from an easy system to program. the original elite i'd say is another noteworthy game.
@konkerouf2 жыл бұрын
yeah you're right. I think appel and microsft are stupid to pay thousands of engineers to write their OS and other products, they should just have 1 guy instead
@mwatkins05902 жыл бұрын
@@konkerouf whether or not a whole team is better than a focused person really depends on the context. Something massive like that can afford the overhead of paying all those devs and having all the extra development time for meetings and setting standards. a small project would not be able to afford as much developer time.
@bradleyjones15153 жыл бұрын
Very eye-opening video that I really appreciate as an adult because I couldn't have appreciated it as a kid when I played this game. This is a good channel
@RaaZVan993 жыл бұрын
this channel deserves way more recognition
@LightningQ72 жыл бұрын
I knew Roller Coaster Tycoon was developed using some sort of "difficult and direct input programming language". But this is the first video I encounter which actually visualizes how much more complex x86 assembly really is. Thank you :)
@brett84c2 жыл бұрын
I'm glad someone made a video focusing on WHY Roller Coaster Tycoon is a modern marvel. Most people just think it's a well made game (which it is) but don't actually understand the programming wizardry it took to make such a complex game that ran on even the most basic gaming computers and laptops, which played a huge role in the games massive exposure and reach. The game was an absolute phenomenon and is what I consider one of the most important video games of all time, up there with Super Mario Bros or Pong.
@fabiorodrigo36383 жыл бұрын
I don't know how exactly how I found your video, but I wish yo continue to make these. Thank you for your time making it, really.
@Memecs20 Жыл бұрын
Stumbled on a YT short about how RCT was developed in assembly, this explains a lot and even makes me appreciate more the Tycoon games and similar.
@urnamellamcsnail10933 жыл бұрын
In my computer science course we only learnt how to do shit like add 2 numbers together in assembly code and going off how much effort that was coding a full fucking game must be incredibly tedious and stupid
@davidrenton2 жыл бұрын
it's not stupid, tedious yes. In the mid 80's everything was scarce be it storage, CPU power, memory, colours. Often you had a limited palette that might be 16 colours, but say only 4 could be used at 1 time. It led to remarkable optimisations, and very clever engineering. The original open world game, Elite had 32k to play with, think not 1mb, not 100k, but a 3rd of that. Many systems, you could either do sound or display, but not at the same time. as a Computer Science student, you owe you entire area to these genius's. They where far smarter than you. They knew every bit of that machine, not just at a code level, but at an electrical engineering level. They knew the timing's, synchronisations necessary at a machine level. Without those people we wouldn't have the Internet, KZbin, Smart phones, they where pioneers. It's like saying the Apollo 11 mission was stupid because their entire processing power was a fraction of a modern calculator. I did CompSci in the 90's when Assembler, Fortran etc where still a thing and actively used. I guess you all use unity now. You think that was bad, imagine programming using punch cards and working with valves pre transistor, many people i know started out in Computers doing that very thing. Remember people like Turing broke the Enigma doing that at an even more basic level, he was basically had wires instead of punch cards. Or Babbage and Ada Lovelace (Programming) who built theoretically functional computers before they could be physically be built. I mean try designing a Car before the advent of the combustion engine, and it would work if built today.
@Rigel_Chiokis2 жыл бұрын
I had this game on my PC back in the day. It was so much fun and absorbed so much of my time. Compared to games like Civilization, the freedom to build any way you wanted to was really amazing.
@JamesBrisnehan3 жыл бұрын
Wow that's crazy to think this one guy did all of that. I love the first two games in the RCT series.
@jefffinkbonner95512 жыл бұрын
The only 2 true rct games
@shemyshaun2 жыл бұрын
I played this game throughout childhood, and those hours are one of my most treasured memories from those, long gone, times. Great game, thank your sharing this, about it's creator and methods of creation, that renders it more special even.
@sanchezking61882 жыл бұрын
It's not just the bare technical/programming side of things. It's that it was just 1 guy developing the extensive set of mechanics in the game and tuning them in such a way that is widely accepted to be close to perfection. Compared to modern games he did not have to invest much time in a graphics and physics engine, as the graphics were rather basic and the physics rather deterministic. But he did invest time in good mechanics, good playability, bug-fixes, stability, performance and efficiency - something modern games just don't do.
@MicahRion2 жыл бұрын
This game has such a special place in my heart. Thank you for covering it!
@pens65643 жыл бұрын
Bro, this video is amazing! You give the review that this amazing game ever deserve
@CyTic52 жыл бұрын
Fantastic video. I used to play RC 2 and never thought anything of how much effort would have been put into the first edition till I saw this.
@shrimpjak18732 жыл бұрын
RCT2 is mostly the same game as RCT1 with some improvements/additions Not to downplay how impressive it was, as it was still all in assembly, but RCT2 had all the framework.
@nintendowiirulz4 жыл бұрын
Great video! Chris, what an absolute madman 😵😵😵
@strawberryfrogforever3 жыл бұрын
Awesome video, can remember sitting in my parents basement as a kid playing Roller Coaster Tycoon on the Dell, simpler times :')
@krawl042 жыл бұрын
Great job on the video. Im not a CS major so most of the concepts go over my head, but you did a good job explaining how complex programming can be. Then you compared that to what Chris did with RCT, and now my head hurts. I grew up with RTC and it holds a dear place in my heart. So much more now that I understand just how much expertise and passion went into its creation.
@rfoghorn58774 жыл бұрын
Great video! Was really surprised by your subscriber count with the quality of the video
@NinaFelwitch2 жыл бұрын
I can still run the .exe from the original CD on my modern Win10 PC without any issues. That is a testament of how well this thing was programmed. So many old games refuse to run without third party patches. But Rollercoaster Tycoon runs just fine.
@FLYNN_TAGGART2 жыл бұрын
Compatibility is more about the fact that it doesn't really rely on third party libraries or APIs that modern Windows versions lack. Which, given that he chose to rely on just the basic Win32 API, means it's pretty unlikely to break. That being said, OpenRCT2 really is the superior way to play nowadays.
@kwaminaessuahmensah89202 жыл бұрын
Absolute legend of a man this Chris Sawyer guys is! Took an assembly class in college that the most I had to do was convert a function into assembly and I could barely wrap my head around that. This man wrote an entire game in it! Bloody brilliant and impressive!
@smith98083 жыл бұрын
We need a remastered version by the legend genius himself.
@turinturambar86222 жыл бұрын
YES !
@tgustafson852 жыл бұрын
There is a community-run project called OpenRCT which continues to make improvements to the game. I highly recommend it!
@TheOriginalPyroBEAST2 жыл бұрын
Yes but he should use JavaScript instead lmao
@victorsarkisov44802 жыл бұрын
@@TheOriginalPyroBEAST So it could run like dogshit? No thanks. Plus, I don’t think someone of that calibre wants to use some shitty web scripting language
@Crit-Chance2 жыл бұрын
I was absolutely in love with this game as a child. To this day if I hear any of the sounds that were in this game elsewhere, I think of RCT.
@jazzx2512 жыл бұрын
This video is over two years old, and yet I feel I must comment. Because this is one of the greatest games ever made - and a couple of years here or there doesn't matter. Last week, I completed the "Rotten Heights" scenario - where you have to rescue an almost hopelessly run down park (!) ... I won I have a tradition where, when I win a scenario, I choose the next person to enter the park, and follow their "day out" as they enjoy all of my rides and eat my overpriced food ... That's my way of desperately wanting to visit the park I made in real life. I simply can't believe one man programmed this. But that's what happened. An utterly astonishing achievement.
@c4t4r4c2 жыл бұрын
only 750 subsribers? this was a very well made video! you earned a like aand a sub! keep going
@alexbroere26692 жыл бұрын
Oh man Chris Sawyer is a hero. I played RCT so much when I was younger. Building rollercoaster with so many loops just to see people puke 🤮. Dragging angry people to an island to cool off. I even played the games years later on my phone. A legend for sure!
@LanIost3 жыл бұрын
In case you care.. I kind of consider this video the equivalent of RCT in explaining outstanding achievements in coding ... so it's very meta. For real though, I've showed it to maybe 20 people and all of them, regardless of if they coded or not, completely understood it and got Bill N' Tedsed by it. ... Keanu'd by it? One of those surely should be a verb.
@NativeResolution3 жыл бұрын
Wow, thank you! That really means a lot!
@gxlorp2 жыл бұрын
@@NativeResolution the fact that you accepted his complement sir shits on RCT
@SNdynasty2 жыл бұрын
Oooooh the music in the end made me nostalgic. Nice video.
@sheeperskipps3 жыл бұрын
I'd love to see an interview with the creator, does anyone have one of those?
@akpokemon2 жыл бұрын
Look up “proof Chris sawyer is a real person” or something
@namename22152 жыл бұрын
kzbin.info/www/bejne/i4aaZJptZ7OHfsU&ab_channel=Waldoc though sadly he doesn't talk about his dev career and is just marveling coasters (which is still cool)
@StevenCarp4 жыл бұрын
Great video! You did a great job explaining Sawyer's achievement. I just started learning 6502 assembly and this level of game seems impossible, especially for one guy.
@jakereale77092 жыл бұрын
This video was so well needed. Rollercoaster Tycoon is definitely a prize!
@jtbknuggetsauce4 жыл бұрын
Awesome video, surprised how small your channel is! Keep it up!
@MarmaladeSally2 жыл бұрын
This is the first game I ever played on PC. I still remember sitting next to my older cousin and him showing me the basics. Good times.
@Chris-wj6pn2 жыл бұрын
Oh WOW, I never realized that Sawyer mostly wrote the code for the game directly in Assembly. That... that is just mad genius crazy.
@Superweapons2 жыл бұрын
i spend thousands of hours playing this game even on my Phone i play RCT classic i think its my favorite game of all times.
@FernandoMoreira2 жыл бұрын
Brilliant! Such great quality content deserves so many more subscribers. Good job. (Subscribed and looking forward for more )
@Itsadrianyay2 жыл бұрын
this is like a music artist releasing a song. except he manually wrote the audio waveform in 44.1 khz 16bit on graph paper, over the course of months and months with a pencil and then rendered it, instead of just using a DAW. its so insane
@FallenLight05 ай бұрын
RTC 3 was my childhood and I'm glad I'm learning about how the creator is a legend
@matthewhildebrandt68282 жыл бұрын
Such a great video explaining a classic game
@natemyers17913 жыл бұрын
Awesome video! I’m not sure how this has so few views!
@1q3er52 жыл бұрын
damn this guy stopped uploading - i don't know how this got in my feed, but I'm glad i watched it
@LexieeAceLove3 жыл бұрын
Thank you for showcasing this beautiful game once again. I have the classic app now, and its one of the best investments i've ever made. roller coaster tycoon 1+2 in app form on the go? heck yeah! the newer games (3, etc) were nothing short of a disappointment to me because they're over-developed and they literally tried to fix something that wasnt broken (gameplay). RCT1 and 2 for life.
@alaeriia012 жыл бұрын
OpenRCT2 is a fan project that is free to download for PC.
@dr.angerous2 жыл бұрын
Tits or back to the kitchen
@first-thoughtgiver-of-will24562 жыл бұрын
A lot of people make it sound like there isn't any automation or abstraction in assembly but you can build abstractions by calling routines (go-to label i.e. jmp/branch). I think it's easier to write bad code in assembly since you have to organize everything yourself but it's easier to optimize because you're looking at the pipeline directly. It would be interesting to create tooling to efficiently template and write assembly like with sed and awk.
@ronch550 Жыл бұрын
One man programming a complex game in assembly. Legend.
@mroberts27382 жыл бұрын
Legit playing this now. One of my top favs.
@NathanMandjes2 жыл бұрын
RCT 1 and RCT2 (with the disgraceful expansion packs) are downloadable on iPad. I never saw RCT running so smoothly because I always had bad PC’s. i386 kinda stuff. RCT2 still remains the best game I ever played and sometimes still play. Thanks Chris Sawyer, legend! And thank you for making this video. Coding is already sorcery to me, but knowing this makes it even more special!
@istrumguitars Жыл бұрын
Amen bro. This is fascinating. I loved the game as a kid, but this makes me have an all-new appreciation for it.
@dietermitplatten5 ай бұрын
This game is based on Transport Tycoon (1994). So I assume the code foundation was already there when he started development. However what's amazing with RCT is the complex physics he created. I can imagine that alone took most of the time.
@matsv2012 жыл бұрын
I want to make a few clarifications and/or corrections. The ~99% figure is to the lines that are going in runtime, not to the number of lines that was actually written. A lot of the higher element stuff was made in normal C coding. But all the loops was made in assembly. Also the compilers of the day in 1999 was not up to the standard of today. The optimization that we are use to in compilers today just didn´t exist. Injecting assembly code into C code was very common at this time. Typically a whole project was made in C, then when the project under preformed on module after a other was replaced with assembly to increase the speed. This is a very typical 90-tys problem. Already in 2000 the computers was that fast and the compilers was that good that there was really no point in doing so. Going back to the 80-tys, most projects was usually totally in assembly or in Basic and code injection wasn´t really a thing. To say that assembly is harder more a matter of perspective than an fact. Me who use to code in assembly, but hardly ever coded in C, really don´t agree. Nowdays, when pretty much nobody codes in assembly, this seams to be the general statement.
@angeldude101 Жыл бұрын
The first assembly snippet was clearly generated from the C code without optimizations. The giveaway is the fact that 3/4 of the function are just fiddling with the stack for no reason. The stack is written to and then immediately read back from. The snippet could've been done in only 5 lines, which is actually _shorter_ than the C code due to not needing a closing bracket, and only slightly less clear due to the lack of named variables and spelling out mov and add rather than using the symbols = and +.
@tristanpeardon98204 жыл бұрын
And I thought the game was impressive before great video
@AbyssalDefect2 жыл бұрын
Congratz on your first big video
@ugzz2 жыл бұрын
This video was amazing. The script, editing, everything. Plus, I actually learned things.. had no clue about how this was programmed or that it was pretty much one guy! Man.. I see this channel has been dead for 2 years but with this level of content.. dropping a sub just in case, and hoping for more!
@seinfan92 жыл бұрын
I always liked trapping the guests in a patch of track that needed to use the restroom and charging them for it. "The restrooms are too expensive!"
@Swim2TheMoon2 жыл бұрын
I still play this game. When it came out, a friend and I spent hours and hours on it. We also used the code, "Wanna play some Tycoon?" to mean let's smoke some weed.
@GonziHere2 жыл бұрын
Just to clarify: the code you see generated from say cpp isn't what you would write in assembly. You can also name stuff there, have "functions" and so on. It's harder and more involved for sure, but you still get to build your own abstractions...
@BreadMPH2 жыл бұрын
Very fascinating, thank you. I never knew this game that I loved as a child and adolescent had such an amazing story.
@quaker5712 Жыл бұрын
The amazing thing too is that it's a full on simulation with no short cuts taken. Thousands of things are simulated each frame and the coasters have real time stats with graphs plotting the g-forces, speed and height. In the mid nineties!!! Nothing comes close to how well optimised this game is. Maybe Factorio is the closest modern day equivalent. That too is a full on simulation with no short cuts on a massive scale.
@turningredog3 жыл бұрын
Imagine writing a game like GTA being written in assembly and being so optimized you could run it on a watch
@shannonkohl682 жыл бұрын
GTA is far too complex of a game to accomplish this. Left unsaid in this video is that higher level languages give you much better tools manage complex behavior of an application. With a large open world that has a combat simulator, driving simulator, flight simulator, boating / submarine simulators, weather simulator, NPCs who operate in reasonably lifelike manner both walking and driving; you never finish the code in assembly and it would be horribly buggy. To say nothing of the fact you would be tied to that CPU architecture and would have the rewrite the whole thing from scratch if you wanted to port the game.
@shannonkohl682 жыл бұрын
GTA is far too complex of a game to accomplish this. Left unsaid in this video is that higher level languages give you much better tools manage complex behavior of an application. With a large open world that has a combat simulator, driving simulator, flight simulator, boating / submarine simulators, weather simulator, NPCs who operate in reasonably lifelike manner both walking and driving; you never finish the code in assembly and it would be horribly buggy. To say nothing of the fact you would be tied to that CPU architecture and would have the rewrite the whole thing from scratch if you wanted to port the game.
@FireBlade572 жыл бұрын
Holy shit! I did not know that! I quit my Information Technology study because I had to learn Assembler, which was hell! That explains how the game ran so well back in the day. It was miles ahead of other games when it launched.
@rasmuskoppel82112 жыл бұрын
It's so sad that this guy ended his youtube career before algorithm found him
@syproful2 жыл бұрын
The program part is something, someone with the capacity can come into. It’s becoming one with it. And after all, the engine which rtc is built upon was a job over multiple years. The art required actually blew my mind. If you wanna talk pixel art, this is it.
@flawlessediting7012 жыл бұрын
original rct menu music. a man of taste.
@alaeriia012 жыл бұрын
I love how RCT2 is also written in x86 assembly. So was Locomotion.
@NinjaRunningWild2 жыл бұрын
3:21 That ASM looks compiler generated (IE - Output ASM from a C/C++ compiler). Actual hand-written ASM is a lot tighter & more obvious. For instance, the mov of 2 & 4 into the DWORD pointers isn't needed as in the next step it takes those memory locations & mov's them again into the registers edx & eax. Instead, you'd just mov the constants 2 & 4 into edx & eax respectively. Only after that do you need to copy them (mov) into memory locations. - Ex game programmer
@SimonCapewell2 жыл бұрын
I was about to comment exactly this myself. When the initial C example popped up, I thought it wasn't going to be a great example of something that's a lot more complex in ASM. If you use Compiler Explorer to compile this, you get exactly the demonstrated ASM, which would rather defeat the point of hand cranking ASM!
@Daniel-ij3ks2 жыл бұрын
The video author probably disabled optimizations because the optimized code is literally "mov eax, 6; ret", which would be hard to explain, lol.
@NinjaRunningWild2 жыл бұрын
@@Daniel-ij3ks I think it's easier to explain.
@Daniel-ij3ks2 жыл бұрын
@@NinjaRunningWild I meant in the context of the video: C++ vs Assembly.
@NinjaRunningWild2 жыл бұрын
@@Daniel-ij3ks Still think it's easier. There's less going on. The context only _emphasizes_ this. It doesn’t nullify it. Which is easier to explain to a C++ programmer? To assign 2 constants to 2 variables or dereferencing 2 pointers, transferring the contents to 2 variables? Don’t look now, but you’re proving my case.
@DerGesellschaftskritiker2 жыл бұрын
Rollercoaster Tycoon is in my opinion one of the best, maybe the best PC game ever!
@duncanfrot43184 жыл бұрын
You are making it look a lot more complex then it is. Compilers make for horrible assembly to read. CS was very disciplined in how he used assembly and used many macros to make it much easier to use and read. In your example he would have written 'mov eax, 2; mov ebx, 4; add eax, ebx;'. It's still three lines. Also you are missing the fact that the code base evolved from ttd (although the simulation side of it is much more complex) so it's 2 years + a base code engine that already existed. I'm not denying it was a great feat though. CS assembly is something special to read. The calling convention he used is similar to what x64 generally uses and his aversion to using the heap is similar to modern game design.
@NativeResolution4 жыл бұрын
Interesting, thanks for the info! You've read his original assembly? I wasn't aware that his source code was public; is there a public repo to read it at?
@duncanfrot43184 жыл бұрын
@@NativeResolution there are a few samples of his work online from ttd. You also can just read the executable since it's just assembly. Obviously it's harder to understand since you don't know any of the memory addresses but with a little work you can eventually work it out. (I work on OpenRCT2 and OpenLoco so have a pretty good understanding of it)
@mw36533 жыл бұрын
@@NativeResolution You don't need to see his source code to know how to add in assembly, idiot.
@latbat583 жыл бұрын
Was ttd also in assembly?
@duncanfrot43183 жыл бұрын
@@latbat58 yes. There are samples of the ttd codebase online on his website
@nitiratp2 жыл бұрын
A lovely tribute to a talented dev and all-time classic game