Live data from Hacker News

A remaster with no old code: Crash Bandicoot was rebuilt nearly from scratch

arstechnica.com

51–60 of 80 posts

Re: A remaster with no old code: Crash Bandicoot was rebuilt nearly from scratch

#51

Earlier quoted context omitted.

Crash Bandicoot was written mainly in GOOL, a custom to Naughty Dog lisp variant. The game would have had to be rewritten anyway almost certainly.

Not really. The GOOL code was used for character logic and things like the load/save screen. The majority of the code was written in C and MIPS assembly.

Was the GOOL code interpreted or compiled?

Edit: mostly interpreted, according to [0] which I found below.

Edit2: wait, the article later says that the GOOL code was compiled into [MIPS] R3000 machine code...

0. https://all-things-andy-gavin.com/2011/03/12/making-crash-ba...

Re: A remaster with no old code: Crash Bandicoot was rebuilt nearly from scratch

#52

The games industry is so stinking bad at archival that it hurts. Very little consideration is paid to using architectures and build tools that can be replicated later. Source code becomes unavailable (as was the case here). Game logic is written using highly platform-specific code that's difficult to emulate. Source textures and other raw resources get thrown out. And not to diminish from the accomplishment of the te…

First paragraph of the top comment on Ars:

> I worked at Insomniac on Spyro while Naughty Dog was working on the Crash series. We had a friendly competition squeezing out the maximum possible performance from the PlayStation, and that turned into an even friendlier coopetition on our respective PS2 engines when we actually started sharing some code. Based on what I saw of both code bases, Naughty Dog did them a huge favor by sharing so little. It would have been more work to rehab than recreate.

Highly recommend reading the rest of the comment, too!

Re: A remaster with no old code: Crash Bandicoot was rebuilt nearly from scratch

#54

The games industry is so stinking bad at archival that it hurts. Very little consideration is paid to using architectures and build tools that can be replicated later. Source code becomes unavailable (as was the case here). Game logic is written using highly platform-specific code that's difficult to emulate. Source textures and other raw resources get thrown out. And not to diminish from the accomplishment of the te…

First paragraph of the top comment on Ars: > I worked at Insomniac on Spyro while Naughty Dog was working on the Crash series. We had a friendly competition squeezing out the maximum possible performance from the PlayStation, and that turned into an even friendlier coopetition on our respective PS2 engines when we actually started sharing some code. Based on what I saw of both code bases, Naughty Dog did them a huge…

Assuming it wasn't a typo, I really like the term "coopetition"

Re: A remaster with no old code: Crash Bandicoot was rebuilt nearly from scratch

#55
post #44

Earlier quoted context omitted.

Let me hand you some binoculars, it might be hard to see the details from the vantage point of giants' shoulders: * A lot of things "missed" is what further research proved to be "obvious" conclusions of exactly the groundwork laid by these games. * Between 80h/week, personal life and the permanent question whether your game will sell at all, considerations what you should do in case your game becomes a cultural heri…

So I'll say up front, you're right to say I don't have 15 years of experience to back this up. And if your takeaway is, "this idiot doesn't know what they're talking about", fine, I'll take that. That's a completely reasonable reaction. But, you're wrong. The top rated post on Hackernews right now is a bunch of people gushing about how cool it is to see the source code for the Apple II LOGO language[0]. Your code has…

I read all that and still think, "you don't what you're talking about".

This is 100% a problem of dependency management, i.e. a problem common to software everywhere at all times that has never gone away. Whether more work survives is ultimately a factor of whether it's whether it's easy to make it survive, not on the "blame them for lacking effort" angle. Some folks will take the extra time, some won't.

The software that still has its dependencies, we can do something about. For most games that equates to "emulate the release platform, and we get the playable release back" - which is the defacto standard, since it's relatively easy to get copies off a ROM or CD, and it's the single artifact that is most representative of creative intent. It absolutely makes sense that almost all the effort would go towards that. We like seeing Leonardo Da Vinci's plans and studies, but he was focused on results, and we mostly know him for those results.

