Remix.run Logo
chollida1 11 hours ago

Oh man, this has been posted probably 100 times now but this is still a great blog.

I guess today another 10,000 people will learn about how crash bandicoot was made.

https://xkcd.com/1053/

I was in video game development at the time and it was really exciting due to the switch from 2D to 3D for most games which made the math a programmer was required to know go way up in complexity.

And you hade new things called graphics cards that had their own apis to program to and drivers that didn't always do what they were supposed to do so you were always feeling around in the dark a bit when working with a new console or new graphics card. I remember so many bugs that weren't necessarily our fault, but the fault of buggy drivers or a misimplemened OpenGL call by the driver or console provider.

I couldn't imagine layering on top of that a lisp dialog to program your game in given that we were doing incredible things to shave off milliseconds. It seems counter intuitive to put a high level interpreted language ontop of that but these geniuses pulled it off!!

_kb 11 hours ago | parent | next [-]

There was a great conversation with Matt Godbolt on CoRecursive recently [1]. It was a bit of a dive into how some of those abstractions are a lie and, particularly in early game dev, how you can create magic by realising that then exploit how the hardware actually works. Highly recommend a listen.

[1]: https://corecursive.com/godbolt-rule-matt-godbolt/

kazinator 6 hours ago | parent | prev | next [-]

Crash Bandicoot used a Lisp meta-language called GOOL which translated to assembly for the game target. The translator was in Common Lisp, runnng on development/build machines not on the target (and and itself would have almost certainly been compiled, not interpreted).

chollida1 21 minutes ago | parent | next [-]

> Crash Bandicoot used a Lisp meta-language called GOOL which translated to assembly for the game target.

This is incorrect but I see someone else already corrected you. It wasn't until later on that they created assembly compilation.

monocasa 4 hours ago | parent | prev [-]

Well, the first crash interpreterd GOOL, and the subsequent ones only compiled some common expressions.

A full compiler for the target came with GOAL in Jak & Daxter.

socalgal2 6 hours ago | parent | prev [-]

The dialect of lisp used in those games is not interpreted

monocasa 4 hours ago | parent [-]

The version in crash 1 is fully interpreted, and subsequent crash games only compiled a few very hot path expressions.

The full compiler came later with GOAL.