The source is more specialized, and not as easy to subject to the emulator model. A lot of shops "back in the day" did not even have good backup or version control practices and the game's build system involved a whole custom software project of its own, and only one person knew how to make it go. Getting it even to the point where all the code and assets were accounted for would incur a person-weeks expense, and studios then as now would finish a release with layoffs to shave off salary expense, which in turn gave an incentive to jump ship before finishing to dodge the layoff, leaving certain knowledge about the project in limbo. And employees are often not trusted enough by the management to let them bring in an external drive and dump the project: the optimism of "preserve the art for the future" goes right up against the pessimism of "i'm building a business, not art", and the psychopathy of "if they can't dump the project, they can't steal it". (yes, it happens - on both ends) There are numerous barriers in those crucial weeks around the ship date that can cut off this aspect of archival right at the start, and many a preserved game is the result of some hero who went against the direct wishes of their bosses and made copies in secret.

Nowadays, project tooling tends to fall a little more along standardized lines, and if you start with the goal of minimizing dependencies, you can feasibly have a smooth path to restoring the build without incurring the same overheads that make managers give up on archival to save a dime. So while commercial conflicts of interest remain, it's gotten easier, relatively, if your project scope is not so large that you need to bring in the custom tooling again(which, of course, is what happens in AAA). It's not "sneeze and you've preserved history" easy, but we can work on that.

And what if we're talking about an online game? That's the preservation nightmare taking place today. All the MMOs, mobile games, and so on - those are living things. You can't reconstruct a userbase. So even having running code and assets, it gives you a part of the experience, but it will be empty, fossilized. You will have to fall back on video footage to see it in contemporary context. That said there is the occasional revival effort, such as with Habitat[1].

tldr; if you want better archival, support game labor, support projects that improve basic software infrastructure.

[1] https://en.wikipedia.org/wiki/Habitat_(video_game)#Revival

Re: A remaster with no old code: Crash Bandicoot was rebuilt nearly from scratch

#56

Earlier quoted context omitted.

Crash Bandicoot was written mainly in GOOL, a custom to Naughty Dog lisp variant. The game would have had to be rewritten anyway almost certainly.

I'm not convinced it'd be impossible to use the GOOL code though. It should in theory have been plausible to port a GOOL interpreter, and then simply use the original code in the new interpreter. That said, there are some possible complications with the approach, depending on how tightly integrated the old GOOL system was with the rest of Naughty Dog's very custom engine. Of course they'd need to actually have the GO…

IIRC the GOOL code was compiled by a compiler written in Common Lisp. If that compiler code survived, it's probable that it would still work today with minimum / perhaps zero modifications. (No idea what non-standard CL features it might have used.) Of course the output wouldn't be useful for anything but a PS1, but you could change that, and never have to touch the GOOL itself as you say.

Re: A remaster with no old code: Crash Bandicoot was rebuilt nearly from scratch

#58
post #44

Earlier quoted context omitted.

Let me hand you some binoculars, it might be hard to see the details from the vantage point of giants' shoulders: * A lot of things "missed" is what further research proved to be "obvious" conclusions of exactly the groundwork laid by these games. * Between 80h/week, personal life and the permanent question whether your game will sell at all, considerations what you should do in case your game becomes a cultural heri…

So I'll say up front, you're right to say I don't have 15 years of experience to back this up. And if your takeaway is, "this idiot doesn't know what they're talking about", fine, I'll take that. That's a completely reasonable reaction. But, you're wrong. The top rated post on Hackernews right now is a bunch of people gushing about how cool it is to see the source code for the Apple II LOGO language[0]. Your code has…

> So I'll say up front, you're right to say I don't have 15 years of experience to back this up. And if your takeaway is, "this idiot doesn't know what they're talking about", fine, I'll take that. That's a completely reasonable reaction.

My takeaway is that you did not even read what I wrote:

a) I said I quit the circus 15 years ago. I did not claim 15 years of game dev experience.

> If your takeaway is, "I don't care about old games unless they make my new PS4 game run faster" you have missed the point. If your takeaway is, "archival only matters if my game is successful, and I don't know if it'll be successful yet", you have missed the point.

b) Neither of those are points I tried to make or that someone reasonably could read into my statements. So I am not going to address those directly nor into your ideas of why I might worked as a game developer.

You are missing the point: Just because you would like to have an introduction into resource-conscious development based on the games you enjoyed as a kid, this is neither the easiest nor an in any way appropriate way to study the topic. Go, read and understand some programs written in the late 60s and early 70s and you'll be 80% there - for 10% of the reading time. The other 20% are obsolete anyway.

c) I completely, 100% understand that game dev is stressful. Zoom out a bit from that

I did that, 15 years ago in a radical way - it is called "leaving the industry".

> Bear in mind, what I'm asking for doesn't have to take much work. You don't have to go crazy building out your source-code in a special way if you don't have time. Change nothing at all about your dev process -- just take 3 minutes when your game ships, stick your raw source code, assets, and a DRM free binary on a flash drive, and then mail it to Jason Scott.

d) That's called IP theft.

Re: A remaster with no old code: Crash Bandicoot was rebuilt nearly from scratch

#59

Earlier quoted context omitted.

It just sounds like you underestimate the difficulty of building games and, especially, overestimate the certainly that they will be successful. It’s easy to preach how software should be written in the hindsight of a successful project that you had zero stake in. I doubt the developers of games that flop (so, most of them) wish they’d spent more time and money ensuring their unwanted flop of a game was easier to arc…

Architecture is the last step in this process. The low hanging fruit is "do you still have your source code and original assets? Is any of it documented?" Nobody will ever know if the original code for Crash Bandicoot was written well or not, because in all likelyhood nobody has it anymore. And I don't think you can chock that up to, "well, developing games is hard." We can debate whether or not it's possible to rele…

> The sort of second problem I have with this is the idea that flops aren't worth archiving.

So many game companies go out of business after a flopped game (hell, even seemingly successful companies like Telltale Games are going out of business) that I doubt anyone has the energy to care about archival in this instance.

> Of course caring about archival makes developing games harder, just like caring about accessibility does, and just like caring about framerate does, and just like caring about localization does.

The difference is that these other things help them meet business goals while archival only becomes important years down the line, when the company may not even exist anymore. The games industry is already notorious for incredibly long hours and crunch time, how can you expect these people to give up even more time?

Re: A remaster with no old code: Crash Bandicoot was rebuilt nearly from scratch

#60
post #58

Earlier quoted context omitted.

So I'll say up front, you're right to say I don't have 15 years of experience to back this up. And if your takeaway is, "this idiot doesn't know what they're talking about", fine, I'll take that. That's a completely reasonable reaction. But, you're wrong. The top rated post on Hackernews right now is a bunch of people gushing about how cool it is to see the source code for the Apple II LOGO language[0]. Your code has…

> So I'll say up front, you're right to say I don't have 15 years of experience to back this up. And if your takeaway is, "this idiot doesn't know what they're talking about", fine, I'll take that. That's a completely reasonable reaction. My takeaway is that you did not even read what I wrote: a) I said I quit the circus 15 years ago. I did not claim 15 years of game dev experience. > If your takeaway is, "I don't ca…

> My takeaway is that you did not even read what I wrote:

> a) I said I quit the circus 15 years ago. I did not claim 15 years of game dev experience.

Just a note on this misunderstanding: you wrote "I have been part of this circus 15 years ago", which was ambiguous because 'have been' is normally used for an action or state of affairs that is ongoing (or has just finished). So the reader either skipped over the 'ago' and read the sentence as 'I have been part of this circus [for] 15 years', or noticed that you'd made an error and had to guess whether it was 'ago' or 'have been'.

Post reply on HN